run-command: use internal argv_array of struct child_process in run_hook_ve()

Use the existing argv_array member instead of providing our own.  This
way we don't have to initialize or clean it up explicitly.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 2014-07-16 23:57:47 +02:00 committed by Junio C Hamano
parent 4bbaa1eb6f
commit d1d094564a
1 changed files with 4 additions and 11 deletions

View File

@ -770,28 +770,21 @@ char *find_hook(const char *name)
int run_hook_ve(const char *const *env, const char *name, va_list args) int run_hook_ve(const char *const *env, const char *name, va_list args)
{ {
struct child_process hook; struct child_process hook;
struct argv_array argv = ARGV_ARRAY_INIT;
const char *p; const char *p;
int ret;


p = find_hook(name); p = find_hook(name);
if (!p) if (!p)
return 0; return 0;


argv_array_push(&argv, p);

while ((p = va_arg(args, const char *)))
argv_array_push(&argv, p);

memset(&hook, 0, sizeof(hook)); memset(&hook, 0, sizeof(hook));
hook.argv = argv.argv; argv_array_push(&hook.args, p);
while ((p = va_arg(args, const char *)))
argv_array_push(&hook.args, p);
hook.env = env; hook.env = env;
hook.no_stdin = 1; hook.no_stdin = 1;
hook.stdout_to_stderr = 1; hook.stdout_to_stderr = 1;


ret = run_command(&hook); return run_command(&hook);
argv_array_clear(&argv);
return ret;
} }


int run_hook_le(const char *const *env, const char *name, ...) int run_hook_le(const char *const *env, const char *name, ...)