use the same header list.
--HG--
branch : HEAD
#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>
// 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);
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)
#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;
};
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);