diff --git a/cache.h b/cache.h index 5b3cd95aa19e8028a9a5b921135356f30b83a02e..bce48b00df855fdd4adf83ca875a17d16b359f54 100644 --- a/cache.h +++ b/cache.h @@ -59,10 +59,14 @@ struct cache_entry { unsigned int ce_gid; unsigned int ce_size; unsigned char sha1[20]; - unsigned short ce_namelen; + unsigned short ce_flags; char name[0]; }; +#define CE_NAMEMASK (0x0fff) +#define CE_STAGE1 (0x1000) +#define CE_STAGE2 (0x2000) + const char *sha1_file_directory; struct cache_entry **active_cache; unsigned int active_nr, active_alloc; @@ -71,7 +75,7 @@ unsigned int active_nr, active_alloc; #define DEFAULT_DB_ENVIRONMENT ".git/objects" #define cache_entry_size(len) ((offsetof(struct cache_entry,name) + (len) + 8) & ~7) -#define ce_namelen(ce) ntohs((ce)->ce_namelen) +#define ce_namelen(ce) (CE_NAMEMASK & ntohs((ce)->ce_flags)) #define ce_size(ce) cache_entry_size(ce_namelen(ce)) #define alloc_nr(x) (((x)+16)*3/2) diff --git a/read-tree.c b/read-tree.c index 5c6588da4fc95c39e8f5ec8209780509903e56e4..7ee1275b0c603626b9af1103627be070275ed97e 100644 --- a/read-tree.c +++ b/read-tree.c @@ -14,7 +14,7 @@ static int read_one_entry(unsigned char *sha1, const char *base, int baselen, co memset(ce, 0, size); ce->ce_mode = htonl(mode); - ce->ce_namelen = htons(baselen + len); + ce->ce_flags = htons(baselen + len); memcpy(ce->name, base, baselen); memcpy(ce->name + baselen, pathname, len+1); memcpy(ce->sha1, sha1, 20); diff --git a/update-cache.c b/update-cache.c index 065705a9b4350a907ce7e9ac4e661de894f9fd6a..134ba7439891d698c4b82223a9e872d3a77e5edb 100644 --- a/update-cache.c +++ b/update-cache.c @@ -107,7 +107,7 @@ static int add_file_to_cache(char *path) memcpy(ce->name, path, namelen); fill_stat_cache_info(ce, &st); ce->ce_mode = htonl(st.st_mode); - ce->ce_namelen = htons(namelen); + ce->ce_flags = htons(namelen); if (index_fd(path, namelen, ce, fd, &st) < 0) return -1; @@ -259,7 +259,7 @@ static int add_cacheinfo(char *arg1, char *arg2, char *arg3) memcpy(ce->sha1, sha1, 20); memcpy(ce->name, arg3, len); - ce->ce_namelen = htons(len); + ce->ce_flags = htons(len); ce->ce_mode = htonl(mode); return add_cache_entry(ce, allow_add); }