diff options
Diffstat (limited to 'tree-walk.h')
-rw-r--r-- | tree-walk.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tree-walk.h b/tree-walk.h index ae7fb3a824..174eb617df 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -40,7 +40,26 @@ struct traverse_info; typedef int (*traverse_callback_t)(int n, unsigned long mask, unsigned long dirmask, struct name_entry *entry, struct traverse_info *); int traverse_trees(int n, struct tree_desc *t, struct traverse_info *info); +enum follow_symlinks_result { + FOUND = 0, /* This includes out-of-tree links */ + MISSING_OBJECT = -1, /* The initial symlink is missing */ + DANGLING_SYMLINK = -2, /* + * The initial symlink is there, but + * (transitively) points to a missing + * in-tree file + */ + SYMLINK_LOOP = -3, + NOT_DIR = -4, /* + * Somewhere along the symlink chain, a path is + * requested which contains a file as a + * non-final element. + */ +}; + +enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_sha1, const char *name, unsigned char *result, struct strbuf *result_path, unsigned *mode); + struct traverse_info { + const char *traverse_path; struct traverse_info *prev; struct name_entry name; int pathlen; |