lib/process: Add dry_run argument to process_init
[petitboot] / lib / process / process.c
index e1a158b0799519e391aa310228a3c8670cad7e47..6fac6492eeedd2524c71de8d4ee620a73cc3b47b 100644 (file)
@@ -29,6 +29,7 @@ struct procset {
        struct list             async_list;
        int                     sigchld_pipe[2];
        struct waiter           *sigchld_waiter;
+       bool                    dry_run;
 };
 
 /* Internal data type for process handling
@@ -245,13 +246,14 @@ static int process_fini(void *p)
        return 0;
 }
 
-struct procset *process_init(void *ctx, struct waitset *set)
+struct procset *process_init(void *ctx, struct waitset *set, bool dry_run)
 {
        struct sigaction sa;
        int rc;
 
        procset = talloc(ctx, struct procset);
        procset->waitset = set;
+       procset->dry_run = dry_run;
        list_init(&procset->async_list);
 
        rc = pipe(procset->sigchld_pipe);
@@ -330,6 +332,8 @@ static int process_run_common(struct process_info *procinfo)
 
        if (pid == 0) {
                process_setup_stdout_child(procinfo);
+               if (procset->dry_run)
+                       exit(EXIT_SUCCESS);
                execvp(process->path, (char * const *)process->argv);
                exit(EXIT_FAILURE);
        }