diff options
author | Steffen Prohaska <prohaska@zib.de> | 2008-07-13 22:31:18 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-07-13 14:41:28 -0700 |
commit | 2de9de5e4ae1353f1552f61cf8cf532e3f1dc5f6 (patch) | |
tree | aa862fe50c73cb0f8cff6b717423388ca3cffc5c /exec_cmd.c | |
parent | a9a3e82e6d0018ff42ec11fd9560c1ff47add824 (diff) | |
download | git-2de9de5e4ae1353f1552f61cf8cf532e3f1dc5f6.tar.gz |
Move code interpreting path relative to exec-dir to new function system_path()
Expanding system paths relative to git_exec_path can be used for
creating an installation that can be moved to a different directory
without re-compiling. We use this approach for template_dir and the
system wide gitconfig. The Windows installer (msysgit) is an example
for such a setup.
This commit moves common code to a new function system_path(). System
paths that are to be interpreted relative to git_exec_path are passed to
system_path() and the return value is used instead of the original path.
system_path() prefixes a relative path with git_exec_path and leaves
absolute paths unmodified. For example, we now write
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
[j6t: moved from path.c to exec_cmd.c]
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'exec_cmd.c')
-rw-r--r-- | exec_cmd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/exec_cmd.c b/exec_cmd.c index da04efe951..8899e31b3b 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -40,6 +40,16 @@ static const char *builtin_exec_path(void) #endif } +const char *system_path(const char *path) +{ + if (!is_absolute_path(path)) { + struct strbuf d = STRBUF_INIT; + strbuf_addf(&d, "%s/%s", git_exec_path(), path); + path = strbuf_detach(&d, NULL); + } + return path; +} + void git_set_argv_exec_path(const char *exec_path) { argv_exec_path = exec_path; |