dovecot-2.2: iostream-temp: Improved stream naming.

dovecot at dovecot.org dovecot at dovecot.org
Fri Apr 25 15:04:00 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/1c7ee3ecbfb3
changeset: 17273:1c7ee3ecbfb3
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Apr 25 18:03:36 2014 +0300
description:
iostream-temp: Improved stream naming.

diffstat:

 src/lib/iostream-temp.c |  21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)

diffs (64 lines):

diff -r 767acd575d06 -r 1c7ee3ecbfb3 src/lib/iostream-temp.c
--- a/src/lib/iostream-temp.c	Fri Apr 25 17:29:18 2014 +0300
+++ b/src/lib/iostream-temp.c	Fri Apr 25 18:03:36 2014 +0300
@@ -25,6 +25,7 @@
 	buffer_t *buf;
 	int fd;
 	bool fd_tried;
+	uoff_t fd_size;
 };
 
 static void
@@ -65,6 +66,7 @@
 		i_close_fd(&tstream->fd);
 		return -1;
 	}
+	tstream->fd_size = tstream->buf->used;
 	buffer_free(&tstream->buf);
 	return 0;
 }
@@ -84,6 +86,7 @@
 		bytes += iov[i].iov_len;
 		tstream->ostream.ostream.offset += iov[i].iov_len;
 	}
+	tstream->fd_size += bytes;
 	return bytes;
 }
 
@@ -198,10 +201,14 @@
 		i_assert(stream->ostream.offset == tstream->buf->used);
 		buffer_write(tstream->buf, offset, data, size);
 		stream->ostream.offset = tstream->buf->used;
-	} else if (pwrite_full(tstream->fd, data, size, offset) < 0) {
-		stream->ostream.stream_errno = errno;
-		i_close_fd(&tstream->fd);
-		return -1;
+	} else {
+		if (pwrite_full(tstream->fd, data, size, offset) < 0) {
+			stream->ostream.stream_errno = errno;
+			i_close_fd(&tstream->fd);
+			return -1;
+		}
+		if (tstream->fd_size < offset + size)
+			tstream->fd_size = offset + size;
 	}
 	return 0;
 }
@@ -265,13 +272,15 @@
 	} else if (tstream->fd != -1) {
 		input = i_stream_create_fd(tstream->fd, max_buffer_size, TRUE);
 		i_stream_set_name(input, t_strdup_printf(
-			"(Temp file in %s)", tstream->temp_path_prefix));
+			"(Temp file fd %d in %s, %"PRIuUOFF_T" bytes)",
+			tstream->fd, tstream->temp_path_prefix, tstream->fd_size));
 		tstream->fd = -1;
 	} else {
 		input = i_stream_create_from_data(tstream->buf->data,
 						  tstream->buf->used);
 		i_stream_set_name(input, t_strdup_printf(
-			"(Temp file in %s)", tstream->temp_path_prefix));
+			"(Temp buffer in %s, %"PRIuSIZE_T" bytes)",
+			tstream->temp_path_prefix, tstream->buf->used));
 		i_stream_add_destroy_callback(input, iostream_temp_buf_destroyed,
 					      tstream->buf);
 		tstream->buf = NULL;


More information about the dovecot-cvs mailing list