diff options
Diffstat (limited to 'cache.h')
-rw-r--r-- | cache.h | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -87,7 +87,14 @@ struct cache_entry { #define ce_stage(ce) ((CE_STAGEMASK & ntohs((ce)->ce_flags)) >> CE_STAGESHIFT) #define ce_permissions(mode) (((mode) & 0100) ? 0755 : 0644) -#define create_ce_mode(mode) htonl(S_IFREG | ce_permissions(mode)) +static inline unsigned int create_ce_mode(unsigned int mode) +{ + if (S_ISREG(mode)) + return htonl(S_IFREG | ce_permissions(mode)); + if (S_ISLNK(mode)) + return htonl(S_IFLNK); + return htonl(mode); +} #define cache_entry_size(len) ((offsetof(struct cache_entry,name) + (len) + 8) & ~7) @@ -124,6 +131,7 @@ extern int index_fd(unsigned char *sha1, int fd, struct stat *st); #define MODE_CHANGED 0x0008 #define INODE_CHANGED 0x0010 #define DATA_CHANGED 0x0020 +#define TYPE_CHANGED 0x0040 /* Return a statically allocated filename matching the sha1 signature */ extern char *sha1_file_name(const unsigned char *sha1); |