From: Phillip Wood Date: Mon, 24 May 2021 09:33:30 GMT Subject: Re: [PATCH v4 1/4] cache.h: Introduce a generic "xdg_config_home_for(…)" function Message-ID: <120b6b5c-ab30-6985-d5af-a0b0290b864f@gmail.com> In-Reply-To: <20210524071538.46862-2-lenaic@lhuard.fr> Hi Lénaïc This looks fine to me. I'm not 100% sold on calling the parameter prog as our program name later in the series ends up being "systemd/user" so something like "subdir" might have been better but that is not worth rerolling for. Best Wishes Phillip On 24/05/2021 08:15, Lénaïc Huard wrote: > 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(prog, 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 > --- > cache.h | 7 +++++++ > path.c | 13 ++++++++++--- > 2 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/cache.h b/cache.h > index 148d9ab5f1..8a2969414a 100644 > --- a/cache.h > +++ b/cache.h > @@ -1263,6 +1263,13 @@ int is_ntfs_dotgitattributes(const char *name); > */ > int looks_like_command_line_option(const char *str); > > +/** > + * Return a newly allocated string with the evaluation of > + * "$XDG_CONFIG_HOME/$prog/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise > + * "$HOME/.config/$prog/$filename". Return NULL upon error. > + */ > +char *xdg_config_home_for(const char *prog, const char *filename); > + > /** > * Return a newly allocated string with the evaluation of > * "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise > diff --git a/path.c b/path.c > index 7b385e5eb2..3641d4c456 100644 > --- a/path.c > +++ b/path.c > @@ -1498,21 +1498,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 *prog, const char *filename) > { > const char *home, *config_home; > > + assert(prog); > 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, prog, filename); > > home = getenv("HOME"); > if (home) > - return mkpathdup("%s/.config/git/%s", home, filename); > + return mkpathdup("%s/.config/%s/%s", home, prog, 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; >