All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Devin Lehmacher <lehmacdj@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [GSoC][PATCH 1/3] path.c: Add xdg_cache_home to get paths under XDG_CACHE_HOME
Date: Mon, 13 Mar 2017 14:48:37 -0400	[thread overview]
Message-ID: <20170313184837.wnluuyflbx63cwlm@sigill.intra.peff.net> (raw)
In-Reply-To: <20170313172232.96678-2-lehmacdj@gmail.com>

On Mon, Mar 13, 2017 at 01:22:30PM -0400, Devin Lehmacher wrote:

> Subject: Re: [GSoC][PATCH 1/3] path.c: Add xdg_cache_home to get paths under XDG_CACHE_HOME

It's nice to keep subject lines succinct, as people will skim through
them in "shortlog" or "log --oneline" output for years to come. Of
course, you should not make them _too_ succinct, but I think there is a
lot of extra detail here.

Probably:

  path.c: add xdg_cache_home

would suffice in this case (not also that we usually do not start
with a capital letter).

> This is necessary to make it posible to use XDG_CACHE_HOME for caches in
> the XDG standard. I modeled this after the very similar xdg_config_home
> function for obtaining paths to functions under XDG_CONFIG_HOME

I think this covers what it needs to, which is good. I'd usually try to
avoid starting the message with "this", as it it can be a bit vague (and
assumes that the body is shown next to the subject, which is not always
the case).

I'd have probably written it like:

  We already have xdg_config_home() to help us format paths in
  XDG_CONFIG_HOME. Let's provide a similar xdg_cache_home() to do the
  same thing for XDG_CACHE_HOME.

or something. I admit this is bikeshedding, but since you're new I feel
like I get to spout off about commit message style. :)

> +char *xdg_cache_home(const char *filename)
> +{
> +	const char *home, *cache_home;
> +
> +	assert(filename);
> +	cache_home = getenv("XDG_CACHE_HOME");
> +	if (cache_home && *cache_home)
> +		return mkpathdup("%s/git/%s", cache_home, filename);
> +
> +	home = getenv("HOME");
> +	if (home)
> +		return mkpathdup("%s/.cache/git/%s", home, filename);
> +	return NULL;
> +}

This looks fine, as it comes from xdg_config_home(). It does make me
wonder if the two should be sharing a common implementation, with a
signature like:

  char *xdg_generic_home(const char *env,
			 const char *fallback,
			 const char *filename);

and then the two functions do:

  return xdg_generic_home("XDG_CACHE_HOME", ".cache", filename);

For two the duplication is not so bad, but I wonder if there are other
xdg paths we'd care about.

And one final note. I notice that we return NULL if the user has no
HOME. But I'm not sure most callers are prepared to handle this. E.g.,
if you have no ident set and no HOME, then we will pass NULL to lstat().
On Linux at least that just gets you EFAULT, but I wouldn't be surprised
if it's a segfault on other systems (probably at least Windows, where we
have an lstat wrapper that calls strlen on the filename).

This is not at all a new thing with your patch, but it might be worth
considering while we are thinking about expanding this interface. I'm
not sure if the callers should be more careful, of it the function
should promise to either die() or return a non-NULL value.

-Peff

  reply	other threads:[~2017-03-13 18:48 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-13 17:22 [GSoC][PATCH 0/3] Move ~/.git-credential-cache to ~/.cache/git Devin Lehmacher
2017-03-13 17:22 ` [GSoC][PATCH 1/3] path.c: Add xdg_cache_home to get paths under XDG_CACHE_HOME Devin Lehmacher
2017-03-13 18:48   ` Jeff King [this message]
2017-03-13 19:44     ` Devin Lehmacher
2017-03-13 17:22 ` [GSoC][PATCH 2/3] credential-cache.c: Make git use XDG_CACHE_HOME for credentials Devin Lehmacher
2017-03-13 18:09   ` Junio C Hamano
2017-03-13 19:03     ` Jeff King
2017-03-13 19:05       ` Junio C Hamano
2017-03-13 19:24         ` Devin Lehmacher
2017-03-13 19:22     ` Devin Lehmacher
2017-03-13 18:11   ` Junio C Hamano
2017-03-13 19:01   ` Jeff King
2017-03-13 17:22 ` [GSoC][PATCH 3/3] Update documentation to reflect new socket location Devin Lehmacher
2017-03-13 18:04   ` Junio C Hamano
2017-03-13 20:42   ` [GSoC][PATCH v2 2/2] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-13 20:43   ` [GSoC][PATCH v2 1/2] path.c: add xdg_cache_home Devin Lehmacher
2017-03-13 20:43     ` [GSoC][PATCH v2 2/2] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-13 21:52       ` Junio C Hamano
2017-03-14  0:32         ` [GSoC][PATCH/RFC v3 0/3] Fix commit messages, check if socket is socket Devin Lehmacher
2017-03-14  0:32           ` [GSoC][PATCH/RFC v3 1/3] path.c: add xdg_cache_home Devin Lehmacher
2017-03-14  0:32           ` [GSoC][PATCH/RFC v3 2/3] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-14  1:50             ` Junio C Hamano
2017-03-14  0:32           ` [GSoC][PATCH/RFC v3 3/3] credential-cache: only use user_socket if a socket Devin Lehmacher
2017-03-14  0:40             ` Devin Lehmacher
2017-03-14  0:44               ` Brandon Williams
2017-03-14  1:30                 ` Devin Lehmacher
2017-03-14 17:03                   ` Brandon Williams
2017-03-14  1:52             ` Junio C Hamano
2017-03-14  6:10               ` Junio C Hamano
2017-03-14  6:17                 ` Devin Lehmacher
2017-03-16  5:18             ` [GSoC][PATCH v4 0/4] Moving credential-cache socket to xdg path Devin Lehmacher
2017-03-16  5:18               ` [GSoC][PATCH v4 1/4] path.c: add xdg_cache_home Devin Lehmacher
2017-03-16  5:18               ` [GSoC][PATCH v4 2/4] dir: add directory_exists Devin Lehmacher
2017-03-16 16:09                 ` Junio C Hamano
2017-03-16 18:26                   ` Junio C Hamano
2017-03-16  5:18               ` [GSoC][PATCH v4 3/4] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-16 16:20                 ` Junio C Hamano
2017-03-16 18:02                   ` Jeff King
2017-03-16  5:18               ` [GSoC][PATCH v4 4/4] credential-cache: add tests for XDG functionality Devin Lehmacher
2017-03-16 16:29                 ` Junio C Hamano
2017-03-16 17:58                   ` Jeff King
2017-03-17  2:53                 ` [GSoC][PATCH v5 1/3] path.c: add xdg_cache_home Devin Lehmacher
2017-03-17  2:53                   ` [GSoC][PATCH v5 2/3] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-17 16:12                     ` Ramsay Jones
2017-03-17 19:31                       ` Devin Lehmacher
2017-03-17  2:53                   ` [GSoC][PATCH v5 3/3] credential-cache: add tests for XDG functionality Devin Lehmacher
2017-03-17  5:38                     ` Junio C Hamano
2017-03-17 12:36                     ` [GSoC][PATCH v6 1/3] path.c: add xdg_cache_home Devin Lehmacher
2017-03-17 12:36                       ` [GSoC][PATCH v6 2/3] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-17 13:42                         ` Jeff King
2017-03-17 12:36                       ` [GSoC][PATCH v6 3/3] credential-cache: add tests for XDG functionality Devin Lehmacher
2017-03-17 13:38                         ` Jeff King
2017-03-17 13:42                       ` [GSoC][PATCH v6 1/3] path.c: add xdg_cache_home Jeff King
2017-03-13 21:39     ` [GSoC][PATCH v2 1/2] " Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170313184837.wnluuyflbx63cwlm@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=lehmacdj@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.