dovecot-2.0: doveadm fetch: Don't print mail separator if fetchi...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Apr 30 15:53:25 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/47d49b7edb4b
changeset: 11236:47d49b7edb4b
user: Timo Sirainen <tss at iki.fi>
date: Fri Apr 30 15:53:07 2010 +0300
description:
doveadm fetch: Don't print mail separator if fetching only a specific mail.
diffstat:
src/doveadm/doveadm-mail-fetch.c | 43 +++++++++++++++++++++++++++++++++++++------
1 files changed, 37 insertions(+), 6 deletions(-)
diffs (68 lines):
diff -r 0aa904c74f76 -r 47d49b7edb4b src/doveadm/doveadm-mail-fetch.c
--- a/src/doveadm/doveadm-mail-fetch.c Fri Apr 30 15:43:27 2010 +0300
+++ b/src/doveadm/doveadm-mail-fetch.c Fri Apr 30 15:53:07 2010 +0300
@@ -10,6 +10,7 @@
#include "message-size.h"
#include "imap-util.h"
#include "mail-storage.h"
+#include "mail-search.h"
#include "doveadm-mail.h"
#include "doveadm-mail-list-iter.h"
#include "doveadm-mail-iter.h"
@@ -319,6 +320,32 @@
return doveadm_mail_iter_deinit(&iter);
}
+static bool search_args_have_unique_fetch(struct mail_search_args *args)
+{
+ struct mail_search_arg *arg;
+ const struct seq_range *seqset;
+ unsigned int count;
+ bool have_mailbox = FALSE, have_msg = FALSE;
+
+ for (arg = args->args; arg != NULL; arg = arg->next) {
+ switch (arg->type) {
+ case SEARCH_MAILBOX:
+ case SEARCH_MAILBOX_GUID:
+ have_mailbox = TRUE;
+ break;
+ case SEARCH_SEQSET:
+ case SEARCH_UIDSET:
+ seqset = array_get(&arg->value.seqset, &count);
+ if (count == 1 && seqset->seq1 == seqset->seq2)
+ have_msg = TRUE;
+ break;
+ default:
+ break;
+ }
+ }
+ return have_mailbox && have_msg;
+}
+
void cmd_fetch(struct mail_user *user, const char *const args[])
{
const enum mailbox_list_iter_flags iter_flags =
@@ -339,13 +366,17 @@
ctx.output = o_stream_create_fd(STDOUT_FILENO, 0, FALSE);
- random_fill_weak(prefix_buf, sizeof(prefix_buf));
ctx.hdr = str_new(default_pool, 512);
- str_append(ctx.hdr, "===");
- base64_encode(prefix_buf, sizeof(prefix_buf), ctx.hdr);
- str_append_c(ctx.hdr, '\n');
- ctx.prefix = t_strdup(str_c(ctx.hdr));
- str_truncate(ctx.hdr, 0);
+ if (search_args_have_unique_fetch(ctx.search_args))
+ ctx.prefix = "";
+ else {
+ random_fill_weak(prefix_buf, sizeof(prefix_buf));
+ str_append(ctx.hdr, "===");
+ base64_encode(prefix_buf, sizeof(prefix_buf), ctx.hdr);
+ str_append_c(ctx.hdr, '\n');
+ ctx.prefix = t_strdup(str_c(ctx.hdr));
+ str_truncate(ctx.hdr, 0);
+ }
iter = doveadm_mail_list_iter_init(user, ctx.search_args, iter_flags);
while ((info = doveadm_mail_list_iter_next(iter)) != NULL) T_BEGIN {
More information about the dovecot-cvs
mailing list