]> git.tuebingen.mpg.de Git - dss.git/blobdiff - dss.c
Fix wait_pro_process().
[dss.git] / dss.c
diff --git a/dss.c b/dss.c
index 24ef6ccc83549231252ee093bedded5a911951d0..8b8e4bb5f69a0629381548de70ec2c43c3b30154 100644 (file)
--- a/dss.c
+++ b/dss.c
@@ -383,10 +383,14 @@ int wait_for_process(pid_t pid, int *status)
 
        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) {
@@ -596,16 +600,11 @@ void parse_config_file(int override)
                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, &params);
        }
-       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;
@@ -1092,9 +1091,16 @@ err:
 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, &params); /* aborts on errors */
        parse_config_file(0);
+
        if (conf.daemon_given)
                daemon_init();
        setup_signal_handling();