diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2023-01-23 13:00:32 +0000 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2023-02-09 12:10:40 +0000 |
commit | cdf5ae9ff6aab6655a1cc361e998462f260bcf0b (patch) | |
tree | 1edb99ee8dc6f4f6ceed32bd7aeb217e4e32ed3a | |
parent | 2d08ead9c34317b6727d13d3a4a2a46d429557cb (diff) | |
download | libgit2-cdf5ae9ff6aab6655a1cc361e998462f260bcf0b.tar.gz |
config: use home directory for `~` includes
Users can specify a config file to be included in the home directory
using `~/filename` syntax. Instead of looking in the global
configuration location (which may be overridden), use the user's
_actual_ home directory. This allows callers to change the global
configuration location separately from the home directory.
-rw-r--r-- | src/libgit2/config.c | 2 | ||||
-rw-r--r-- | src/libgit2/config_file.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/libgit2/config.c b/src/libgit2/config.c index 5c366e221..6d15a8db6 100644 --- a/src/libgit2/config.c +++ b/src/libgit2/config.c @@ -860,7 +860,7 @@ static int git_config__parse_path(git_str *out, const char *value) return -1; } - return git_sysdir_expand_global_file(out, value[1] ? &value[2] : NULL); + return git_sysdir_expand_homedir_file(out, value[1] ? &value[2] : NULL); } return git_str_sets(out, value); diff --git a/src/libgit2/config_file.c b/src/libgit2/config_file.c index 66fcb8ae2..932ca7601 100644 --- a/src/libgit2/config_file.c +++ b/src/libgit2/config_file.c @@ -528,7 +528,7 @@ static int included_path(git_str *out, const char *dir, const char *path) { /* From the user's home */ if (path[0] == '~' && path[1] == '/') - return git_sysdir_expand_global_file(out, &path[1]); + return git_sysdir_expand_homedir_file(out, &path[1]); return git_fs_path_join_unrooted(out, path, dir, NULL); } @@ -616,7 +616,7 @@ static int do_match_gitdir( git_fs_path_dirname_r(&pattern, cfg_file); git_str_joinpath(&pattern, pattern.ptr, condition + 2); } else if (condition[0] == '~' && git_fs_path_is_dirsep(condition[1])) - git_sysdir_expand_global_file(&pattern, condition + 1); + git_sysdir_expand_homedir_file(&pattern, condition + 1); else if (!git_fs_path_is_absolute(condition)) git_str_joinpath(&pattern, "**", condition); else |