diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-29 09:38:02 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-29 09:38:02 -0700 | 
| commit | cca7081a93b192219e8f4f7252c7fc7c2cabfd9a (patch) | |
| tree | cacb8cc1771e23a0e0c0d95e3d8c1fa1e8d0b1bd /unpack-objects.c | |
| parent | f9253394a271a9fefdd234a86c228adeb6d0136a (diff) | |
| download | git-cca7081a93b192219e8f4f7252c7fc7c2cabfd9a.tar.gz | |
Clean up git-unpack-objects a bit
I'd like to add back the "dry-run" thing, but it turns out that to do it
well, I'd have to keep all the object data in memory (which is not
acceptable).  So I'll clean it up a bit and make it do as many checks as
it can.
Diffstat (limited to 'unpack-objects.c')
| -rw-r--r-- | unpack-objects.c | 27 | 
1 files changed, 14 insertions, 13 deletions
diff --git a/unpack-objects.c b/unpack-objects.c index b9ddcb70e0..0d15c00387 100644 --- a/unpack-objects.c +++ b/unpack-objects.c @@ -98,15 +98,22 @@ static void add_delta_to_list(unsigned char *base_sha1, void *delta, unsigned lo  	delta_list = info;  } -static void added_object(unsigned char *sha1, char *type, void *data, unsigned long size); +static void added_object(unsigned char *sha1, const char *type, void *data, unsigned long size); -static int resolve_delta(char *type, +static void write_object(void *buf, unsigned long size, const char *type) +{ +	unsigned char sha1[20]; +	if (write_sha1_file(buf, size, type, sha1) < 0) +		die("failed to write object"); +	added_object(sha1, type, buf, size); +} + +static int resolve_delta(const char *type,  	void *base, unsigned long base_size,   	void *delta, unsigned long delta_size)  {  	void *result;  	unsigned long result_size; -	unsigned char sha1[20];  	result = patch_delta(base, base_size,  			     delta, delta_size, @@ -114,15 +121,12 @@ static int resolve_delta(char *type,  	if (!result)  		die("failed to apply delta");  	free(delta); - -	if (write_sha1_file(result, result_size, type, sha1) < 0) -		die("failed to write object"); -	added_object(sha1, type, result, result_size); +	write_object(result, result_size, type);  	free(result);  	return 0;  } -static void added_object(unsigned char *sha1, char *type, void *data, unsigned long size) +static void added_object(unsigned char *sha1, const char *type, void *data, unsigned long size)  {  	struct delta_info **p = &delta_list;  	struct delta_info *info; @@ -142,8 +146,7 @@ static void added_object(unsigned char *sha1, char *type, void *data, unsigned l  static int unpack_non_delta_entry(enum object_type kind, unsigned long size)  {  	void *buf = get_data(size); -	unsigned char sha1[20]; -	char *type; +	const char *type;  	switch (kind) {  	case OBJ_COMMIT: type = "commit"; break; @@ -152,9 +155,7 @@ static int unpack_non_delta_entry(enum object_type kind, unsigned long size)  	case OBJ_TAG:    type = "tag"; break;  	default: die("bad type %d", kind);  	} -	if (write_sha1_file(buf, size, type, sha1) < 0) -		die("failed to write object"); -	added_object(sha1, type, buf, size); +	write_object(buf, size, type);  	free(buf);  	return 0;  }  | 
