summaryrefslogtreecommitdiff
path: root/path.c
diff options
context:
space:
mode:
authorLénaïc Huard <lenaic@lhuard.fr>2021-09-04 20:54:58 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-09-07 17:57:04 (GMT)
commitcb7db5bbd56f587a35c1861282c46d424fee0b38 (patch)
tree74e1279faf234aa87d77f21a8f3a0642783d6b3d /path.c
parentebf3c04b262aa27fbb97f8a0156c2347fecafafb (diff)
downloadgit-cb7db5bbd56f587a35c1861282c46d424fee0b38.zip
git-cb7db5bbd56f587a35c1861282c46d424fee0b38.tar.gz
git-cb7db5bbd56f587a35c1861282c46d424fee0b38.tar.bz2
cache.h: Introduce a generic "xdg_config_home_for(…)" function
Current implementation of `xdg_config_home(filename)` returns `$XDG_CONFIG_HOME/git/$filename`, with the `git` subdirectory inserted between the `XDG_CONFIG_HOME` environment variable and the parameter. This patch introduces a `xdg_config_home_for(subdir, filename)` function which is more generic. It only concatenates "$XDG_CONFIG_HOME", or "$HOME/.config" if the former isn’t defined, with the parameters, without adding `git` in between. `xdg_config_home(filename)` is now implemented by calling `xdg_config_home_for("git", filename)` but this new generic function can be used to compute the configuration directory of other programs. Signed-off-by: Lénaïc Huard <lenaic@lhuard.fr> Acked-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'path.c')
-rw-r--r--path.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/path.c b/path.c
index 7bccd83..1b1de3b 100644
--- a/path.c
+++ b/path.c
@@ -1503,21 +1503,28 @@ int looks_like_command_line_option(const char *str)
return str && str[0] == '-';
}
-char *xdg_config_home(const char *filename)
+char *xdg_config_home_for(const char *subdir, const char *filename)
{
const char *home, *config_home;
+ assert(subdir);
assert(filename);
config_home = getenv("XDG_CONFIG_HOME");
if (config_home && *config_home)
- return mkpathdup("%s/git/%s", config_home, filename);
+ return mkpathdup("%s/%s/%s", config_home, subdir, filename);
home = getenv("HOME");
if (home)
- return mkpathdup("%s/.config/git/%s", home, filename);
+ return mkpathdup("%s/.config/%s/%s", home, subdir, filename);
+
return NULL;
}
+char *xdg_config_home(const char *filename)
+{
+ return xdg_config_home_for("git", filename);
+}
+
char *xdg_cache_home(const char *filename)
{
const char *home, *cache_home;