Browse Source

Merge branch 'ef/alias-via-run-command'

* ef/alias-via-run-command:
  alias: use run_command api to execute aliases
maint
Junio C Hamano 14 years ago
parent
commit
f5bbbf9cad
  1. 34
      git.c

34
git.c

@ -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)

Loading…
Cancel
Save