From 1036c365b8ec1569824f2b199435baaf876a2776 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Sun, 2 Jul 2017 12:31:38 +0200 Subject: [PATCH] log.c: New log_exit() function, called at shutdown Signed-off-by: Joachim Nilsson --- src/log.c | 13 +++++++++++++ src/log.h | 2 ++ src/service.c | 15 --------------- src/sm.c | 6 ++++++ 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/log.c b/src/log.c index 9365e67a..93b16978 100644 --- a/src/log.c +++ b/src/log.c @@ -22,6 +22,7 @@ */ #include "config.h" +#include /* sched_yield() */ #include #include #include @@ -31,6 +32,18 @@ static int loglevel = LOG_NOTICE; +/* If we enabled terse mode at boot, restore to previous setting at shutdown */ +void log_exit(void) +{ + if (quiet) { + silent = SILENT_MODE; + if (!silent) { + sched_yield(); + fputs("\n", stderr); + } + } +} + void log_debug(void) { debug = !debug; diff --git a/src/log.h b/src/log.h index 8821bb09..87117e40 100644 --- a/src/log.h +++ b/src/log.h @@ -40,6 +40,8 @@ #define _e(fmt, args...) logit(LOG_ERR, "%s():" fmt "\n", __func__, ##args) #define _pe(fmt, args...) logit(LOG_ERR, "%s():" fmt ": %m\n", __func__, ##args) +void log_exit (void); + void log_debug (void); void logit (int prio, const char *fmt, ...); diff --git a/src/service.c b/src/service.c index 04f20064..e5897f02 100644 --- a/src/service.c +++ b/src/service.c @@ -25,7 +25,6 @@ #include "config.h" /* Generated by configure script */ #include /* isblank() */ -#include #include #include #include @@ -468,20 +467,6 @@ void service_reload_dynamic(void) */ void service_runlevel(int newlevel) { - if (newlevel == 0 || newlevel == 6) { - /* If we enabled terse mode at boot, restore to previous setting at shutdown */ - if (quiet) { - silent = SILENT_MODE; - if (!silent) { - sched_yield(); - fputs("\n", stderr); - } - } - - /* Call all shutdown hooks before rebooting... */ - plugin_run_hooks(HOOK_SHUTDOWN); - } - sm_set_runlevel(&sm, newlevel); sm_step(&sm); } diff --git a/src/sm.c b/src/sm.c index 47214d8b..16cf5b22 100644 --- a/src/sm.c +++ b/src/sm.c @@ -125,6 +125,12 @@ restart: runlevel = sm->newlevel; sm->newlevel = -1; + /* Restore terse mode and run hooks before shutdown */ + if (runlevel == 0 || runlevel == 6) { + log_exit(); + plugin_run_hooks(HOOK_SHUTDOWN); + } + _d("Setting new runlevel --> %d <-- previous %d", runlevel, prevlevel); runlevel_set(prevlevel, runlevel);