[PATCH] git: Mention the '-p' option in the usage help string if git-diff-tree.
[git.git] / read-cache.c
index 2354e80..5703f30 100644 (file)
@@ -13,6 +13,16 @@ int cache_match_stat(struct cache_entry *ce, struct stat *st)
 {
        unsigned int changed = 0;
 
+       switch (ntohl(ce->ce_mode) & S_IFMT) {
+       case S_IFREG:
+               changed |= !S_ISREG(st->st_mode) ? TYPE_CHANGED : 0;
+               break;
+       case S_IFLNK:
+               changed |= !S_ISLNK(st->st_mode) ? TYPE_CHANGED : 0;
+               break;
+       default:
+               die("internal error: ce_mode is %o", ntohl(ce->ce_mode));
+       }
        if (ce->ce_mtime.sec != htonl(st->st_mtime))
                changed |= MTIME_CHANGED;
        if (ce->ce_ctime.sec != htonl(st->st_ctime))
@@ -198,7 +208,7 @@ int read_cache(void)
                size = st.st_size;
                errno = EINVAL;
                if (size >= sizeof(struct cache_header) + 20)
-                       map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
+                       map = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
        }
        close(fd);
        if (-1 == (int)(long)map)