git: 931d05fc088b - main - syslogd: Read configuration outside of init loop
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 28 Sep 2023 15:52:21 UTC
The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=931d05fc088bb83a9d0b1aacbf09590b22422351 commit 931d05fc088bb83a9d0b1aacbf09590b22422351 Author: Jake Freeland <jfree@FreeBSD.org> AuthorDate: 2023-09-01 02:48:53 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2023-09-28 15:51:52 +0000 syslogd: Read configuration outside of init loop Move all configuration-file code outside of the initialization loop and into its own set of functions. Create a readconfigfile() to open the config and call parseconfigfile() to parse it. The init() function no longer returns if there was a failure to open the configuration file. Initialization will be finished, using the backup logging rules: *.ERR to /dev/console and *.PANIC to all logged in users. Reviewed by: markj, emaste MFC after: 3 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D41358 --- usr.sbin/syslogd/syslogd.c | 49 +++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 701b062802b0..bf00f4ae4cef 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -2403,7 +2403,7 @@ configfiles(const struct dirent *dp) } static void -readconfigfile(FILE *cf, int allow_includes) +parseconfigfile(FILE *cf, bool allow_includes) { FILE *cf2; struct filed *f; @@ -2464,7 +2464,7 @@ readconfigfile(FILE *cf, int allow_includes) if (cf2 == NULL) continue; dprintf("reading %s\n", file); - readconfigfile(cf2, 0); + parseconfigfile(cf2, false); fclose(cf2); } free(ent); @@ -2540,6 +2540,28 @@ readconfigfile(FILE *cf, int allow_includes) } } +static void +readconfigfile(const char *path) +{ + FILE *cf; + struct filed *f; + + if ((cf = fopen(path, "r")) != NULL) { + parseconfigfile(cf, true); + (void)fclose(cf); + } else { + dprintf("cannot open %s\n", ConfFile); + f = cfline("*.ERR\t/dev/console", "*", "*", "*"); + if (f != NULL) + addfile(f); + free(f); + f = cfline("*.PANIC\t*", "*", "*", "*"); + if (f != NULL) + addfile(f); + free(f); + } +} + static void sighandler(int signo) { @@ -2555,7 +2577,6 @@ static void init(int signo) { int i; - FILE *cf; struct filed *f; char *p; char oldLocalHostName[MAXHOSTNAMELEN]; @@ -2646,27 +2667,7 @@ init(int signo) free(f); } - /* open the configuration file */ - if ((cf = fopen(ConfFile, "r")) == NULL) { - dprintf("cannot open %s\n", ConfFile); - f = cfline("*.ERR\t/dev/console", "*", "*", "*"); - if (f != NULL) - addfile(f); - free(f); - f = cfline("*.PANIC\t*", "*", "*", "*"); - if (f != NULL) - addfile(f); - free(f); - Initialized = 1; - - return; - } - - readconfigfile(cf, 1); - - /* close the configuration file */ - (void)fclose(cf); - + readconfigfile(ConfFile); Initialized = 1; if (Debug) {