summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: e8e1c29)
raw | patch | inline | side by side (parent: e8e1c29)
author | Junio C Hamano <gitster@pobox.com> | |
Fri, 28 Oct 2011 18:40:48 +0000 (11:40 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 28 Oct 2011 18:40:48 +0000 (11:40 -0700) |
Factor out a small logic out of the private write_pack_file() function
in builtin/pack-objects.c
Signed-off-by: Junio C Hamano <gitster@pobox.com>
in builtin/pack-objects.c
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pack-objects.c | patch | blob | history | |
pack-write.c | patch | blob | history | |
pack.h | patch | blob | history |
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index ba3705d1de0d91714be4c967a26ffd263e09878c..6643c1657a7f1dc94e12782000d0780d86c0e155 100644 (file)
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
uint32_t i = 0, j;
struct sha1file *f;
off_t offset;
- struct pack_header hdr;
uint32_t nr_remaining = nr_result;
time_t last_mtime = 0;
struct object_entry **write_order;
f = sha1fd(fd, pack_tmp_name);
}
- hdr.hdr_signature = htonl(PACK_SIGNATURE);
- hdr.hdr_version = htonl(PACK_VERSION);
- hdr.hdr_entries = htonl(nr_remaining);
- sha1write(f, &hdr, sizeof(hdr));
- offset = sizeof(hdr);
+ offset = write_pack_header(f, nr_remaining);
+ if (!offset)
+ die_errno("unable to write pack header");
nr_written = 0;
for (; i < nr_objects; i++) {
struct object_entry *e = write_order[i];
diff --git a/pack-write.c b/pack-write.c
index 9cd3bfbb4b3859cbbdc1b9375ea95f511fffc94e..46f3f846be9ba8a4b7d52ac703375223e17244a1 100644 (file)
--- a/pack-write.c
+++ b/pack-write.c
@@ -178,6 +178,18 @@ const char *write_idx_file(const char *index_name, struct pack_idx_entry **objec
return index_name;
}
+off_t write_pack_header(struct sha1file *f, uint32_t nr_entries)
+{
+ struct pack_header hdr;
+
+ hdr.hdr_signature = htonl(PACK_SIGNATURE);
+ hdr.hdr_version = htonl(PACK_VERSION);
+ hdr.hdr_entries = htonl(nr_entries);
+ if (sha1write(f, &hdr, sizeof(hdr)))
+ return 0;
+ return sizeof(hdr);
+}
+
/*
* Update pack header with object_count and compute new SHA1 for pack data
* associated to pack_fd, and write that SHA1 at the end. That new SHA1
index 722a54e00a2cb7d9514c12f799fb1ec15930cf5d..d429d8a66888d4fb9f64a781cb6d3eb347f480f7 100644 (file)
--- a/pack.h
+++ b/pack.h
#define PACK_H
#include "object.h"
+#include "csum-file.h"
/*
* Packed object header
extern int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr);
extern int verify_pack_index(struct packed_git *);
extern int verify_pack(struct packed_git *);
+extern off_t write_pack_header(struct sha1file *f, uint32_t);
extern void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t);
extern char *index_pack_lockfile(int fd);
extern int encode_in_pack_object_header(enum object_type, uintmax_t, unsigned char *);