-rw-r--r-- | cache.c | 33 |
1 files changed, 24 insertions, 9 deletions
@@ -67,10 +67,14 @@ static int open_slot(struct cache_slot *slot) /* Close the active cache slot */ -static void close_slot(struct cache_slot *slot) +static int close_slot(struct cache_slot *slot) { + int err = 0; if (slot->cache_fd > 0) { - close(slot->cache_fd); - slot->cache_fd = -1; + if (close(slot->cache_fd)) + err = errno; + else + slot->cache_fd = -1; } + return err; } @@ -117,10 +121,14 @@ static int is_modified(struct cache_slot *slot) /* Close an open lockfile */ -static void close_lock(struct cache_slot *slot) +static int close_lock(struct cache_slot *slot) { + int err = 0; if (slot->lock_fd > 0) { - close(slot->lock_fd); - slot->lock_fd = -1; + if (close(slot->lock_fd)) + err = errno; + else + slot->lock_fd = -1; } + return err; } @@ -135,5 +143,6 @@ static int lock_slot(struct cache_slot *slot) if (slot->lock_fd == -1) return errno; - write(slot->lock_fd, slot->key, slot->keylen + 1); + if (write(slot->lock_fd, slot->key, slot->keylen + 1) < 0) + return errno; return 0; } @@ -151,5 +160,9 @@ static int unlock_slot(struct cache_slot *slot, int replace_old_slot) else err = unlink(slot->lock_name); - return err; + + if (err) + return errno; + + return 0; } @@ -178,5 +191,7 @@ static int fill_slot(struct cache_slot *slot) /* Close the temporary filedescriptor */ - close(tmp); + if (close(tmp)) + return errno; + return 0; } |