[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