dovecot-2.2: Added o_stream_get_fd().

dovecot at dovecot.org dovecot at dovecot.org
Sat Aug 11 02:54:03 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/4bcd507e8907
changeset: 14851:4bcd507e8907
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Aug 11 02:53:49 2012 +0300
description:
Added o_stream_get_fd().

diffstat:

 src/lib-compression/ostream-bzlib.c    |  3 ++-
 src/lib-compression/ostream-zlib.c     |  3 ++-
 src/lib-fs/ostream-cmp.c               |  3 ++-
 src/lib-ssl-iostream/ostream-openssl.c |  3 ++-
 src/lib/ostream-buffer.c               |  2 +-
 src/lib/ostream-file.c                 |  4 ++--
 src/lib/ostream-private.h              |  3 ++-
 src/lib/ostream-rawlog.c               |  2 +-
 src/lib/ostream.c                      |  8 +++++++-
 src/lib/ostream.h                      |  3 +++
 10 files changed, 24 insertions(+), 10 deletions(-)

diffs (151 lines):

diff -r 6008a36cb36c -r 4bcd507e8907 src/lib-compression/ostream-bzlib.c
--- a/src/lib-compression/ostream-bzlib.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib-compression/ostream-bzlib.c	Sat Aug 11 02:53:49 2012 +0300
@@ -217,6 +217,7 @@
 
 	zstream->zs.next_out = zstream->outbuf;
 	zstream->zs.avail_out = sizeof(zstream->outbuf);
-	return o_stream_create(&zstream->ostream, output);
+	return o_stream_create(&zstream->ostream, output,
+			       o_stream_get_fd(output));
 }
 #endif
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib-compression/ostream-zlib.c
--- a/src/lib-compression/ostream-zlib.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib-compression/ostream-zlib.c	Sat Aug 11 02:53:49 2012 +0300
@@ -310,7 +310,8 @@
 
 	zstream->zs.next_out = zstream->outbuf;
 	zstream->zs.avail_out = sizeof(zstream->outbuf);
-	return o_stream_create(&zstream->ostream, output);
+	return o_stream_create(&zstream->ostream, output,
+			       o_stream_get_fd(output));
 }
 
 struct ostream *o_stream_create_gz(struct ostream *output, int level)
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib-fs/ostream-cmp.c
--- a/src/lib-fs/ostream-cmp.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib-fs/ostream-cmp.c	Sat Aug 11 02:53:49 2012 +0300
@@ -80,7 +80,8 @@
 	cstream->equals = TRUE;
 	i_stream_ref(input);
 
-	return o_stream_create(&cstream->ostream, output);
+	return o_stream_create(&cstream->ostream, output,
+			       o_stream_get_fd(output));
 }
 
 bool o_stream_cmp_equals(struct ostream *_output)
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib-ssl-iostream/ostream-openssl.c
--- a/src/lib-ssl-iostream/ostream-openssl.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib-ssl-iostream/ostream-openssl.c	Sat Aug 11 02:53:49 2012 +0300
@@ -256,5 +256,6 @@
 	o_stream_set_flush_callback(ssl_io->plain_output,
 				    plain_flush_callback, sstream);
 
-	return o_stream_create(&sstream->ostream, NULL);
+	return o_stream_create(&sstream->ostream, NULL,
+			       o_stream_get_fd(ssl_io->plain_output));
 }
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib/ostream-buffer.c
--- a/src/lib/ostream-buffer.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib/ostream-buffer.c	Sat Aug 11 02:53:49 2012 +0300
@@ -60,7 +60,7 @@
 	bstream->ostream.write_at = o_stream_buffer_write_at;
 
 	bstream->buf = buf;
-	output = o_stream_create(&bstream->ostream, NULL);
+	output = o_stream_create(&bstream->ostream, NULL, -1);
 	o_stream_set_name(output, "(buffer)");
 	return output;
 }
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib/ostream-file.c
--- a/src/lib/ostream-file.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib/ostream-file.c	Sat Aug 11 02:53:49 2012 +0300
@@ -933,7 +933,7 @@
 
 	fstream = o_stream_create_fd_common(fd, autoclose_fd);
 	fstream->ostream.max_buffer_size = max_buffer_size;
-	ostream = o_stream_create(&fstream->ostream, NULL);
+	ostream = o_stream_create(&fstream->ostream, NULL, fd);
 
 	offset = lseek(fd, 0, SEEK_CUR);
 	if (offset >= 0) {
@@ -969,7 +969,7 @@
 	fstream->real_offset = offset;
 	fstream->buffer_offset = offset;
 
-	ostream = o_stream_create(&fstream->ostream, NULL);
+	ostream = o_stream_create(&fstream->ostream, NULL, fd);
 	ostream->offset = offset;
 	return ostream;
 }
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib/ostream-private.h
--- a/src/lib/ostream-private.h	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib/ostream-private.h	Sat Aug 11 02:53:49 2012 +0300
@@ -32,6 +32,7 @@
 
 	struct ostream *parent; /* for filter streams */
 
+	int fd;
 	stream_flush_callback_t *callback;
 	void *context;
 
@@ -41,7 +42,7 @@
 };
 
 struct ostream *
-o_stream_create(struct ostream_private *_stream, struct ostream *parent)
+o_stream_create(struct ostream_private *_stream, struct ostream *parent, int fd)
 	ATTR_NULL(2);
 
 off_t io_stream_copy(struct ostream *outstream, struct istream *instream,
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib/ostream-rawlog.c
--- a/src/lib/ostream-rawlog.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib/ostream-rawlog.c	Sat Aug 11 02:53:49 2012 +0300
@@ -58,5 +58,5 @@
 	rstream->riostream.autoclose_fd = autoclose_fd;
 	rstream->riostream.write_timestamp = TRUE;
 
-	return o_stream_create(&rstream->ostream, output);
+	return o_stream_create(&rstream->ostream, output, -1);
 }
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib/ostream.c
--- a/src/lib/ostream.c	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib/ostream.c	Sat Aug 11 02:53:49 2012 +0300
@@ -20,6 +20,11 @@
 	return stream->real_stream->iostream.name;
 }
 
+int o_stream_get_fd(struct ostream *stream)
+{
+	return stream->real_stream->fd;
+}
+
 void o_stream_destroy(struct ostream **stream)
 {
 	o_stream_close(*stream);
@@ -459,8 +464,9 @@
 }
 
 struct ostream *
-o_stream_create(struct ostream_private *_stream, struct ostream *parent)
+o_stream_create(struct ostream_private *_stream, struct ostream *parent, int fd)
 {
+	_stream->fd = fd;
 	_stream->ostream.real_stream = _stream;
 	if (parent != NULL) {
 		_stream->parent = parent;
diff -r 6008a36cb36c -r 4bcd507e8907 src/lib/ostream.h
--- a/src/lib/ostream.h	Sat Aug 11 02:16:07 2012 +0300
+++ b/src/lib/ostream.h	Sat Aug 11 02:53:49 2012 +0300
@@ -42,6 +42,9 @@
 /* Get output stream's name. Returns "" if stream has no name. */
 const char *o_stream_get_name(struct ostream *stream);
 
+/* Return file descriptor for stream, or -1 if none is available. */
+int o_stream_get_fd(struct ostream *stream);
+
 /* o_stream_close() + o_stream_unref() */
 void o_stream_destroy(struct ostream **stream);
 /* Reference counting. References start from 1, so calling o_stream_unref()


More information about the dovecot-cvs mailing list