Allow ETC_GITCONFIG to be a relative path.
authorJohannes Sixt <johannes.sixt@telecom.at>
Tue, 13 Nov 2007 20:05:06 +0000 (21:05 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Nov 2007 23:18:39 +0000 (15:18 -0800)
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>
config.c
index cee2d26d0ce19a085fd5de275f8b295b0865c9a6..ed96213c44265289c26d46edaaf740cebd0b4c86 100644 (file)
--- a/config.c
+++ b/config.c
@@ -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)