X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=read-cache.c;fp=read-cache.c;h=d2aebdd6bc6dbf7ae40f3a7600d76765f31b9a15;hb=5d1a5c02e8ac1c16688ea4a44512245f25a49f8a;hp=0e345bdb2fac523c677c73a1f86ef2b44083c3bf;hpb=455a7f3275d264f6e66045b92c83747ec461dda5;p=git.git diff --git a/read-cache.c b/read-cache.c index 0e345bdb..d2aebdd6 100644 --- a/read-cache.c +++ b/read-cache.c @@ -464,11 +464,15 @@ int read_cache(void) errno = EBUSY; if (active_cache) - return error("more than one cachefile"); + return active_nr; + errno = ENOENT; fd = open(get_index_file(), O_RDONLY); - if (fd < 0) - return (errno == ENOENT) ? 0 : error("open failed"); + if (fd < 0) { + if (errno == ENOENT) + return 0; + die("index file open failed (%s)", strerror(errno)); + } size = 0; // avoid gcc warning map = MAP_FAILED; @@ -480,7 +484,7 @@ int read_cache(void) } close(fd); if (map == MAP_FAILED) - return error("mmap failed"); + die("index file mmap failed (%s)", strerror(errno)); hdr = map; if (verify_hdr(hdr, size) < 0) @@ -501,7 +505,7 @@ int read_cache(void) unmap: munmap(map, size); errno = EINVAL; - return error("verify header failed"); + die("index file corrupt"); } #define WRITE_BUFFER_SIZE 8192