dovecot: Added -b parameter which writes packet boundaries like ...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 2 12:12:41 EET 2008


details:   http://hg.dovecot.org/dovecot/rev/83a3239808d3
changeset: 7206:83a3239808d3
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Feb 02 12:12:37 2008 +0200
description:
Added -b parameter which writes packet boundaries like <<<packet>>>.

diffstat:

1 file changed, 16 insertions(+), 3 deletions(-)
src/util/rawlog.c |   19 ++++++++++++++++---

diffs (70 lines):

diff -r a17e3d81a517 -r 83a3239808d3 src/util/rawlog.c
--- a/src/util/rawlog.c	Thu Jan 31 21:50:03 2008 +0200
+++ b/src/util/rawlog.c	Sat Feb 02 12:12:37 2008 +0200
@@ -27,7 +27,8 @@ enum rawlog_flags {
 enum rawlog_flags {
 	RAWLOG_FLAG_LOG_INPUT		= 0x01,
 	RAWLOG_FLAG_LOG_OUTPUT		= 0x02,
-	RAWLOG_FLAG_LOG_TIMESTAMPS	= 0x04
+	RAWLOG_FLAG_LOG_TIMESTAMPS	= 0x04,
+	RAWLOG_FLAG_LOG_BOUNDARIES	= 0X10
 };
 
 struct rawlog_proxy {
@@ -79,11 +80,16 @@ static void proxy_write_in(struct rawlog
 	if (proxy->fd_in == -1 || size == 0)
 		return;
 
+	if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0)
+		write_full(proxy->fd_in, "<<<", 3);
+
 	if (write_full(proxy->fd_in, data, size) < 0) {
 		/* failed, disable logging */
 		i_error("write(in) failed: %m");
 		(void)close(proxy->fd_in);
 		proxy->fd_in = -1;
+	} else if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0) {
+		write_full(proxy->fd_in, ">>>\n", 4);
 	}
 }
 
@@ -107,15 +113,20 @@ static void proxy_write_out(struct rawlo
 			i_fatal("Can't write to log file: %m");
 	}
 
+	if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0)
+		write_full(proxy->fd_out, "<<<", 3);
 	if (write_full(proxy->fd_out, data, size) < 0) {
 		/* failed, disable logging */
 		i_error("write(out) failed: %m");
 		(void)close(proxy->fd_out);
 		proxy->fd_out = -1;
+	} else if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0) {
+		write_full(proxy->fd_out, ">>>\n", 4);
 	}
 
 	proxy->last_write = ioloop_time;
-	proxy->last_out_lf = ((const unsigned char *)buf)[size-1] == '\n';
+	proxy->last_out_lf = ((const unsigned char *)buf)[size-1] == '\n' ||
+		(proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0;
 }
 
 static void server_input(struct rawlog_proxy *proxy)
@@ -340,6 +351,8 @@ int main(int argc, char *argv[], char *e
 			flags &= ~RAWLOG_FLAG_LOG_OUTPUT;
 		else if (strcmp(argv[0], "-o") == 0)
 			flags &= ~RAWLOG_FLAG_LOG_INPUT;
+		else if (strcmp(argv[0], "-b") == 0)
+			flags |= RAWLOG_FLAG_LOG_BOUNDARIES;
 		else {
 			argc = 0;
 			break;
@@ -349,7 +362,7 @@ int main(int argc, char *argv[], char *e
 	}
 
 	if (argc < 1)
-		i_fatal("Usage: rawlog [-i | -o] <binary> <arguments>");
+		i_fatal("Usage: rawlog [-i | -o] [-b] <binary> <arguments>");
 
 	executable = argv[0];
 	if (strstr(executable, "/imap") != NULL)


More information about the dovecot-cvs mailing list