Re: [PATCH 3/5] hook API: support passing stdin to hooks, convert am's 'post-rewrite'
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 23, 2023, 23:13 UTC
- Message-ID
- <xmqqy1pskfo6.fsf@gitster.g>
- In-Reply-To
- <patch-3.5-c6b9b69c516-20230123T170551Z-avarab@gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 13 quoted lines
> @@ -53,8 +53,14 @@ static int pick_next_hook(struct child_process *cp,
> if (!hook_path)
> return 0;
>
> - cp->no_stdin = 1;
> strvec_pushv(&cp->env, hook_cb->options->env.v);
> + /* reopen the file for stdin; run_command closes it. */
> + if (hook_cb->options->path_to_stdin) {
> + cp->no_stdin = 0;
> + cp->in = xopen(hook_cb->options->path_to_stdin, O_RDONLY);
> + } else {
> + cp->no_stdin = 1;
> + }By the way, using the path_to_stdin as the customization machinery for the API users, and keeping it to the API implementation to actually open the file and stuff .in member with it, is a good way to make sure that multiple processes do not compete for the same standard input stream. IOW, what I was worried about in my review of [2/5] is addressed by this mechanism.
Thanks.