Re: [PATCH] diff: generate prettier filenames when using GIT_EXTERNAL_DIFF
- From
David Aguilar <davvid@gmail.com>
- Date
- May 25, 2009, 10:36 UTC
- Message-ID
- <20090525103604.GB13411@gmail.com>
- In-Reply-To
- <1243226693-72293-1-git-send-email-davvid@gmail.com>
On Sun, May 24, 2009 at 09:44:53PM -0700, David Aguilar wrote:
Show 24 quoted lines
> diff --git a/path.c b/path.c
> index 8a0a674..c2a0fb6 100644
> --- a/path.c
> +++ b/path.c
> @@ -140,6 +140,24 @@ int git_mkstemp(char *path, size_t len, const char *template)
> }
>
>
> +/* git_mkstemp() - create tmp file with suffix honoring TMPDIR variable */
> +int git_mkstemps(char *path, size_t len, const char *template, int suffix_len)
> +{
> + const char *tmp;
> + size_t n;
> +
> + tmp = getenv("TMPDIR");
> + if (!tmp)
> + tmp = "/tmp";
> + n = snprintf(path, len, "%s/%s", tmp, template);
> + if (len <= n) {
> + errno = ENAMETOOLONG;
> + return -1;
> + }
> + return mkstemps(path, suffix_len);
> +}Lured by a mac. I came home and I tried it on linux:
path.c:157: warning: implicit declaration of function ‘mkstemps’
Gah. Darn you OS X and your non-portable 4.4 BSD extensions. Sorry about that.
The original patch could do without the strbuf_detach and free(), too. Being tricked by an OS X manpage like that is quite unpleasant.
mkstemp() won't do since it doesn't work with suffixes (the templates must end with "XXXX"). I'm sure there has to be another way, but I just can't think of it right now.
It seemed so easy at the time. Sigh...
-- David