summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c4584ae)
raw | patch | inline | side by side (parent: c4584ae)
author | Junio C Hamano <junkio@cox.net> | |
Mon, 27 Jun 2005 10:34:06 +0000 (03:34 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Mon, 27 Jun 2005 22:27:51 +0000 (15:27 -0700) |
This lets us eliminate one use of map_sha1_file() outside
sha1_file.c, to bring us one step closer to the packed GIT.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
sha1_file.c, to bring us one step closer to the packed GIT.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
cache.h | patch | blob | history | |
diff.c | patch | blob | history | |
pack-objects.c | patch | blob | history | |
sha1_file.c | patch | blob | history |
index 765438d8f8c668f0294f084815d22105fab03a53..383fc866416e68d68e91255de8c5ab600e667d5a 100644 (file)
--- a/cache.h
+++ b/cache.h
extern void * map_sha1_file(const unsigned char *sha1, unsigned long *size);
extern int unpack_sha1_header(z_stream *stream, void *map, unsigned long mapsize, void *buffer, unsigned long size);
extern int parse_sha1_header(char *hdr, char *type, unsigned long *sizep);
-extern int sha1_file_size(const unsigned char *, unsigned long *);
+extern int sha1_object_info(const unsigned char *, char *, unsigned long *);
extern void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned long *size);
extern void * read_sha1_file(const unsigned char *sha1, char *type, unsigned long *size);
extern int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned char *return_sha1);
index 5cb340ca093a4f2285d2c40ee8e83ed0af14cff1..a72029058e195c596ab958e26cc0176cb0dc6b1c 100644 (file)
--- a/diff.c
+++ b/diff.c
s->size = e->size;
return 0;
}
- if (!sha1_file_size(s->sha1, &s->size))
+ if (!sha1_object_info(s->sha1, type, &s->size))
locate_size_cache(s->sha1, 0, s->size);
}
else {
diff --git a/pack-objects.c b/pack-objects.c
index 102af3054bc27e864117663628c69a5beb8c26a5..62ed265437bd7430ca9645151a2aa2d7c3aa4062 100644 (file)
--- a/pack-objects.c
+++ b/pack-objects.c
static void check_object(struct object_entry *entry)
{
- char buffer[128];
- char type[10];
- unsigned long mapsize;
- z_stream stream;
- void *map;
-
- map = map_sha1_file(entry->sha1, &mapsize);
- if (!map)
- die("unable to map %s", sha1_to_hex(entry->sha1));
- if (unpack_sha1_header(&stream, map, mapsize, buffer, sizeof(buffer)) < 0)
- die("unable to unpack %s header", sha1_to_hex(entry->sha1));
- munmap(map, mapsize);
- if (parse_sha1_header(buffer, type, &entry->size) < 0)
- die("unable to parse %s header", sha1_to_hex(entry->sha1));
- if (!strcmp(type, "commit")) {
- entry->type = OBJ_COMMIT;
- } else if (!strcmp(type, "tree")) {
- entry->type = OBJ_TREE;
- } else if (!strcmp(type, "blob")) {
- entry->type = OBJ_BLOB;
- } else
- die("unable to pack object %s of type %s", sha1_to_hex(entry->sha1), type);
+ char type[20];
+
+ if (!sha1_object_info(entry->sha1, type, &entry->size)) {
+ if (!strcmp(type, "commit")) {
+ entry->type = OBJ_COMMIT;
+ } else if (!strcmp(type, "tree")) {
+ entry->type = OBJ_TREE;
+ } else if (!strcmp(type, "blob")) {
+ entry->type = OBJ_BLOB;
+ } else
+ die("unable to pack object %s of type %s",
+ sha1_to_hex(entry->sha1), type);
+ }
+ else
+ die("unable to get type of object %s",
+ sha1_to_hex(entry->sha1));
}
static void get_object_details(void)
diff --git a/sha1_file.c b/sha1_file.c
index a12da4e238cad6981507a96576bcf5cfad359f6b..4225c67c5b3f76ec8c20a4878e519a82a8b1ccae 100644 (file)
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -409,20 +409,22 @@ void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned l
return unpack_sha1_rest(&stream, hdr, *size);
}
-int sha1_file_size(const unsigned char *sha1, unsigned long *sizep)
+int sha1_object_info(const unsigned char *sha1, char *type, unsigned long *sizep)
{
- int ret, status;
+ int status;
unsigned long mapsize, size;
void *map;
z_stream stream;
- char hdr[64], type[20];
+ char hdr[128];
map = map_sha1_file(sha1, &mapsize);
if (!map)
- return -1;
- ret = unpack_sha1_header(&stream, map, mapsize, hdr, sizeof(hdr));
- if (ret < Z_OK || parse_sha1_header(hdr, type, &size) < 0)
- status = -1;
+ return error("unable to map %s", sha1_to_hex(sha1));
+ if (unpack_sha1_header(&stream, map, mapsize, hdr, sizeof(hdr)) < 0)
+ status = error("unable to unpack %s header",
+ sha1_to_hex(sha1));
+ if (parse_sha1_header(hdr, type, &size) < 0)
+ status = error("unable to parse %s header", sha1_to_hex(sha1));
else {
status = 0;
*sizep = size;