struct object *obj = objs[i];
if (show_unreachable && !(obj->flags & REACHABLE)) {
- printf("unreachable %s\n", sha1_to_hex(obj->sha1));
+ printf("unreachable %s %s\n", obj->type, sha1_to_hex(obj->sha1));
continue;
}
if (map) {
char type[100];
unsigned long size;
- void *buffer = NULL;
- if (!check_sha1_signature(sha1, map, mapsize))
- buffer = unpack_sha1_file(map, mapsize, type,
- &size);
+ void *buffer = unpack_sha1_file(map, mapsize, type, &size);
+ if (!buffer)
+ return -1;
+ if (check_sha1_signature(sha1, buffer, size, type) < 0)
+ printf("sha1 mismatch %s\n", sha1_to_hex(sha1));
munmap(map, mapsize);
- if (buffer && !fsck_entry(sha1, type, buffer, size))
+ if (!fsck_entry(sha1, type, buffer, size))
return 0;
}
}
continue;
}
if (!get_sha1_hex(argv[i], head_sha1)) {
- struct object *obj =
- &lookup_commit(head_sha1)->object;
+ struct object *obj = &lookup_commit(head_sha1)->object;
obj->used = 1;
mark_reachable(obj, REACHABLE);
heads++;