aboutsummaryrefslogtreecommitdiffstats
path: root/sha1_file.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-06-27 03:33:33 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-27 15:27:51 -0700
commitc4584ae3fd7cd595a638a07dfd853e9d2745e930 (patch)
tree735d3d7612055565941f98219ff862ce24ef2c78 /sha1_file.c
parentee85cbc6887d6ae4eb09a3e2c7319f66ae7c9034 (diff)
downloadgit-c4584ae3fd7cd595a638a07dfd853e9d2745e930.tar.gz
[PATCH] Remove "delta" object representation.
Packed delta files created by git-pack-objects seems to be the way to go, and existing "delta" object handling code has exposed the object representation details to too many places. Remove it while we refactor code to come up with a proper interface in sha1_file.c. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'sha1_file.c')
-rw-r--r--sha1_file.c88
1 files changed, 3 insertions, 85 deletions
diff --git a/sha1_file.c b/sha1_file.c
index 6d6073da85..a12da4e238 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -7,7 +7,6 @@
* creation etc.
*/
#include "cache.h"
-#include "delta.h"
#ifndef O_NOATIME
#if defined(__linux__) && (defined(__i386__) || defined(__PPC__))
@@ -410,37 +409,6 @@ void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned l
return unpack_sha1_rest(&stream, hdr, *size);
}
-int sha1_delta_base(const unsigned char *sha1, unsigned char *base_sha1)
-{
- int ret;
- unsigned long mapsize, size;
- void *map;
- z_stream stream;
- char hdr[64], type[20];
- void *delta_data_head;
-
- 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) {
- ret = -1;
- goto out;
- }
- if (strcmp(type, "delta")) {
- ret = 0;
- goto out;
- }
-
- delta_data_head = hdr + strlen(hdr) + 1;
- ret = 1;
- memcpy(base_sha1, delta_data_head, 20);
- out:
- inflateEnd(&stream);
- munmap(map, mapsize);
- return ret;
-}
-
int sha1_file_size(const unsigned char *sha1, unsigned long *sizep)
{
int ret, status;
@@ -448,54 +416,17 @@ int sha1_file_size(const unsigned char *sha1, unsigned long *sizep)
void *map;
z_stream stream;
char hdr[64], type[20];
- const unsigned char *data;
- unsigned char cmd;
- int i;
map = map_sha1_file(sha1, &mapsize);
if (!map)
return -1;
ret = unpack_sha1_header(&stream, map, mapsize, hdr, sizeof(hdr));
- status = -1;
if (ret < Z_OK || parse_sha1_header(hdr, type, &size) < 0)
- goto out;
- if (strcmp(type, "delta")) {
- *sizep = size;
+ status = -1;
+ else {
status = 0;
- goto out;
- }
-
- /* We are dealing with a delta object. Inflated, the first
- * 20 bytes hold the base object SHA1, and delta data follows
- * immediately after it.
- *
- * The initial part of the delta starts at delta_data_head +
- * 20. Borrow code from patch-delta to read the result size.
- */
- data = (unsigned char *)(hdr + strlen(hdr) + 1 + 20);
-
- /* Skip over the source size; we are not interested in
- * it and we cannot verify it because we do not want
- * to read the base object.
- */
- cmd = *data++;
- while (cmd) {
- if (cmd & 1)
- data++;
- cmd >>= 1;
- }
- /* Read the result size */
- size = i = 0;
- cmd = *data++;
- while (cmd) {
- if (cmd & 1)
- size |= *data++ << i;
- i += 8;
- cmd >>= 1;
+ *sizep = size;
}
- *sizep = size;
- status = 0;
- out:
inflateEnd(&stream);
munmap(map, mapsize);
return status;
@@ -510,19 +441,6 @@ void * read_sha1_file(const unsigned char *sha1, char *type, unsigned long *size
if (map) {
buf = unpack_sha1_file(map, mapsize, type, size);
munmap(map, mapsize);
- if (buf && !strcmp(type, "delta")) {
- void *ref = NULL, *delta = buf;
- unsigned long ref_size, delta_size = *size;
- buf = NULL;
- if (delta_size > 20)
- ref = read_sha1_file(delta, type, &ref_size);
- if (ref)
- buf = patch_delta(ref, ref_size,
- delta+20, delta_size-20,
- size);
- free(delta);
- free(ref);
- }
return buf;
}
return NULL;