X-Git-Url: https://git.distorted.org.uk/~mdw/fwd/blobdiff_plain/c1e028bec788f2ff2525ea7c674a766d4fa6c273..858a73afbf5018d74920761f7015ac2e7d3987b6:/fwd.c diff --git a/fwd.c b/fwd.c index c095ba2..0455bc4 100644 --- a/fwd.c +++ b/fwd.c @@ -29,6 +29,7 @@ /*----- Global variables --------------------------------------------------*/ sel_state *sel; /* Multiplexor for nonblocking I/O */ +unsigned flags = 0; /* Global state flags */ /*----- Static variables --------------------------------------------------*/ @@ -37,14 +38,9 @@ typedef struct conffile { char *name; } conffile; -static unsigned flags = 0; /* Global state flags */ static unsigned active = 0; /* Number of active things */ static conffile *conffiles = 0; /* List of configuration files */ -#define FW_SYSLOG 1u -#define FW_QUIET 2u -#define FW_SET 4u - /*----- Configuration parsing ---------------------------------------------*/ /* --- @parse@ --- * @@ -241,11 +237,11 @@ void fw_log(time_t t, const char *fmt, ...) if (flags & FW_QUIET) return; - if (t == -1) + if (t == NOW) t = time(0); tm = localtime(&t); DENSURE(&d, 64); - d.len += strftime(d.buf, d.sz, "%Y-%m-%d %H:%M:%S ", tm); + d.len += strftime(d.buf, d.sz, "%Y-%m-%d %H:%M:%S %z ", tm); va_start(ap, fmt); dstr_vputf(&d, fmt, &ap); va_end(ap); @@ -305,7 +301,7 @@ static void fw_tidy(int n, void *p) default: abort(); } - fw_log(-1, "closing down gracefully on %s", sn); + fw_log(NOW, "closing down gracefully on %s", sn); source_killall(); } @@ -327,7 +323,7 @@ static void fw_die(int n, void *p) default: abort(); } - fw_log(-1, "closing down abruptly on %s", sn); + fw_log(NOW, "closing down abruptly on %s", sn); source_killall(); endpt_killall(); } @@ -350,20 +346,20 @@ static void fw_reload(int n, void *p) assert(n == SIGHUP); if (!conffiles) { - fw_log(-1, "no configuration files to reload: ignoring SIGHUP"); + fw_log(NOW, "no configuration files to reload: ignoring SIGHUP"); return; } - fw_log(-1, "reloading configuration files..."); + fw_log(NOW, "reloading configuration files..."); source_killall(); scan_create(&sc); for (cf = conffiles; cf; cf = cf->next) { if ((fp = fopen(cf->name, "r")) == 0) - fw_log(-1, "error loading `%s': %s", cf->name, strerror(errno)); + fw_log(NOW, "error loading `%s': %s", cf->name, strerror(errno)); else scan_add(&sc, scan_file(fp, cf->name, 0)); } parse(&sc); - fw_log(-1, "... reload completed OK"); + fw_log(NOW, "... reload completed OK"); } /*----- Startup and options parsing ---------------------------------------*/ @@ -487,7 +483,7 @@ int main(int argc, char *argv[]) /* --- Standard GNU help options --- */ - { "help", 0, 0, 'h' }, + { "help", 0, 0, 'h' }, { "version", 0, 0, 'v' }, { "usage", 0, 0, 'u' }, @@ -650,7 +646,8 @@ int main(int argc, char *argv[]) _exit(0); close(0); close(1); close(2); - chdir("/"); + if (chdir("/")) + die(1, "couldn't change to root directory: %s", strerror(errno)); setsid(); kid = fork(); @@ -701,10 +698,10 @@ int main(int argc, char *argv[]) if (!sel_select(sel)) selerr = 0; else if (errno != EINTR && errno != EAGAIN) { - fw_log(-1, "error from select: %s", strerror(errno)); + fw_log(NOW, "error from select: %s", strerror(errno)); selerr++; if (selerr > 8) { - fw_log(-1, "too many consecutive select errors: bailing out"); + fw_log(NOW, "too many consecutive select errors: bailing out"); exit(EXIT_FAILURE); } }