ostream-rawlog.c revision 6a9bd9f9e6f3af9362160fdc886de116e4b08e9a
45312f52ff3a3d4c137447be4c7556500c2f8bf2Timo Sirainen/* Copyright (c) 2011-2013 Dovecot authors, see the included COPYING file */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenstatic void o_stream_rawlog_close(struct iostream_private *stream)
e86d0d34fe365da4c7ca4312d575bfcbf3a01c0eTimo Sirainen struct rawlog_ostream *rstream = (struct rawlog_ostream *)stream;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen (void)o_stream_flush(rstream->ostream.parent);
31ddc75584c5cde53d2e78a737587f2e7fdcb0d2Timo Siraineno_stream_rawlog_sendv(struct ostream_private *stream,
46c31f64b9f0949f00b7819f45b22f2d64b2ea27Timo Sirainen const struct const_iovec *iov, unsigned int iov_count)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen struct rawlog_ostream *rstream = (struct rawlog_ostream *)stream;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen unsigned int i;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen if ((ret = o_stream_sendv(stream->parent, iov, iov_count)) < 0) {
8fa41238067c854435884c459963fde6f8c6436bTimo Sirainen for (i = 0; i < iov_count && bytes > 0; i++) {
3ccab0bac68040f179a7de45c516cec258e28fdbTimo Siraineno_stream_create_rawlog(struct ostream *output, const char *rawlog_path,
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen int rawlog_fd, enum iostream_rawlog_flags flags)
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen rstream->ostream.sendv = o_stream_rawlog_sendv;
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen rstream->ostream.iostream.close = o_stream_rawlog_close;
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen rstream->riostream.rawlog_path = i_strdup(rawlog_path);
3ccab0bac68040f179a7de45c516cec258e28fdbTimo Sirainen iostream_rawlog_init(&rstream->riostream, flags, FALSE);