summaryrefslogtreecommitdiff
path: root/diff.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-06-03 00:50:05 -0700
committerJunio C Hamano <gitster@pobox.com>2009-06-03 00:50:05 -0700
commitb11cf09043f18b368ec0d988f064ea21247c843d (patch)
tree864a5086870ab9f5e48b3f6e2d5fa1264e9f074a /diff.c
parentceff8e7adeed51024491deb4933f23db760e5641 (diff)
parent003b33a8ad686ee4a0d0b36635bfd6aba940b24a (diff)
downloadgit-b11cf09043f18b368ec0d988f064ea21247c843d.tar.gz
Merge branch 'da/pretty-tempname'
* da/pretty-tempname: diff: generate pretty filenames in prep_temp_blob() compat: add a basename() compatibility function compat: add a mkstemps() compatibility function Conflicts: Makefile
Diffstat (limited to 'diff.c')
-rw-r--r--diff.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/diff.c b/diff.c
index dcfbcb0215..4d0a5b9ae6 100644
--- a/diff.c
+++ b/diff.c
@@ -1964,8 +1964,16 @@ static void prep_temp_blob(const char *path, struct diff_tempfile *temp,
{
int fd;
struct strbuf buf = STRBUF_INIT;
+ struct strbuf template = STRBUF_INIT;
+ char *path_dup = xstrdup(path);
+ const char *base = basename(path_dup);
- fd = git_mkstemp(temp->tmp_path, PATH_MAX, ".diff_XXXXXX");
+ /* Generate "XXXXXX_basename.ext" */
+ strbuf_addstr(&template, "XXXXXX_");
+ strbuf_addstr(&template, base);
+
+ fd = git_mkstemps(temp->tmp_path, PATH_MAX, template.buf,
+ strlen(base) + 1);
if (fd < 0)
die("unable to create temp-file: %s", strerror(errno));
if (convert_to_working_tree(path,
@@ -1981,6 +1989,8 @@ static void prep_temp_blob(const char *path, struct diff_tempfile *temp,
temp->hex[40] = 0;
sprintf(temp->mode, "%06o", mode);
strbuf_release(&buf);
+ strbuf_release(&template);
+ free(path_dup);
}
static struct diff_tempfile *prepare_temp_file(const char *name,