X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=wrapper.c;h=28290002b9f6434d716a39612f3afc9958c292af;hb=541d1fa85ca4741e8b6db281f3d788dcfc423bdc;hp=79635f2e1628a1ac25d62ca502c9ee4d0a2b61d6;hpb=c9b7cc04739bd744f7f28742de9ac65a61adebc2;p=git.git diff --git a/wrapper.c b/wrapper.c index 79635f2e1..28290002b 100644 --- a/wrapper.c +++ b/wrapper.c @@ -198,10 +198,22 @@ FILE *xfdopen(int fd, const char *mode) int xmkstemp(char *template) { int fd; + char origtemplate[PATH_MAX]; + strlcpy(origtemplate, template, sizeof(origtemplate)); fd = mkstemp(template); - if (fd < 0) - die_errno("Unable to create temporary file"); + if (fd < 0) { + int saved_errno = errno; + const char *nonrelative_template; + + if (!template[0]) + template = origtemplate; + + nonrelative_template = absolute_path(template); + errno = saved_errno; + die_errno("Unable to create temporary file '%s'", + nonrelative_template); + } return fd; } @@ -321,10 +333,22 @@ int gitmkstemps(char *pattern, int suffix_len) int xmkstemp_mode(char *template, int mode) { int fd; + char origtemplate[PATH_MAX]; + strlcpy(origtemplate, template, sizeof(origtemplate)); fd = git_mkstemp_mode(template, mode); - if (fd < 0) - die_errno("Unable to create temporary file"); + if (fd < 0) { + int saved_errno = errno; + const char *nonrelative_template; + + if (!template[0]) + template = origtemplate; + + nonrelative_template = absolute_path(template); + errno = saved_errno; + die_errno("Unable to create temporary file '%s'", + nonrelative_template); + } return fd; }