iostream-rawlog.c revision 75157863d633300d814fe630590ccb5310b9fdc2
9563e6542b7a8a13b13a0ef62ec68b0383b99293Timo Sirainen/* Copyright (c) 2011-2015 Dovecot authors, see the included COPYING file */
bc10373fc050eb9dd23f6ed5ee8207d0e4d142eeTimo Sirainenrawlog_write_timestamp(struct rawlog_iostream *rstream, bool line_ends)
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen unsigned char data[MAX_INT_STRLEN + 6 + 1 + 3];
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen if ((rstream->flags & IOSTREAM_RAWLOG_FLAG_TIMESTAMP) == 0)
62300a38f91227b9de043a9a8ec1d4f1978e1138Timo Sirainen buffer_create_from_data(&buf, data, sizeof(data));
654c60f1741fd195878d74a30df90bf130649d64Timo Sirainen if ((rstream->flags & IOSTREAM_RAWLOG_FLAG_BUFFERED) != 0) {
cb951d3282610a9a0960230865bc5f3e3347b203Timo Sirainen str_append_c(&buf, rstream->input ? 'I' : 'O');
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen o_stream_nsend(rstream->rawlog_output, buf.data, buf.used);
c0699d9e0842a53c047fcbd695fa93ce435baa8fTimo Sirainenvoid iostream_rawlog_init(struct rawlog_iostream *rstream,
c0699d9e0842a53c047fcbd695fa93ce435baa8fTimo Sirainen if ((rstream->flags & IOSTREAM_RAWLOG_FLAG_BUFFERED) != 0)
c0699d9e0842a53c047fcbd695fa93ce435baa8fTimo Sirainen rstream->buffer = buffer_create_dynamic(default_pool, 1024);
c0699d9e0842a53c047fcbd695fa93ce435baa8fTimo Siraineniostream_rawlog_write_buffered(struct rawlog_iostream *rstream,
26ada766cfff6ebfb91d100936118cf8aa51e3aeTimo Sirainen const unsigned char *p;
9563e6542b7a8a13b13a0ef62ec68b0383b99293Timo Sirainen while (size > 0) {
7dd64d2faf200cb8b87569cbc3206b54f95c9ff5Aki Tuomi } else if (rstream->buffer->used + size < RAWLOG_MAX_LINE_LEN) {
23ad3970cd22adb6c875caf95fa791548849f0d1Timo Sirainen o_stream_nsend(rstream->rawlog_output, data, pos);
9fd7e883292dab58f3c209f0ec6a8cd11e52075cTimo Siraineniostream_rawlog_write_unbuffered(struct rawlog_iostream *rstream,
3a53aff14d327af2819b4755864b3571703683b8Timo Sirainen rstream->line_continued = data[size-1] != '\n';
797d20c35779d68f2542d3e287c1a869048c8f26Timo Sirainenvoid iostream_rawlog_write(struct rawlog_iostream *rstream,
acbd82bd456316a32f61df67fc41bbff681119c7Timo Sirainen if ((rstream->flags & IOSTREAM_RAWLOG_FLAG_BUFFERED) != 0)
acbd82bd456316a32f61df67fc41bbff681119c7Timo Sirainen iostream_rawlog_write_buffered(rstream, data, size);
de02255bbe97d5d5c54ca1054bb7c9304ee025a1Timo Sirainen iostream_rawlog_write_unbuffered(rstream, data, size);
de02255bbe97d5d5c54ca1054bb7c9304ee025a1Timo Sirainen if (o_stream_nfinish(rstream->rawlog_output) < 0) {
c35e049bf1b9bbee97551bcb029e53a10cafd761Timo Sirainenvoid iostream_rawlog_close(struct rawlog_iostream *rstream)
const char *p, *host;
if (ret != 0) {
static unsigned int counter = 0;
int ret;
counter++;