Re: [PATCH v2 5/8] run-command: add an "ungroup" option to run_process_parallel()
From: Junio C Hamano <hidden>
Date: 2022-05-18 22:02:30
Ævar Arnfjörð Bjarmason [off-list ref] writes:
quoted hunk
+ * 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 ;-).