diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-26 22:01:46 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-26 22:01:46 -0700 |
commit | e18088451d92fbf83bfb57fd48201eda117f8103 (patch) | |
tree | 718ae283382872ae99ce7b49406679b0d3f498ab /pack-objects.c | |
parent | c38138cd78f284b261a02323e8f18a1dee87c7fa (diff) | |
download | git-e18088451d92fbf83bfb57fd48201eda117f8103.tar.gz |
csum-file interface updates: return resulting SHA1
Also, make the writing of the SHA1 as a end-header be conditional: not
every user will necessarily want to write the SHA1 to the file itself,
even though current users do (but we migh end up using the same helper
functions for the object files themselves, that don't do this).
This also makes the packed index file contain the SHA1 of the packed
data file at the end (just before its own SHA1). That way you can
validate the pairing of the two if you want to.
Diffstat (limited to 'pack-objects.c')
-rw-r--r-- | pack-objects.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/pack-objects.c b/pack-objects.c index f0c84c9a74..3fe3b05d51 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -29,6 +29,7 @@ static struct object_entry **sorted_by_sha, **sorted_by_type; static struct object_entry *objects = NULL; static int nr_objects = 0, nr_alloc = 0; static const char *base_name; +static unsigned char pack_file_sha1[20]; static void *delta_against(void *buf, unsigned long size, struct object_entry *entry) { @@ -95,7 +96,7 @@ static void write_pack_file(void) entry->offset = offset; offset += write_object(f, entry); } - sha1close(f); + sha1close(f, pack_file_sha1, 1); mb = offset >> 20; offset &= 0xfffff; } @@ -111,7 +112,7 @@ static void write_index_file(void) /* * Write the first-level table (the list is sorted, * but we use a 256-entry lookup to be able to avoid - * having to do eight extra binary search iterations) + * having to do eight extra binary search iterations). */ for (i = 0; i < 256; i++) { struct object_entry **next = list; @@ -136,7 +137,8 @@ static void write_index_file(void) sha1write(f, &offset, 4); sha1write(f, entry->sha1, 20); } - sha1close(f); + sha1write(f, pack_file_sha1, 20); + sha1close(f, NULL, 1); } static void add_object_entry(unsigned char *sha1, unsigned int hash) |