diff options
| author | Junio C Hamano <gitster@pobox.com> | 2009-03-21 22:53:36 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2009-03-21 22:53:36 -0700 |
| commit | 2990034f1ed2c3d85d23d5611a1f04d317f785ac (patch) | |
| tree | b279df7a87a679a74c942f1c32d42681f9317f4b /index-pack.c | |
| parent | bf0fe35c938ac9f03d1369600b0c76e428a57507 (diff) | |
| parent | 2c626e5fa8a46f647b88fb32d7b28d573e8631bf (diff) | |
| download | git-2990034f1ed2c3d85d23d5611a1f04d317f785ac.tar.gz | |
Merge branch 'jc/maint-1.6.0-pack-directory' into maint-1.6.1
* jc/maint-1.6.0-pack-directory:
Fix odb_mkstemp() on AIX
Make sure objects/pack exists before creating a new pack
Conflicts:
wrapper.c
Diffstat (limited to 'index-pack.c')
| -rw-r--r-- | index-pack.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/index-pack.c b/index-pack.c index c0a3d97a12..7697b1dfe3 100644 --- a/index-pack.c +++ b/index-pack.c @@ -171,9 +171,8 @@ static char *open_pack_file(char *pack_name) input_fd = 0; if (!pack_name) { static char tmpfile[PATH_MAX]; - snprintf(tmpfile, sizeof(tmpfile), - "%s/pack/tmp_pack_XXXXXX", get_object_directory()); - output_fd = xmkstemp(tmpfile); + output_fd = odb_mkstemp(tmpfile, sizeof(tmpfile), + "pack/tmp_pack_XXXXXX"); pack_name = xstrdup(tmpfile); } else output_fd = open(pack_name, O_CREAT|O_EXCL|O_RDWR, 0600); @@ -793,22 +792,24 @@ static void final(const char *final_pack_name, const char *curr_pack_name, if (keep_msg) { int keep_fd, keep_msg_len = strlen(keep_msg); - if (!keep_name) { - snprintf(name, sizeof(name), "%s/pack/pack-%s.keep", - get_object_directory(), sha1_to_hex(sha1)); - keep_name = name; - } - keep_fd = open(keep_name, O_RDWR|O_CREAT|O_EXCL, 0600); + + if (!keep_name) + keep_fd = odb_pack_keep(name, sizeof(name), sha1); + else + keep_fd = open(keep_name, O_RDWR|O_CREAT|O_EXCL, 0600); + if (keep_fd < 0) { if (errno != EEXIST) - die("cannot write keep file"); + die("cannot write keep file '%s' (%s)", + keep_name, strerror(errno)); } else { if (keep_msg_len > 0) { write_or_die(keep_fd, keep_msg, keep_msg_len); write_or_die(keep_fd, "\n", 1); } if (close(keep_fd) != 0) - die("cannot write keep file"); + die("cannot close written keep file '%s' (%s)", + keep_name, strerror(errno)); report = "keep"; } } |
