diff options
author | Steve Haslam <shaslam@lastminute.com> | 2009-01-18 13:00:10 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-01-26 00:26:05 -0800 |
commit | 4dd47c3b867f51211d0dc4474dab0fee5ca614da (patch) | |
tree | ce7dc1d2f5788d33d753abcaf5d42d33df87f9b0 /exec_cmd.c | |
parent | 026fa0d5ad9538ca76838070861531c037d7b9ba (diff) | |
download | git-4dd47c3b867f51211d0dc4474dab0fee5ca614da.tar.gz |
Refactor git_set_argv0_path() to git_extract_argv0_path()
This commit moves the code that computes the dirname of argv[0]
from git.c's main() to git_set_argv0_path() and renames the function
to git_extract_argv0_path(). This makes the code in git.c's main
less cluttered, and we can use the dirname computation from other
main() functions too.
[ spr:
- split Steve's original commit and wrote new commit message.
- Integrated Johannes Schindelin's
cca1704897e7fdb182f68d4c48a437c5d7bc5203 while rebasing onto master.
]
Signed-off-by: Steve Haslam <shaslam@lastminute.com>
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'exec_cmd.c')
-rw-r--r-- | exec_cmd.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/exec_cmd.c b/exec_cmd.c index 114d6389e4..e508f1e66d 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -20,9 +20,19 @@ const char *system_path(const char *path) return path; } -void git_set_argv0_path(const char *path) +const char *git_extract_argv0_path(const char *argv0) { - argv0_path = path; + const char *slash = argv0 + strlen(argv0); + + while (argv0 <= slash && !is_dir_sep(*slash)) + slash--; + + if (slash >= argv0) { + argv0_path = xstrndup(argv0, slash - argv0); + return slash + 1; + } + + return argv0; } void git_set_argv_exec_path(const char *exec_path) |