summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f925339)
raw | patch | inline | side by side (parent: f925339)
author | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Wed, 29 Jun 2005 16:38:02 +0000 (09:38 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Wed, 29 Jun 2005 16:38:02 +0000 (09:38 -0700) |
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.
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.
unpack-objects.c | patch | blob | history |
diff --git a/unpack-objects.c b/unpack-objects.c
index b9ddcb70e0b653865716e5b78e4035028d651c9e..0d15c0038713bfc5bdd732293a434e7921719e48 100644 (file)
--- 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,
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;
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;
}