instead of the default UIDL format (or X-UIDL: header).
Patch by Nicholas Von Hollen @ Mailtrust.
--HG--
branch : HEAD
{
struct index_mail *mail = (struct index_mail *)_mail;
struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox;
- const char *path, *fname, *end;
+ const char *path, *fname, *end, *uidl;
if (field == MAIL_FETCH_UIDL_FILE_NAME) {
if (_mail->uid != 0) {
end = strchr(fname, MAILDIR_INFO_SEP);
*value_r = end == NULL ? fname : t_strdup_until(fname, end);
return 0;
+ } else if (field == MAIL_FETCH_UIDL_BACKEND) {
+ uidl = maildir_uidlist_lookup_ext(mbox->uidlist, _mail->uid,
+ MAILDIR_UIDLIST_REC_EXT_POP3_UIDL);
+ if (uidl != NULL) {
+ *value_r = uidl;
+ return 0;
+ } else {
+ return -1;
+ }
}
return index_mail_get_special(_mail, field, value_r);
MAIL_FETCH_IMAP_ENVELOPE = 0x00004000,
MAIL_FETCH_FROM_ENVELOPE = 0x00008000,
MAIL_FETCH_HEADER_MD5 = 0x00010000,
- MAIL_FETCH_UIDL_FILE_NAME = 0x00020000
+ MAIL_FETCH_UIDL_FILE_NAME = 0x00020000,
+ MAIL_FETCH_UIDL_BACKEND = 0x00040000
};
enum mailbox_transaction_flags {
str_truncate(str, 0);
str_printfa(str, ctx->message == 0 ? "%u " : "+OK %u ",
ctx->mail->seq);
-
- if (reuse_xuidl &&
- mail_get_first_header(ctx->mail, "X-UIDL", &uidl) > 0)
+
+ if (mail_get_special(ctx->mail, MAIL_FETCH_UIDL_BACKEND,
+ &uidl) == 0)
+ str_append(str, uidl);
+ else if (reuse_xuidl &&
+ mail_get_first_header(ctx->mail, "X-UIDL", &uidl) > 0)
str_append(str, uidl);
else
var_expand(str, uidl_format, tab);