DSS_DEBUG_LOG("Waiting for process %d to terminate\n", (int)pid);
for (;;) {
- pause();
- ret = next_signal();
+ fd_set rfds;
+
+ FD_ZERO(&rfds);
+ FD_SET(signal_pipe, &rfds);
+ ret = dss_select(signal_pipe + 1, &rfds, NULL, NULL);
if (ret < 0)
break;
+ ret = next_signal();
if (!ret)
continue;
if (ret == SIGCHLD) {
struct cmdline_parser_params params = {
.override = override,
.initialize = 0,
- .check_required = 0,
+ .check_required = 1,
.check_ambiguity = 0
};
cmdline_parser_config_file(config_file, &conf, ¶ms);
}
- if (!conf.source_dir_given || !conf.dest_dir_given) {
- ret = -E_SYNTAX;
- make_err_msg("you need to specify both source_dir and dest_dir");
- goto out;
- }
ret = check_config();
if (ret < 0)
goto out;
int main(int argc, char **argv)
{
int ret;
+ struct cmdline_parser_params params = {
+ .override = 0,
+ .initialize = 1,
+ .check_required = 0,
+ .check_ambiguity = 0
+ };
- cmdline_parser(argc, argv, &conf); /* aborts on errors */
+ cmdline_parser_ext(argc, argv, &conf, ¶ms); /* aborts on errors */
parse_config_file(0);
+
if (conf.daemon_given)
daemon_init();
setup_signal_handling();