diff --git a/src/conf.c b/src/conf.c index eda7d3e2..d3e131ec 100644 --- a/src/conf.c +++ b/src/conf.c @@ -205,8 +205,6 @@ void conf_parse_cmdline(int argc, char *argv[]) parse_kernel_cmdline(); parse_kernel_loglevel(); - - log_init(); } static int kmod_exists(char *mod) diff --git a/src/finit.c b/src/finit.c index 44c8d63e..c2cf24f6 100644 --- a/src/finit.c +++ b/src/finit.c @@ -570,7 +570,7 @@ int main(int argc, char *argv[]) }; uev_ctx_t loop; - /* telinit or stand-alone process monitor */ + /* user calling telinit or init */ if (getpid() != 1) return telinit(argc, argv); @@ -581,12 +581,12 @@ int main(int argc, char *argv[]) /* * Parse /proc/cmdline (debug, rescue, console=, etc.) - * Also calls log_init() to set correct log level */ conf_parse_cmdline(argc, argv); /* - * Figure out system console(s) + * Figure out system console(s) and call log_init() to set + * correct log level, possibly finit.debug enabled. */ console_init(); diff --git a/src/helpers.c b/src/helpers.c index 1fd80ca7..434d5658 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -81,7 +81,7 @@ char *console(void) void console_init(void) { - ttinit(); + log_init(); } ssize_t cprintf(const char *fmt, ...) diff --git a/src/log.c b/src/log.c index 4cb60f42..22e04041 100644 --- a/src/log.c +++ b/src/log.c @@ -40,6 +40,8 @@ static int loglevel = LOG_INFO; void log_init(void) { + ttinit(); + if (debug) loglevel = LOG_DEBUG; else @@ -72,24 +74,25 @@ static int log_open(void) if (debug) opts |= LOG_PERROR; - closelog(); openlog("finit", opts, LOG_DAEMON); setlogmask(LOG_UPTO(loglevel)); return up = 1; } +static void log_close(void) +{ + closelog(); + up = 0; +} + /* Toggle debug mode */ void log_debug(void) { debug = !debug; - if (debug) { - loglevel = LOG_DEBUG; - } else { - loglevel = LOG_NOTICE; - ttinit(); - } + log_close(); + log_init(); log_open(); logit(LOG_NOTICE, "Debug mode %s", debug ? "enabled" : "disabled");