summaryrefslogtreecommitdiff
path: root/exec_cmd.c
diff options
context:
space:
mode:
authorSteve Haslam <shaslam@lastminute.com>2009-01-18 12:00:10 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-01-26 08:26:05 (GMT)
commit4dd47c3b867f51211d0dc4474dab0fee5ca614da (patch)
treece7dc1d2f5788d33d753abcaf5d42d33df87f9b0 /exec_cmd.c
parent026fa0d5ad9538ca76838070861531c037d7b9ba (diff)
downloadgit-4dd47c3b867f51211d0dc4474dab0fee5ca614da.zip
git-4dd47c3b867f51211d0dc4474dab0fee5ca614da.tar.gz
git-4dd47c3b867f51211d0dc4474dab0fee5ca614da.tar.bz2
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.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/exec_cmd.c b/exec_cmd.c
index 114d638..e508f1e 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)