- if (write_sha1_file(buffer, size, type, sha1) < 0)
- die("failed to write %s (%s)",
- sha1_to_hex(entry->sha1), type);
- printf("%s %s\n", sha1_to_hex(sha1), type);
- if (memcmp(sha1, entry->sha1, 20))
- die("resulting %s have wrong SHA1", type);
-
- finish:
- st = 0;
- free(buffer);
- return st;
- err_finish:
- st = -1;
- goto finish;
-}
-
-static int find_pack_entry(unsigned char *sha1, struct pack_entry **ent)
-{
- int *level1_ofs = index_base;
- int hi = ntohl(level1_ofs[*sha1]);
- int lo = ((*sha1 == 0x0) ? 0 : ntohl(level1_ofs[*sha1 - 1]));
- void *index = index_base + 4*256;
-
- do {
- int mi = (lo + hi) / 2;
- int cmp = memcmp(index + 24 * mi + 4, sha1, 20);
- if (!cmp) {
- *ent = index + 24 * mi;
- return 1;
- }
- if (cmp > 0)
- hi = mi;
- else
- lo = mi+1;
- } while (lo < hi);
+ if (write_sha1_file(buf, size, type, sha1) < 0)
+ die("failed to write object");
+ added_object(sha1, type, buf, size);
+ free(buf);