*value_r = p_strdup_printf(mail->imail.mail.data_pool, "%u",
refcount);
return 0;
+ case MAIL_FETCH_REFCOUNT_ID:
+ if (mdbox_mail_lookup(mbox, _mail->transaction->view,
+ _mail->seq, &map_uid) < 0)
+ return -1;
+ *value_r = p_strdup_printf(mail->imail.mail.data_pool, "%u",
+ map_uid);
+ return 0;
case MAIL_FETCH_UIDL_BACKEND:
if (!dbox_header_have_flag(&mbox->box, mbox->hdr_ext_id,
offsetof(struct mdbox_index_header, flags),
*value_r = p_strdup_printf(mail->imail.mail.data_pool, "%lu",
(unsigned long)st.st_nlink);
return 0;
+ case MAIL_FETCH_REFCOUNT_ID:
+ if (sdbox_mail_file_set(mail) < 0)
+ return -1;
+
+ _mail->transaction->stats.fstat_lookup_count++;
+ if (dbox_file_stat(mail->open_file, &st) < 0) {
+ if (errno == ENOENT)
+ mail_set_expunged(_mail);
+ return -1;
+ }
+ *value_r = p_strdup_printf(mail->imail.mail.data_pool, "%llu",
+ (unsigned long long)st.st_ino);
+ return 0;
case MAIL_FETCH_UIDL_BACKEND:
if (!dbox_header_have_flag(&mbox->box, mbox->hdr_ext_id,
offsetof(struct sdbox_index_header, flags),
case MAIL_FETCH_HEADER_MD5:
case MAIL_FETCH_POP3_ORDER:
case MAIL_FETCH_REFCOUNT:
+ case MAIL_FETCH_REFCOUNT_ID:
*value_r = "";
return 0;
case MAIL_FETCH_MAILBOX_NAME:
*value_r = p_strdup_printf(mail->mail.data_pool, "%lu",
(unsigned long)st.st_nlink);
return 0;
+ case MAIL_FETCH_REFCOUNT_ID:
+ if (maildir_mail_stat(_mail, &st) < 0)
+ return -1;
+ *value_r = p_strdup_printf(mail->mail.data_pool, "%llu",
+ (unsigned long long)st.st_ino);
+ return 0;
default:
return index_mail_get_special(_mail, field, value_r);
}
MAIL_FETCH_GUID = 0x00200000,
MAIL_FETCH_POP3_ORDER = 0x00400000,
MAIL_FETCH_REFCOUNT = 0x00800000,
- MAIL_FETCH_BODY_SNIPPET = 0x01000000
+ MAIL_FETCH_BODY_SNIPPET = 0x01000000,
+ MAIL_FETCH_REFCOUNT_ID = 0x02000000,
};
enum mailbox_transaction_flags {