From 1b0c7174a17de801051402ed35ac085ebd91e88c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 29 Mar 2006 22:55:43 -0800 Subject: tree/diff header cleanup. Introduce tree-walk.[ch] and move "struct tree_desc" and associated functions from various places. Rename DIFF_FILE_CANON_MODE(mode) macro to canon_mode(mode) and move it to cache.h. This macro returns the canonicalized st_mode value in the host byte order for files, symlinks and directories -- to be compared with a tree_desc entry. create_ce_mode(mode) in cache.h is similar but is intended to be used for index entries (so it does not work for directories) and returns the value in the network byte order. Signed-off-by: Junio C Hamano --- tree-walk.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tree-walk.h (limited to 'tree-walk.h') diff --git a/tree-walk.h b/tree-walk.h new file mode 100644 index 0000000000..76893e36c3 --- /dev/null +++ b/tree-walk.h @@ -0,0 +1,25 @@ +#ifndef TREE_WALK_H +#define TREE_WALK_H + +struct tree_desc { + void *buf; + unsigned long size; +}; + +struct name_entry { + const unsigned char *sha1; + const char *path; + unsigned int mode; + int pathlen; +}; + +void update_tree_entry(struct tree_desc *); +const unsigned char *tree_entry_extract(struct tree_desc *, const char **, unsigned int *); + +void *fill_tree_descriptor(struct tree_desc *desc, const unsigned char *sha1); + +typedef void (*traverse_callback_t)(int n, unsigned long mask, struct name_entry *entry, const char *base); + +void traverse_trees(int n, struct tree_desc *t, const char *base, traverse_callback_t callback); + +#endif -- cgit v1.2.1