changeset 6851:6a9080055e54 HEAD

Handle write failures with files better.
author Timo Sirainen <tss@iki.fi>
date Sat, 24 Nov 2007 06:59:08 +0200
parents c8f6eec5e996
children 6ed01546f211
files src/lib/ostream-file.c
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/ostream-file.c	Sat Nov 24 06:51:27 2007 +0200
+++ b/src/lib/ostream-file.c	Sat Nov 24 06:59:08 2007 +0200
@@ -205,7 +205,8 @@
 		if (ret > 0) {
 			fstream->real_offset += ret;
 			ret += sent;
-		} else {
+		} else if (!fstream->file) {
+			/* return what we managed to get sent */
 			ret = sent;
 		}
 	}
@@ -217,6 +218,12 @@
 		stream_closed(fstream);
 		return -1;
 	}
+	if (unlikely(ret == 0 && fstream->file)) {
+		/* assume out of disk space */
+		fstream->ostream.ostream.stream_errno = ENOSPC;
+		stream_closed(fstream);
+		return -1;
+	}
 
 	fstream->buffer_offset += ret;
 	return ret;