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