diff options
author | Johannes Sixt <johannes.sixt@telecom.at> | 2007-11-13 21:05:06 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-14 15:18:39 -0800 |
commit | 7f0e39faa2929541f61039be96d3f40f74207585 (patch) | |
tree | 6fa0823ba8882f26aa75d2339299e1b23c69d299 /config.c | |
parent | 506b17b136ba8ee29098c2ee26b94f527cea9ebc (diff) | |
download | git-7f0e39faa2929541f61039be96d3f40f74207585.tar.gz |
Allow ETC_GITCONFIG to be a relative path.
If ETC_GITCONFIG is not an absolute path, interpret it relative to
--exec-dir. This makes the installed binaries relocatable because the
prefix is not compiled-in.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -6,6 +6,7 @@ * */ #include "cache.h" +#include "exec_cmd.h" #define MAXNAME (256) @@ -461,7 +462,17 @@ int git_config_from_file(config_fn_t fn, const char *filename) const char *git_etc_gitconfig(void) { - return ETC_GITCONFIG; + static const char *system_wide; + if (!system_wide) { + system_wide = ETC_GITCONFIG; + if (!is_absolute_path(system_wide)) { + /* interpret path relative to exec-dir */ + const char *exec_path = git_exec_path(); + system_wide = prefix_path(exec_path, strlen(exec_path), + system_wide); + } + } + return system_wide; } int git_config(config_fn_t fn) |