#include "run-command.h"
const char git_usage_string[] =
- "git [--version] [--exec-path[=<path>]] [--html-path]\n"
+ "git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
" [-p|--paginate|--no-pager] [--no-replace-objects]\n"
" [--bare] [--git-dir=<path>] [--work-tree=<path>]\n"
" [-c name=value] [--help]\n"
static int handle_options(const char ***argv, int *argc, int *envchanged)
{
- int handled = 0;
+ const char **orig_argv = *argv;
while (*argc > 0) {
const char *cmd = (*argv)[0];
} else if (!strcmp(cmd, "--html-path")) {
puts(system_path(GIT_HTML_PATH));
exit(0);
+ } else if (!strcmp(cmd, "--man-path")) {
+ puts(system_path(GIT_MAN_PATH));
+ exit(0);
+ } else if (!strcmp(cmd, "--info-path")) {
+ puts(system_path(GIT_INFO_PATH));
+ exit(0);
} else if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) {
use_pager = 1;
} else if (!strcmp(cmd, "--no-pager")) {
*envchanged = 1;
(*argv)++;
(*argc)--;
- handled++;
} else if (!prefixcmp(cmd, "--git-dir=")) {
setenv(GIT_DIR_ENVIRONMENT, cmd + 10, 1);
if (envchanged)
(*argv)++;
(*argc)--;
- handled++;
}
- return handled;
+ return (*argv) - orig_argv;
}
static int handle_alias(int *argcp, const char ***argv)
if (alias_string[0] == '!') {
const char **alias_argv;
int argc = *argcp, i;
+ struct strbuf sb = STRBUF_INIT;
+ const char *env[2];
commit_pager_choice();
alias_argv[i] = (*argv)[i];
alias_argv[argc] = NULL;
- ret = run_command_v_opt(alias_argv, RUN_USING_SHELL);
+ strbuf_addstr(&sb, "GIT_PREFIX=");
+ if (subdir)
+ strbuf_addstr(&sb, subdir);
+ env[0] = sb.buf;
+ env[1] = NULL;
+ ret = run_command_v_opt_cd_env(alias_argv, RUN_USING_SHELL, NULL, env);
+ strbuf_release(&sb);
if (ret >= 0) /* normal exit */
exit(ret);