MCPcopy Create free account
hub / github.com/git/git / find_tree_entry

Function find_tree_entry

tree-walk.c:568–603  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

566};
567
568static int find_tree_entry(struct repository *r, struct tree_desc *t,
569 const char *name, struct object_id *result,
570 unsigned short *mode)
571{
572 int namelen = strlen(name);
573 while (t->size) {
574 const char *entry;
575 struct object_id oid;
576 int entrylen, cmp;
577
578 oidcpy(&oid, tree_entry_extract(t, &entry, mode));
579 entrylen = tree_entry_len(&t->entry);
580 update_tree_entry(t);
581 if (entrylen > namelen)
582 continue;
583 cmp = memcmp(name, entry, entrylen);
584 if (cmp > 0)
585 continue;
586 if (cmp < 0)
587 break;
588 if (entrylen == namelen) {
589 oidcpy(result, &oid);
590 return 0;
591 }
592 if (name[entrylen] != '/')
593 continue;
594 if (!S_ISDIR(*mode))
595 break;
596 if (++entrylen == namelen) {
597 oidcpy(result, &oid);
598 return 0;
599 }
600 return get_tree_entry(r, &oid, name + entrylen, result, mode);
601 }
602 return -1;
603}
604
605int get_tree_entry(struct repository *r,
606 const struct object_id *tree_oid,

Callers 2

get_tree_entryFunction · 0.85

Calls 5

oidcpyFunction · 0.85
tree_entry_extractFunction · 0.85
tree_entry_lenFunction · 0.85
update_tree_entryFunction · 0.85
get_tree_entryFunction · 0.85

Tested by

no test coverage detected