From 395de250d9d9762b8ac1ce98b297d60d0b5bd643 Mon Sep 17 00:00:00 2001 From: Matthieu Moy Date: Tue, 17 Nov 2009 18:24:25 +0100 Subject: Expand ~ and ~user in core.excludesfile, commit.template These config variables are parsed to substitute ~ and ~user with getpw entries. user_path() refactored into new function expand_user_path(), to allow dynamically allocating the return buffer. Original patch by Karl Chen, modified by Matthieu Moy, and further amended by Junio C Hamano. Signed-off-by: Karl Chen Signed-off-by: Matthieu Moy Signed-off-by: Junio C Hamano --- config.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'config.c') diff --git a/config.c b/config.c index c644061136..b3d1ff4e7c 100644 --- a/config.c +++ b/config.c @@ -351,6 +351,16 @@ int git_config_string(const char **dest, const char *var, const char *value) return 0; } +int git_config_pathname(const char **dest, const char *var, const char *value) +{ + if (!value) + return config_error_nonbool(var); + *dest = expand_user_path(value); + if (!*dest) + die("Failed to expand user dir in: '%s'", value); + return 0; +} + static int git_default_core_config(const char *var, const char *value) { /* This needs a better name */ @@ -474,7 +484,7 @@ static int git_default_core_config(const char *var, const char *value) return git_config_string(&editor_program, var, value); if (!strcmp(var, "core.excludesfile")) - return git_config_string(&excludes_file, var, value); + return git_config_pathname(&excludes_file, var, value); if (!strcmp(var, "core.whitespace")) { if (!value) -- cgit v1.2.1