write_in_full: really write in full or return error on disk full.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Linus Torvalds 2007-01-11 13:04:11 -08:00 committed by Junio C Hamano
parent d145144c3b
commit f6aa66cb95

View File

@ -37,15 +37,14 @@ int write_in_full(int fd, const void *buf, size_t count)
{ {
const char *p = buf; const char *p = buf;
ssize_t total = 0; ssize_t total = 0;
ssize_t written = 0;
while (count > 0) { while (count > 0) {
written = xwrite(fd, p, count); size_t written = xwrite(fd, p, count);
if (written <= 0) { if (written < 0)
if (total) return -1;
return total; if (!written) {
else errno = ENOSPC;
return written; return -1;
} }
count -= written; count -= written;
p += written; p += written;