[PATCH 11/11] Allow ETC_GITCONFIG to be a relative path.
- From
Johannes Sixt <johannes.sixt@telecom.at>
- Date
- Nov 13, 2007, 20:05 UTC
- Message-ID
- <1194984306-3181-12-git-send-email-johannes.sixt@telecom.at>
- In-Reply-To
- <1194984306-3181-11-git-send-email-johannes.sixt@telecom.at>
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> --- config.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/config.c b/config.c index dd7e9ad..9f014bb 100644 --- a/config.c +++ b/config.c @@ -6,6 +6,7 @@ * */ #include "cache.h" +#include "exec_cmd.h" #define MAXNAME (256) @@ -454,7 +455,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)
-- 1.5.3.5.1592.g0d6db