diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-06-05 21:00:03 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-05 21:00:04 +0200 |
commit | d9c82fa7a75ae617718f195bb5f5ff5c904f2687 (patch) | |
tree | 202fad68c8cd4f1dc82f7e51bbd3b53eb391c077 /path.c | |
parent | Git 2.4.2 (diff) | |
parent | path.c: remove home_config_paths() (diff) | |
download | git-d9c82fa7a75ae617718f195bb5f5ff5c904f2687.tar.xz git-d9c82fa7a75ae617718f195bb5f5ff5c904f2687.zip |
Merge branch 'pt/xdg-config-path' into maint
Code clean-up for xdg configuration path support.
* pt/xdg-config-path:
path.c: remove home_config_paths()
git-config: replace use of home_config_paths()
git-commit: replace use of home_config_paths()
credential-store.c: replace home_config_paths() with xdg_config_home()
dir.c: replace home_config_paths() with xdg_config_home()
attr.c: replace home_config_paths() with xdg_config_home()
path.c: implement xdg_config_home()
t0302: "unreadable" test needs POSIXPERM
t0302: test credential-store support for XDG_CONFIG_HOME
git-credential-store: support XDG_CONFIG_HOME
git-credential-store: support multiple credential files
Diffstat (limited to 'path.c')
-rw-r--r-- | path.c | 43 |
1 files changed, 15 insertions, 28 deletions
@@ -130,34 +130,6 @@ char *git_path(const char *fmt, ...) return ret; } -void home_config_paths(char **global, char **xdg, char *file) -{ - char *xdg_home = getenv("XDG_CONFIG_HOME"); - char *home = getenv("HOME"); - char *to_free = NULL; - - if (!home) { - if (global) - *global = NULL; - } else { - if (!xdg_home) { - to_free = mkpathdup("%s/.config", home); - xdg_home = to_free; - } - if (global) - *global = mkpathdup("%s/.gitconfig", home); - } - - if (xdg) { - if (!xdg_home) - *xdg = NULL; - else - *xdg = mkpathdup("%s/git/%s", xdg_home, file); - } - - free(to_free); -} - char *git_path_submodule(const char *path, const char *fmt, ...) { char *pathname = get_pathname(); @@ -851,3 +823,18 @@ int is_ntfs_dotgit(const char *name) len = -1; } } + +char *xdg_config_home(const char *filename) +{ + const char *home, *config_home; + + assert(filename); + config_home = getenv("XDG_CONFIG_HOME"); + if (config_home && *config_home) + return mkpathdup("%s/git/%s", config_home, filename); + + home = getenv("HOME"); + if (home) + return mkpathdup("%s/.config/git/%s", home, filename); + return NULL; +} |