diff options
| -rw-r--r-- | cache.c | 33 | 
1 files changed, 24 insertions, 9 deletions
| @@ -66,12 +66,16 @@ 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;  }  /* Print the content of the active cache slot (but skip the key). */ @@ -116,12 +120,16 @@ 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;  }  /* Create a lockfile used to store the generated content for a cache @@ -134,7 +142,8 @@ static int lock_slot(struct cache_slot *slot)  			     S_IRUSR|S_IWUSR);  	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;  } @@ -150,7 +159,11 @@ static int unlock_slot(struct cache_slot *slot, int replace_old_slot)  		err = rename(slot->lock_name, slot->cache_name);  	else  		err = unlink(slot->lock_name); -	return err; + +	if (err) +		return errno; + +	return 0;  }  /* Generate the content for the current cache slot by redirecting @@ -177,7 +190,9 @@ static int fill_slot(struct cache_slot *slot)  		return errno;  	/* Close the temporary filedescriptor */ -	close(tmp); +	if (close(tmp)) +		return errno; +  	return 0;  } | 
