In daemon mode, we changed to dest_dir _before_ calling daemon_init(),
which changes the cwd to /.
Fix this rather embarrassing bug by changing cwd later. To this aim,
introduce change_to_dest_dir() which also logs some messages.
}
DSS_EMERG_LOG("loglevel: %d\n", conf.loglevel_arg);
// cmdline_parser_dump(logfile? logfile : stdout, &conf);
- ret = dss_chdir(conf.dest_dir_arg);
out:
free(config_file);
if (ret >= 0)
exit(EXIT_FAILURE);
}
+static void change_to_dest_dir(void)
+{
+ int ret;
+
+ DSS_INFO_LOG("changing cwd to %s\n", conf.dest_dir_arg);
+ ret = dss_chdir(conf.dest_dir_arg);
+ if (ret >= 0)
+ return;
+ DSS_EMERG_LOG("%s\n", dss_strerror(-ret));
+ exit(EXIT_FAILURE);
+}
+
static void handle_sighup(void)
{
DSS_NOTICE_LOG("SIGHUP\n");
parse_config_file(1);
+ change_to_dest_dir();
}
static void handle_signal(void)
if (conf.daemon_given)
daemon_init();
+ change_to_dest_dir();
setup_signal_handling();
ret = call_command_handler();
if (ret < 0)