-static int get_parent(int index, const char *str, unsigned char *result)
-{
- unsigned char sha1[20];
- char *buffer;
- unsigned long size, offset;
- int ret;
-
- if (get_sha1(str, sha1) < 0)
- return -1;
- buffer = read_object_with_reference(sha1, "commit", &size, NULL);
- if (!buffer)
- return -1;
- ret = -1;
- offset = 46;
- for (;;) {
- if (offset + 48 > size)
- break;
- if (memcmp(buffer + offset, "parent ", 7))
- break;
- if (index > 0) {
- offset += 48;
- index--;
- continue;
- }
- ret = get_sha1_hex(buffer + offset + 7, result);
- break;
- }
- free(buffer);
- return ret;
-}
-