summaryrefslogtreecommitdiff
path: root/cache.h
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-03-30 06:55:43 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-03-30 07:54:13 (GMT)
commit1b0c7174a17de801051402ed35ac085ebd91e88c (patch)
tree31a806fd8bf26fe1ecf42f62c82bb68f16fbc150 /cache.h
parente464f4c3119b04712ab87329f3dd4d4f21b0a8a7 (diff)
downloadgit-1b0c7174a17de801051402ed35ac085ebd91e88c.zip
git-1b0c7174a17de801051402ed35ac085ebd91e88c.tar.gz
git-1b0c7174a17de801051402ed35ac085ebd91e88c.tar.bz2
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 <junkio@cox.net>
Diffstat (limited to 'cache.h')
-rw-r--r--cache.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/cache.h b/cache.h
index 255e6b5..69801b0 100644
--- a/cache.h
+++ b/cache.h
@@ -106,6 +106,9 @@ static inline unsigned int create_ce_mode(unsigned int mode)
return htonl(S_IFLNK);
return htonl(S_IFREG | ce_permissions(mode));
}
+#define canon_mode(mode) \
+ (S_ISREG(mode) ? (S_IFREG | ce_permissions(mode)) : \
+ S_ISLNK(mode) ? S_IFLNK : S_IFDIR)
#define cache_entry_size(len) ((offsetof(struct cache_entry,name) + (len) + 8) & ~7)