diff options
author | Leah Neukirchen <leah@vuxu.org> | 2022-01-06 17:12:18 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2022-01-06 17:12:18 +0100 |
commit | 8ec47e56be97a6f6ba3d43a4b34c06dcdd466aad (patch) | |
tree | 83d9e282c55eca30f5b57cd3cccfc6f5ba2847e3 | |
parent | 6106009cad530b62b6c526f4dcce5e9dc47a0853 (diff) | |
download | rvnit-8ec47e56be97a6f6ba3d43a4b34c06dcdd466aad.tar.gz rvnit-8ec47e56be97a6f6ba3d43a4b34c06dcdd466aad.tar.xz rvnit-8ec47e56be97a6f6ba3d43a4b34c06dcdd466aad.zip |
simplify logging
-rw-r--r-- | rvnit.c | 59 |
1 files changed, 16 insertions, 43 deletions
diff --git a/rvnit.c b/rvnit.c index a93d2d0..4c582d9 100644 --- a/rvnit.c +++ b/rvnit.c @@ -21,6 +21,9 @@ #define MAX_SV 512 +// ## not truly portable :/ +#define LOG(fmt, ...) dprintf(selflogfd[1], fmt "\n", ## __VA_ARGS__); + struct entry { char level; char name[62]; @@ -310,7 +313,7 @@ reap(pid_t pid, int status) services[i].pid = 0; services[i].status = status; - dprintf(2, "reaped %s[%d] with status %d during level=%d\n", + LOG("reaped %s[%d] with status %d during level=%d", services[i].name, pid, status, level); return i; @@ -352,7 +355,7 @@ main() services[i].level = 10 * (ent->d_name[0] - '0') + (ent->d_name[1] - '0'); - (void)snprintf(services[i].name, sizeof services[i].name, + snprintf(services[i].name, sizeof services[i].name, "%s", ent->d_name); // follow symlinks services[i].state = access(ent->d_name, X_OK) == 0 ? UP : DOWN; @@ -364,7 +367,7 @@ main() closedir(dir); - dprintf(selflogfd[1], "booting\n"); + LOG("booting"); for (level = 0; level < 100; level++) { /* spawn all of level */ @@ -425,7 +428,7 @@ main() sigaction(SIGPWR, &(struct sigaction){.sa_handler=on_sigint}, 0); sigaction(SIGUSR1, &(struct sigaction){.sa_handler=on_sigusr1}, 0); - dprintf(selflogfd[1], "system up\n"); + LOG("system up"); while (1) { if (got_intr) @@ -465,15 +468,15 @@ main() if (services[i].name[2] == 'D' || services[i].name[2] == 'L') { - dprintf(selflogfd[1], "%s terminated with status %d\n", services[i].name, services[i].status); + LOG("%s terminated with status %d", services[i].name, services[i].status); if (services[i].state == UP) { - dprintf(selflogfd[1], "restarting %s\n", services[i].name); + LOG("restarting %s", services[i].name); restart(i); } } } - dprintf(selflogfd[1], "shutting down\n"); + LOG("shutting down"); // sigaction(SIGINT, &(struct sigaction){.sa_handler=SIG_DFL}, 0); @@ -483,32 +486,6 @@ main() sigemptyset(&childset); sigaddset(&childset, SIGCHLD); - - for (level = 99; level >= 0; level--) { - /* kill all of level */ - int oneshot = 0; - int daemons = 0; - - for (i = 0; i < MAX_SV; i++) { - if (services[i].level != level) - continue; - - if (services[i].name[2] == 'K' && - services[i].state == UP) { - dprintf(2, "todo: shutdown oneshot %s\n", services[i].name); - oneshot++; - } - if (services[i].name[2] == 'D' && - services[i].pid > 0) { - dprintf(2, "todo: sending sigterm to %s\n", services[i].name); - daemons++; - } - } - - dprintf(2, "level=%d oneshot=%d daemons=%d\n", - level, oneshot, daemons); - } - for (level = 99; level >= 0; level--) { /* kill all of level */ int oneshot = 0; @@ -520,23 +497,19 @@ main() if (services[i].name[2] == 'K' && services[i].state == UP) { - dprintf(selflogfd[1], "starting shutdown oneshot %s\n", services[i].name); + LOG("starting shutdown oneshot %s", services[i].name); restart(i); oneshot++; } if (services[i].name[2] == 'D' && services[i].pid > 0) { - dprintf(selflogfd[1], "sending sigterm to %s\n", services[i].name); + LOG("sending sigterm to %s", services[i].name); kill(services[i].pid, SIGTERM); kill(services[i].pid, SIGCONT); daemons++; } } - dprintf(2, "level=%d oneshot=%d daemons=%d\n", - level, oneshot, daemons); - usleep(100000); - // XXX figure out logger shutdown while (oneshot) { @@ -554,10 +527,10 @@ main() continue; if (services[i].name[2] == 'K') { - dprintf(selflogfd[1], "oneshot %s exited with status %d\n", services[i].name, services[i].status); + LOG("oneshot %s exited with status %d", services[i].name, services[i].status); oneshot--; } else if (services[i].name[2] == 'D') { - dprintf(selflogfd[1], "daemon %s exited with status %d\n", services[i].name, services[i].status); + LOG("daemon %s exited with status %d", services[i].name, services[i].status); // if (services[i].logged) // close(services[i].logfd[1]); daemons--; @@ -605,10 +578,10 @@ main() if (services[i].name[2] == 'K') { // can't happen - dprintf(selflogfd[1], "oneshot %s exited with status %d\n", services[i].name, services[i].status); + LOG("oneshot %s exited with status %d", services[i].name, services[i].status); oneshot--; } else if (services[i].name[2] == 'D') { - dprintf(selflogfd[1], "daemon %s exited with status %d\n", services[i].name, services[i].status); + LOG("daemon %s exited with status %d", services[i].name, services[i].status); // if (services[i].logged) // close(services[i].logfd[1]); daemons--; |