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
This commit is contained in:
Ihor Antonov 2023-03-01 21:00:41 -06:00 committed by Kyle Evans
parent 6b4ef4b16a
commit e745dc2287

View File

@ -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 @@ main(int argc, char *argv[])
* 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