diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-07-02 21:57:52 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-07-02 21:57:52 -0700 |
commit | bb1ab2db08f48add4236a5a9c08aa1a6aa4d5d48 (patch) | |
tree | e9e85601f78f7cfaf47785db9fd65f426e79fadb /git.c | |
parent | 7d3580d74c6d801419dd91416f9a81750b7d4e2c (diff) | |
parent | 14086b0a13f5f5ac456cb9ae16a263f92908ae61 (diff) | |
download | git-bb1ab2db08f48add4236a5a9c08aa1a6aa4d5d48.tar.gz git-bb1ab2db08f48add4236a5a9c08aa1a6aa4d5d48.tar.xz |
Merge branch 'j6t/mingw'
* j6t/mingw: (38 commits)
compat/pread.c: Add a forward declaration to fix a warning
Windows: Fix ntohl() related warnings about printf formatting
Windows: TMP and TEMP environment variables specify a temporary directory.
Windows: Make 'git help -a' work.
Windows: Work around an oddity when a pipe with no reader is written to.
Windows: Make the pager work.
When installing, be prepared that template_dir may be relative.
Windows: Use a relative default template_dir and ETC_GITCONFIG
Windows: Compute the fallback for exec_path from the program invocation.
Turn builtin_exec_path into a function.
Windows: Use a customized struct stat that also has the st_blocks member.
Windows: Add a custom implementation for utime().
Windows: Add a new lstat and fstat implementation based on Win32 API.
Windows: Implement a custom spawnve().
Windows: Implement wrappers for gethostbyname(), socket(), and connect().
Windows: Work around incompatible sort and find.
Windows: Implement asynchronous functions as threads.
Windows: Disambiguate DOS style paths from SSH URLs.
Windows: A rudimentary poll() emulation.
Windows: Implement start_command().
...
Diffstat (limited to 'git.c')
-rw-r--r-- | git.c | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -369,6 +369,16 @@ static void handle_internal_command(int argc, const char **argv) { "pack-refs", cmd_pack_refs, RUN_SETUP }, }; int i; + static const char ext[] = STRIP_EXTENSION; + + if (sizeof(ext) > 1) { + i = strlen(argv[0]) - strlen(ext); + if (i > 0 && !strcmp(argv[0] + i, ext)) { + char *argv0 = strdup(argv[0]); + argv[0] = cmd = argv0; + argv0[i] = '\0'; + } + } /* Turn "git cmd --help" into "git help cmd" */ if (argc > 1 && !strcmp(argv[1], "--help")) { @@ -416,8 +426,8 @@ static void execv_dashed_external(const char **argv) int main(int argc, const char **argv) { - const char *cmd = argv[0] ? argv[0] : "git-help"; - char *slash = strrchr(cmd, '/'); + const char *cmd = argv[0] && *argv[0] ? argv[0] : "git-help"; + char *slash = (char *)cmd + strlen(cmd); const char *cmd_path = NULL; int done_alias = 0; @@ -426,7 +436,10 @@ int main(int argc, const char **argv) * name, and the dirname as the default exec_path * if we don't have anything better. */ - if (slash) { + do + --slash; + while (cmd <= slash && !is_dir_sep(*slash)); + if (cmd <= slash) { *slash++ = 0; cmd_path = cmd; cmd = slash; |