[dovecot-cvs] dovecot/src/lib-storage/index/mbox mbox-mail.c, 1.8, 1.9 mbox-save.c, 1.50, 1.51 mbox-storage.c, 1.80, 1.81 mbox-storage.h, 1.20, 1.21

cras at procontrol.fi cras at procontrol.fi
Sun Jun 20 09:21:50 EEST 2004


Update of /home/cvs/dovecot/src/lib-storage/index/mbox
In directory talvi:/tmp/cvs-serv4601/lib-storage/index/mbox

Modified Files:
	mbox-mail.c mbox-save.c mbox-storage.c mbox-storage.h 
Log Message:
Filter internal headers from user visible input stream. Make mailbox_save()
use the same header list.



Index: mbox-mail.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-mail.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mbox-mail.c	20 Jun 2004 04:18:12 -0000	1.8
+++ mbox-mail.c	20 Jun 2004 06:21:48 -0000	1.9
@@ -7,6 +7,7 @@
 #include "mbox-file.h"
 #include "mbox-sync-private.h"
 #include "istream-raw-mbox.h"
+#include "istream-header-filter.h"
 
 #include <fcntl.h>
 #include <unistd.h>
@@ -121,8 +122,14 @@
 		// FIXME: need to hide the headers
 		raw_stream = mail->ibox->mbox_stream;
 		offset = istream_raw_mbox_get_header_offset(raw_stream);
-		data->stream = i_stream_create_limit(default_pool, raw_stream,
-						     offset, (uoff_t)-1);
+		raw_stream = i_stream_create_limit(default_pool, raw_stream,
+						   offset, (uoff_t)-1);
+		data->stream =
+			i_stream_create_header_filter(default_pool,
+						      raw_stream,
+						      mbox_hide_headers,
+						      mbox_hide_headers_count);
+		i_stream_unref(raw_stream);
 	}
 
 	return index_mail_init_stream(mail, hdr_size, body_size);

Index: mbox-save.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-save.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- mbox-save.c	20 Jun 2004 03:25:34 -0000	1.50
+++ mbox-save.c	20 Jun 2004 06:21:48 -0000	1.51
@@ -170,33 +170,8 @@
 		return 1;
 	}
 
-	switch (*name) {
-	case 'C':
-	case 'c':
-		if (strcasecmp(name, "Content-Length") == 0)
-			return 0;
-		break;
-	case 'S':
-	case 's':
-		if (strcasecmp(name, "Status") == 0)
-			return 0;
-		break;
-	case 'X':
-	case 'x':
-		if (strcasecmp(name, "X-UID") == 0)
-			return 0;
-		if (strcasecmp(name, "X-Status") == 0)
-			return 0;
-		if (strcasecmp(name, "X-Keywords") == 0)
-			return 0;
-		if (strcasecmp(name, "X-IMAP") == 0)
-			return 0;
-		if (strcasecmp(name, "X-IMAPbase") == 0)
-			return 0;
-		break;
-	}
-
-	return 1;
+	return bsearch(name, mbox_hide_headers, mbox_hide_headers_count,
+		       sizeof(*mbox_hide_headers), bsearch_strcasecmp) == NULL;
 }
 
 static int mbox_save_init_sync(struct mbox_transaction_context *t)

Index: mbox-storage.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-storage.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- mbox-storage.c	19 Jun 2004 20:15:25 -0000	1.80
+++ mbox-storage.c	20 Jun 2004 06:21:48 -0000	1.81
@@ -19,6 +19,18 @@
 
 #define CREATE_MODE 0770 /* umask() should limit it more */
 
+/* NOTE: must be sorted for istream-header-filter. */
+const char *mbox_hide_headers[] = {
+	"Content-Length",
+	"Status",
+	"X-IMAP",
+	"X-IMAPbase",
+	"X-Keywords",
+	"X-Status",
+	"X-UID",
+};
+size_t mbox_hide_headers_count = 7;
+
 extern struct mail_storage mbox_storage;
 extern struct mailbox mbox_mailbox;
 

Index: mbox-storage.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-storage.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- mbox-storage.h	20 Jun 2004 03:25:34 -0000	1.20
+++ mbox-storage.h	20 Jun 2004 06:21:48 -0000	1.21
@@ -18,6 +18,8 @@
 };
 
 extern struct mail mbox_mail;
+extern const char *mbox_hide_headers[];
+extern size_t mbox_hide_headers_count;
 
 int mbox_set_syscall_error(struct index_mailbox *ibox, const char *function);
 



More information about the dovecot-cvs mailing list