X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=read-cache.c;h=d2aebdd6bc6dbf7ae40f3a7600d76765f31b9a15;hb=d1c5f2a42d7b5c0e3d3862212dea1f09809c4963;hp=0e345bdb2fac523c677c73a1f86ef2b44083c3bf;hpb=6b5ee137e56af8093391411389dd4b18416707ec;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