[dovecot-cvs] dovecot/src/lib-mail istream-header-filter.c, 1.9, 1.10 istream-header-filter.h, 1.4, 1.5

cras at dovecot.org cras at dovecot.org
Sun Aug 22 08:54:56 EEST 2004


Update of /home/cvs/dovecot/src/lib-mail
In directory talvi:/tmp/cvs-serv31163/lib-mail

Modified Files:
	istream-header-filter.c istream-header-filter.h 
Log Message:
header filter can now optionally use either LF or CRLF linefeeds.



Index: istream-header-filter.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/istream-header-filter.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- istream-header-filter.c	22 Aug 2004 05:47:22 -0000	1.9
+++ istream-header-filter.c	22 Aug 2004 05:54:54 -0000	1.10
@@ -29,6 +29,7 @@
 
 	unsigned int header_read:1;
 	unsigned int filter:1;
+	unsigned int crlf:1;
 };
 
 static void _close(struct _iostream *stream __attr_unused__)
@@ -87,7 +88,10 @@
 		mstream->cur_line++;
 
 		if (hdr->eoh) {
-			buffer_append(mstream->hdr_buf, "\r\n", 2);
+			if (mstream->crlf)
+				buffer_append(mstream->hdr_buf, "\r\n", 2);
+			else
+				buffer_append_c(mstream->hdr_buf, '\n');
 			break;
 		}
 
@@ -112,7 +116,13 @@
 			}
 			buffer_append(mstream->hdr_buf,
 				      hdr->value, hdr->value_len);
-			buffer_append(mstream->hdr_buf, "\r\n", 2);
+			if (!hdr->no_newline) {
+				if (mstream->crlf) {
+					buffer_append(mstream->hdr_buf,
+						      "\r\n", 2);
+				} else
+					buffer_append_c(mstream->hdr_buf, '\n');
+			}
 
 			if (mstream->skip_count >= mstream->hdr_buf->used) {
 				/* we need more */
@@ -231,7 +241,7 @@
 }
 
 struct istream *
-i_stream_create_header_filter(struct istream *input, int filter,
+i_stream_create_header_filter(struct istream *input, int filter, int crlf,
 			      const char *const *headers, size_t headers_count,
 			      header_filter_callback *callback, void *context)
 {
@@ -255,6 +265,7 @@
 	mstream->callback = callback;
 	mstream->context = context;
 	mstream->filter = filter;
+	mstream->crlf = crlf;
 
 	mstream->istream.iostream.close = _close;
 	mstream->istream.iostream.destroy = _destroy;

Index: istream-header-filter.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/istream-header-filter.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- istream-header-filter.h	22 Aug 2004 02:58:40 -0000	1.4
+++ istream-header-filter.h	22 Aug 2004 05:54:54 -0000	1.5
@@ -9,7 +9,7 @@
 /* NOTE: headers list must be sorted. If filter is TRUE, given headers are
    removed from output, otherwise only given headers are included in output. */
 struct istream *
-i_stream_create_header_filter(struct istream *input, int filter,
+i_stream_create_header_filter(struct istream *input, int filter, int crlf,
 			      const char *const *headers, size_t headers_count,
 			      header_filter_callback *callback, void *context);
 



More information about the dovecot-cvs mailing list