summaryrefslogtreecommitdiff
path: root/config.c
diff options
context:
space:
mode:
authorJohannes Sixt <johannes.sixt@telecom.at>2007-11-13 21:05:06 +0100
committerJunio C Hamano <gitster@pobox.com>2007-11-14 15:18:39 -0800
commit7f0e39faa2929541f61039be96d3f40f74207585 (patch)
tree6fa0823ba8882f26aa75d2339299e1b23c69d299 /config.c
parent506b17b136ba8ee29098c2ee26b94f527cea9ebc (diff)
downloadgit-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.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/config.c b/config.c
index cee2d26d0c..ed96213c44 100644
--- 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)