-rw-r--r-- | cache.c | 29 |
1 files changed, 22 insertions, 7 deletions
@@ -68,8 +68,12 @@ 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); + if (close(slot->cache_fd)) + err = errno; + else slot->cache_fd = -1; } + return err; } @@ -118,8 +122,12 @@ 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); + if (close(slot->lock_fd)) + err = errno; + else slot->lock_fd = -1; } + return err; } @@ -136,3 +144,4 @@ static int lock_slot(struct cache_slot *slot) 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; @@ -152,3 +161,7 @@ static int unlock_slot(struct cache_slot *slot, int replace_old_slot) err = unlink(slot->lock_name); - return err; + + if (err) + return errno; + + return 0; } @@ -179,3 +192,5 @@ static int fill_slot(struct cache_slot *slot) /* Close the temporary filedescriptor */ - close(tmp); + if (close(tmp)) + return errno; + return 0; |