summaryrefslogtreecommitdiffabout
path: root/cache.c
authorLars Hjemli <hjemli@gmail.com>2008-05-18 21:10:05 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-05-18 21:10:05 (UTC)
commit6102bcfce46fd357566941d565b95f78510af79b (patch) (side-by-side diff)
tree95794eda3bdf84e72a6fb32bfa96fb4e0cb147b9 /cache.c
parentc3de425acbc4ae1190ca99e733a72da56c6a082b (diff)
downloadcgit-6102bcfce46fd357566941d565b95f78510af79b.zip
cgit-6102bcfce46fd357566941d565b95f78510af79b.tar.gz
cgit-6102bcfce46fd357566941d565b95f78510af79b.tar.bz2
cache.c: read(2) returns -1 on error, not 0
Noticed-by: Jim Meyering <jim@meyering.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cache.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cache.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/cache.c b/cache.c
index b701e13..add647e 100644
--- a/cache.c
+++ b/cache.c
@@ -31,49 +31,49 @@ struct cache_slot {
int match;
struct stat cache_st;
struct stat lock_st;
int bufsize;
char buf[CACHE_BUFSIZE];
};
/* Open an existing cache slot and fill the cache buffer with
* (part of) the content of the cache file. Return 0 on success
* and errno otherwise.
*/
static int open_slot(struct cache_slot *slot)
{
char *bufz;
int bufkeylen = -1;
slot->cache_fd = open(slot->cache_name, O_RDONLY);
if (slot->cache_fd == -1)
return errno;
if (fstat(slot->cache_fd, &slot->cache_st))
return errno;
slot->bufsize = read(slot->cache_fd, slot->buf, sizeof(slot->buf));
- if (slot->bufsize == 0)
+ if (slot->bufsize < 0)
return errno;
bufz = memchr(slot->buf, 0, slot->bufsize);
if (bufz)
bufkeylen = bufz - slot->buf;
slot->match = bufkeylen == slot->keylen &&
!memcmp(slot->key, slot->buf, bufkeylen + 1);
return 0;
}
/* Close the active cache slot */
static void close_slot(struct cache_slot *slot)
{
if (slot->cache_fd > 0) {
close(slot->cache_fd);
slot->cache_fd = -1;
}
}
/* Print the content of the active cache slot (but skip the key). */
static int print_slot(struct cache_slot *slot)
{