-static void *fill_tree_descriptor(struct tree_desc *desc, const unsigned char *sha1)
-{
- unsigned long size = 0;
- void *buf = NULL;
-
- if (sha1) {
- buf = read_object_with_reference(sha1, "tree", &size, NULL);
- if (!buf)
- die("unable to read tree %s", sha1_to_hex(sha1));
- }
- desc->size = size;
- desc->buf = buf;
- return buf;
-}
-
-struct name_entry {
- const unsigned char *sha1;
- const char *path;
- unsigned int mode;
- int pathlen;
-};
-
-static void entry_clear(struct name_entry *a)
-{
- memset(a, 0, sizeof(*a));
-}
-
-static int entry_compare(struct name_entry *a, struct name_entry *b)
-{
- return base_name_compare(
- a->path, a->pathlen, a->mode,
- b->path, b->pathlen, b->mode);
-}
-
-static void entry_extract(struct tree_desc *t, struct name_entry *a)
-{
- a->sha1 = tree_entry_extract(t, &a->path, &a->mode);
- a->pathlen = strlen(a->path);
-}
-