aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIhor Antonov <ihor@antonovs.family>2023-03-02 03:00:41 +0000
committerKyle Evans <kevans@FreeBSD.org>2023-03-17 21:01:01 +0000
commitd24c97ebfb86040436acdc63b9b0e8bc6ef10078 (patch)
treeeba34554cf0226cd3caf4079b5ac3221c148b6a6
parent488cf4bb6fa1e43dfe923067fdde660a625948c6 (diff)
daemon: consolidate variable declarations and initializaions
- improve readability by breaking apart single-line multi-variable declarations - initialize simple variables at declaration site - move other top-level variable initializations closer declarations to avoid potential UB and unclutter the use-site. Reviewed by: kevans Pull Request: https://github.com/freebsd/freebsd-src/pull/669 (cherry picked from commit e745dc2287ac4844c1a21aaa31d0bc3dad6b1b06)
-rw-r--r--usr.sbin/daemon/daemon.c61
1 files changed, 34 insertions, 27 deletions
diff --git a/usr.sbin/daemon/daemon.c b/usr.sbin/daemon/daemon.c
index f9c1f73e193c..c8ccd8f892fa 100644
--- a/usr.sbin/daemon/daemon.c
+++ b/usr.sbin/daemon/daemon.c
@@ -79,8 +79,10 @@ static void open_pid_files(const char *, const char *, struct pidfh **,
static void do_output(const unsigned char *, size_t, struct log_params *);
static void daemon_sleep(time_t, long);
-static volatile sig_atomic_t terminate = 0, child_gone = 0, pid = 0,
- do_log_reopen = 0;
+static volatile sig_atomic_t terminate = 0;
+static volatile sig_atomic_t child_gone = 0;
+static volatile sig_atomic_t pid = 0;
+static volatile sig_atomic_t do_log_reopen = 0;
static const char shortopts[] = "+cfHSp:P:ru:o:s:l:t:m:R:T:h";
@@ -139,27 +141,37 @@ usage(int exitcode)
int
main(int argc, char *argv[])
{
- const char *pidfile, *ppidfile, *title, *user, *outfn, *logtag;
- int ch, nochdir, noclose, restart, dosyslog, child_eof;
- sigset_t mask_susp, mask_orig, mask_read, mask_term;
- struct log_params logpar;
- int pfd[2] = { -1, -1 }, outfd = -1;
- int stdmask, logpri, logfac, log_reopen;
- struct pidfh *ppfh, *pfh;
- char *p;
+ char *p = NULL;
+ const char *pidfile = NULL;
+ const char *logtag = "daemon";
+ const char *outfn = NULL;
+ const char *ppidfile = NULL;
+ const char *title = NULL;
+ const char *user = NULL;
+ int ch = 0;
+ int child_eof = 0;
+ int dosyslog = 0;
+ int log_reopen = 0;
+ int logfac = LOG_DAEMON;
+ int logpri = LOG_NOTICE;
+ int nochdir = 1;
+ int noclose = 1;
+ int outfd = -1;
+ int pfd[2] = { -1, -1 };
+ int restart = 0;
+ int stdmask = STDOUT_FILENO | STDERR_FILENO;
+ struct log_params logpar = { 0 };
+ struct pidfh *ppfh = NULL;
+ struct pidfh *pfh = NULL;
+ sigset_t mask_orig;
+ sigset_t mask_read;
+ sigset_t mask_term;
+ sigset_t mask_susp;
+
+ sigemptyset(&mask_susp);
+ sigemptyset(&mask_read);
+ sigemptyset(&mask_term);
- memset(&logpar, 0, sizeof(logpar));
- stdmask = STDOUT_FILENO | STDERR_FILENO;
- ppidfile = pidfile = user = NULL;
- nochdir = noclose = 1;
- logpri = LOG_NOTICE;
- logfac = LOG_DAEMON;
- logtag = "daemon";
- restart = 0;
- dosyslog = 0;
- log_reopen = 0;
- outfn = NULL;
- title = NULL;
while ((ch = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) {
switch (ch) {
case 'c':
@@ -251,7 +263,6 @@ main(int argc, char *argv[])
openlog(logtag, LOG_PID | LOG_NDELAY, logfac);
}
- ppfh = pfh = NULL;
/*
* Try to open the pidfile before calling daemon(3),
* to be able to report the error intelligently
@@ -294,18 +305,15 @@ main(int argc, char *argv[])
sigemptyset(&act_hup.sa_mask);
/* Block these when avoiding racing before sigsuspend(). */
- sigemptyset(&mask_susp);
sigaddset(&mask_susp, SIGTERM);
sigaddset(&mask_susp, SIGCHLD);
/* Block SIGTERM when we lack a valid child PID. */
- sigemptyset(&mask_term);
sigaddset(&mask_term, SIGTERM);
/*
* When reading, we wish to avoid SIGCHLD. SIGTERM
* has to be caught, otherwise we'll be stuck until
* the read() returns - if it returns.
*/
- sigemptyset(&mask_read);
sigaddset(&mask_read, SIGCHLD);
/* Block SIGTERM to avoid racing until we have forked. */
if (sigprocmask(SIG_BLOCK, &mask_term, &mask_orig)) {
@@ -406,7 +414,6 @@ restart:
* might have closed its stdout and stderr, so we must wait for
* the SIGCHLD to ensure that the process is actually gone.
*/
- child_eof = 0;
for (;;) {
/*
* We block SIGCHLD when listening, but SIGTERM we accept