From c0a69ef21a0d866ce9934579579b4e7f4b73b14b Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Mon, 25 Mar 2013 12:44:07 +0100 Subject: main: Wait to daemonize to just before entering the main loop To be able to get correct exit codes in case of error, we have to delay the daemonization to just before entering the main loop. Otherwise the init scripts might assume everything started fine and go ahead when that was not the case. The initialization error messages are printed to syslog instead of stderr, which would need a rework in the future of either the logging functions, or the call sites to distinguish what belongs where. But at least for now we get correct exit values. --- src/main.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index a121f63..b9f94c5 100644 --- a/src/main.c +++ b/src/main.c @@ -172,13 +172,6 @@ int main(int argc, char *argv[]) exit(0); } - if (option_detach == TRUE) { - if (daemon(0, 0)) { - perror("Can't start daemon"); - exit(1); - } - } - main_loop = g_main_loop_new(NULL, FALSE); dbus_error_init(&err); @@ -218,6 +211,13 @@ int main(int argc, char *argv[]) __near_plugin_init(option_plugin, option_noplugin); + if (option_detach == TRUE) { + if (daemon(0, 0)) { + perror("Can't start daemon"); + exit(1); + } + } + memset(&sa, 0, sizeof(sa)); sa.sa_handler = sig_term; sigaction(SIGINT, &sa, NULL); -- cgit v1.2.3