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:10 UTC
- Message-ID
- <xmqq3580lue9.fsf@gitster.g>
- In-Reply-To
- <patch-3.5-c6b9b69c516-20230123T170551Z-avarab@gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 17 quoted lines
> diff --git a/hook.c b/hook.c
> index a4fa1031f28..86c6dc1fe70 100644
> --- a/hook.c
> +++ b/hook.c
> @@ -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;
> + }Do we need this else clause? I thought that we've made sure no_stdin is the default. Is it just being explicit?
Show 16 quoted lines
> diff --git a/hook.h b/hook.h
> index 4258b13da0d..19ab9a5806e 100644
> --- a/hook.h
> +++ b/hook.h
> @@ -30,6 +30,11 @@ struct run_hooks_opt
> * was invoked.
> */
> int *invoked_hook;
> +
> + /**
> + * Path to file which should be piped to stdin for each hook.
> + */
> + const char *path_to_stdin;
> };
>
> #define RUN_HOOKS_OPT_INIT { \