Clean up write_in_full() users
With the new-and-improved write_in_full() semantics, where a partial write simply always returns a real error (and always sets 'errno' when that happens, including for the disk full case), a lot of the callers of write_in_full() were just unnecessarily complex. In particular, there's no reason to ever check for a zero length or return: if the length was zero, we'll return zero, otherwise, if a disk full resulted in the actual write() system call returning zero the write_in_full() logic would have correctly turned that into a negative return value, with 'errno' set to ENOSPC. I really wish every "write_in_full()" user would just check against "<0" now, but this fixes the nasty and stupid ones. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
9bbaa6cc68
commit
d34cf19b89
@ -1618,14 +1618,7 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
|
||||
|
||||
static int write_buffer(int fd, const void *buf, size_t len)
|
||||
{
|
||||
ssize_t size;
|
||||
|
||||
if (!len)
|
||||
return 0;
|
||||
size = write_in_full(fd, buf, len);
|
||||
if (!size)
|
||||
return error("file write: disk full");
|
||||
if (size < 0)
|
||||
if (write_in_full(fd, buf, len) < 0)
|
||||
return error("file write error (%s)", strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user