|
|
@ -177,24 +177,24 @@ static int handle_alias(int *argcp, const char ***argv) |
|
|
|
alias_string = alias_lookup(alias_command); |
|
|
|
alias_string = alias_lookup(alias_command); |
|
|
|
if (alias_string) { |
|
|
|
if (alias_string) { |
|
|
|
if (alias_string[0] == '!') { |
|
|
|
if (alias_string[0] == '!') { |
|
|
|
|
|
|
|
const char **alias_argv; |
|
|
|
|
|
|
|
int argc = *argcp, i; |
|
|
|
|
|
|
|
|
|
|
|
commit_pager_choice(); |
|
|
|
commit_pager_choice(); |
|
|
|
if (*argcp > 1) { |
|
|
|
|
|
|
|
struct strbuf buf; |
|
|
|
/* build alias_argv */ |
|
|
|
|
|
|
|
alias_argv = xmalloc(sizeof(*alias_argv) * (argc + 1)); |
|
|
|
strbuf_init(&buf, PATH_MAX); |
|
|
|
alias_argv[0] = alias_string + 1; |
|
|
|
strbuf_addstr(&buf, alias_string); |
|
|
|
for (i = 1; i < argc; ++i) |
|
|
|
sq_quote_argv(&buf, (*argv) + 1, PATH_MAX); |
|
|
|
alias_argv[i] = (*argv)[i]; |
|
|
|
free(alias_string); |
|
|
|
alias_argv[argc] = NULL; |
|
|
|
alias_string = buf.buf; |
|
|
|
|
|
|
|
} |
|
|
|
ret = run_command_v_opt(alias_argv, RUN_USING_SHELL); |
|
|
|
trace_printf("trace: alias to shell cmd: %s => %s\n", |
|
|
|
if (ret >= 0) /* normal exit */ |
|
|
|
alias_command, alias_string + 1); |
|
|
|
exit(ret); |
|
|
|
ret = system(alias_string + 1); |
|
|
|
|
|
|
|
if (ret >= 0 && WIFEXITED(ret) && |
|
|
|
die_errno("While expanding alias '%s': '%s'", |
|
|
|
WEXITSTATUS(ret) != 127) |
|
|
|
alias_command, alias_string + 1); |
|
|
|
exit(WEXITSTATUS(ret)); |
|
|
|
|
|
|
|
die("Failed to run '%s' when expanding alias '%s'", |
|
|
|
|
|
|
|
alias_string + 1, alias_command); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
count = split_cmdline(alias_string, &new_argv); |
|
|
|
count = split_cmdline(alias_string, &new_argv); |
|
|
|
if (count < 0) |
|
|
|
if (count < 0) |
|
|
|