X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fmain.c;h=fce997a77a471f4201d3706e107f0e51ac1fee58;hb=c989e4519ccdb068d0897e6255b9f3306e385bac;hp=cef4f605a4d2e88877d7e488dbb83302e378f962;hpb=ed9b54bd89b704e6111acbd91b6a7b50e3c30cf5;p=umurmur.git diff --git a/src/main.c b/src/main.c index cef4f60..fce997a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ -/* Copyright (C) 2009-2010, Martin Johansson - Copyright (C) 2005-2010, Thorvald Natvig +/* Copyright (C) 2009-2011, Martin Johansson + Copyright (C) 2005-2011, Thorvald Natvig All rights reserved. @@ -29,7 +29,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - #include #include #include @@ -163,8 +162,8 @@ void signal_handler(int sig) { switch(sig) { case SIGHUP: - /* XXX - do stuff? */ - Log_info("HUP signal"); + Log_info("HUP signal received."); + Log_reset(); break; case SIGTERM: Log_info("TERM signal. Shutting down."); @@ -277,28 +276,29 @@ int main(int argc, char **argv) break; } } - - /* Logging to terminal if not daemonizing, otherwise to syslog. - * Need to initialize logging before calling Conf_init() - */ - if (!nodaemon) - Log_init(false); - else - Log_init(true); /* Initialize the config subsystem early; - * switch_user() will need to read some config variables. + * switch_user() will need to read some config variables as well as logging. */ Conf_init(conffile); - + + /* Logging to terminal if not daemonizing, otherwise to syslog or log file. + */ if (!nodaemon) { daemonize(); + Log_init(false); if (pidfile != NULL) lockfile(pidfile); switch_user(); - } + /* Reopen log file. If user switch results in access denied, we catch + * it early. + */ + Log_reset(); + } + else Log_init(true); + signal(SIGCHLD, SIG_IGN); /* ignore child */ signal(SIGTSTP, SIG_IGN); /* ignore tty signals */ signal(SIGTTOU, SIG_IGN);