Re: [PATCH v2 5/8] run-command: add an "ungroup" option to run_process_parallel()
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 24 quoted lines
> + * If the "ungroup" option isn't specified the callbacks will get a
> + * pointer to a "struct strbuf *out", and must not write to stdout or
> + * stderr as such output will mess up the output of the other parallel
> + * processes. If "ungroup" option is specified callbacks will get a
> + * NULL "struct strbuf *out" parameter, and are responsible for
> + * emitting their own output, including dealing with any race
> + * conditions due to writing in parallel to stdout and stderr.
> */
> int run_processes_parallel(struct run_process_parallel_opts *opts);
>
> diff --git a/t/helper/test-run-command.c b/t/helper/test-run-command.c
> index 56a806f228b..986acbce5f2 100644
> --- a/t/helper/test-run-command.c
> +++ b/t/helper/test-run-command.c
> @@ -31,7 +31,11 @@ static int parallel_next(struct child_process *cp,
> return 0;
>
> strvec_pushv(&cp->args, d->args.v);
> - strbuf_addstr(err, "preloaded output of a child\n");
> + if (err)
> + strbuf_addstr(err, "preloaded output of a child\n");
> + else
> + fprintf(stderr, "preloaded output of a child\n");
> +
This illustrates the intended use of !err and !!err pretty well ;-).