Very few places actually want to drop recent flags, so this way is easier.
return -1;
}
- box = mailbox_alloc(ns->list, name, MAILBOX_FLAG_SAVEONLY |
- MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ns->list, name, MAILBOX_FLAG_SAVEONLY);
if (mailbox_create(box, NULL, FALSE) < 0) {
errstr = mailbox_get_last_error(box, &error);
if (error != MAIL_ERROR_EXISTS) {
int ret = 0;
box = mailbox_alloc(info->ns->list, info->name,
- MAILBOX_FLAG_KEEP_RECENT |
MAILBOX_FLAG_IGNORE_ACLS);
if (ctx->max_recent_msgs != 0) {
/* index only if there aren't too many recent messages.
iter = i_new(struct doveadm_mail_iter, 1);
iter->box = mailbox_alloc(info->ns->list, info->name,
- MAILBOX_FLAG_KEEP_RECENT |
MAILBOX_FLAG_IGNORE_ACLS);
iter->search_args = search_args;
if (ns == NULL)
i_fatal("Can't find namespace for: %s", ctx->destname);
- destbox = mailbox_alloc(ns->list, ctx->destname,
- MAILBOX_FLAG_SAVEONLY |
- MAILBOX_FLAG_KEEP_RECENT);
+ destbox = mailbox_alloc(ns->list, ctx->destname, MAILBOX_FLAG_SAVEONLY);
storage = mailbox_get_storage(destbox);
if (mailbox_open(destbox) < 0) {
i_error("Can't open mailbox '%s': %s", ctx->destname,
if (ns == NULL)
i_fatal("Can't find namespace for mailbox %s", mailbox);
- return mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_KEEP_RECENT |
- MAILBOX_FLAG_IGNORE_ACLS);
+ return mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_IGNORE_ACLS);
}
static int
(struct local_dsync_worker_mailbox_iter *)_iter;
struct local_dsync_worker *worker =
(struct local_dsync_worker *)_iter->worker;
- const enum mailbox_flags flags =
- MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT;
+ const enum mailbox_flags flags = MAILBOX_FLAG_READONLY;
const enum mailbox_status_items status_items =
STATUS_UIDNEXT | STATUS_UIDVALIDITY |
STATUS_HIGHESTMODSEQ | STATUS_FIRST_RECENT_UID;
const mailbox_guid_t *guid,
struct mailbox **box_r)
{
- enum mailbox_flags flags = MAILBOX_FLAG_KEEP_RECENT;
struct local_dsync_mailbox *lbox;
struct mailbox *box;
struct mailbox_metadata metadata;
return 0;
}
- box = mailbox_alloc(lbox->ns->list, lbox->name, flags);
+ box = mailbox_alloc(lbox->ns->list, lbox->name, 0);
if (mailbox_sync(box, 0) < 0 ||
mailbox_get_metadata(box, MAILBOX_METADATA_GUID, &metadata) < 0) {
i_error("Failed to sync mailbox %s: %s", lbox->name,
int ret = 0;
if (readonly)
- flags |= MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT;
+ flags |= MAILBOX_FLAG_READONLY;
+ else
+ flags |= MAILBOX_FLAG_DROP_RECENT;
ctx->box = mailbox_alloc(ctx->ns->list, mailbox, flags);
if (mailbox_open(ctx->box) < 0) {
client_send_storage_error(ctx->cmd,
*destbox_r = cmd->client->mailbox;
return 0;
}
- box = mailbox_alloc(ns->list, name,
- MAILBOX_FLAG_SAVEONLY | MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ns->list, name, MAILBOX_FLAG_SAVEONLY);
if (mailbox_open(box) < 0) {
error_string = mailbox_get_last_error(box, &error);
if (error == MAIL_ERROR_NOTFOUND) {
box = client->mailbox;
} else {
/* open the mailbox */
- box = mailbox_alloc(ns->list, mailbox,
- MAILBOX_FLAG_READONLY |
- MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_READONLY);
if (client->enabled_features != 0)
(void)mailbox_enable(box, client->enabled_features);
}
/* FIXME: the current lib-storage API doesn't allow sending
"n% competed" notifications */
- box = mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ns->list, mailbox, 0);
if (max_recent_msgs != 0) {
/* index only if there aren't too many recent messages.
don't bother syncing the mailbox, that alone can take a
struct mail_namespace *ns;
struct mailbox *box;
enum mailbox_flags flags =
- MAILBOX_FLAG_KEEP_RECENT | MAILBOX_FLAG_SAVEONLY |
- MAILBOX_FLAG_POST_SESSION;
+ MAILBOX_FLAG_SAVEONLY | MAILBOX_FLAG_POST_SESSION;
*box_r = NULL;
*error_r = MAIL_ERROR_NONE;
int ret;
box = mailbox_alloc(ns->list, vname, MAILBOX_FLAG_READONLY |
- MAILBOX_FLAG_KEEP_RECENT |
MAILBOX_FLAG_IGNORE_ACLS);
i_assert(box->storage == &ctx->storage->storage.storage);
if (mailbox_open(box) < 0) {
while (box == NULL) {
box = mailbox_alloc(ctx->default_list, mailbox,
MAILBOX_FLAG_READONLY |
- MAILBOX_FLAG_KEEP_RECENT |
MAILBOX_FLAG_IGNORE_ACLS);
i_assert(box->storage == storage);
if (mailbox_open(box) == 0)
{
enum mail_index_sync_flags sync_flags = 0;
- if ((box->flags & MAILBOX_FLAG_KEEP_RECENT) == 0)
+ if ((box->flags & MAILBOX_FLAG_DROP_RECENT) != 0)
sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT;
if (box->deleting)
sync_flags |= MAIL_INDEX_SYNC_FLAG_DELETING_INDEX;
}
index_mailbox_expunge_unseen_recent(ctx);
- if ((_ctx->box->flags & MAILBOX_FLAG_KEEP_RECENT) != 0 &&
+ if ((_ctx->box->flags & MAILBOX_FLAG_DROP_RECENT) == 0 &&
_ctx->box->opened) {
/* mailbox syncing didn't necessarily update our recent state */
index_sync_update_recent_count(_ctx->box);
next_uid = maildir_save_set_recent_flags(ctx);
} T_END;
- if ((mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0)
+ if ((mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) != 0)
first_recent_uid = next_uid;
else if (ctx->last_nonrecent_uid != 0)
first_recent_uid = ctx->last_nonrecent_uid + 1;
dest = t_str_new(1024);
move_new = new_dir && !mailbox_is_readonly(&ctx->mbox->box) &&
- (ctx->mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0 &&
+ (ctx->mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) != 0 &&
ctx->locked;
errno = 0;
/* if there are files in new/, we'll need to move them. we'll check
this by seeing if we have any recent messages */
- if ((mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) {
+ if ((mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) != 0) {
if (!*new_changed_r)
*new_changed_r = have_recent_messages(ctx, FALSE);
} else if (*new_changed_r) {
if (*new_changed_r || *cur_changed_r)
return 1;
- if ((mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0)
+ if ((mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) != 0)
flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT;
if (mbox->synced) {
struct stat st;
if (ibox->recent_flags_count > 0 &&
- (mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) != 0 &&
+ (mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) == 0 &&
mbox->mbox_fd != -1 && !mbox_is_backend_readonly(mbox)) {
/* we've seen recent messages which we want to keep recent.
keep file's atime lower than mtime so \Marked status
return ret;
}
- if ((mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) {
+ if ((mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) != 0) {
/* see if we need to drop recent flags */
sync_ctx.hdr = mail_index_get_header(sync_view);
if (sync_ctx.hdr->first_recent_uid < sync_ctx.hdr->next_uid)
memset(&sync_ctx, 0, sizeof(sync_ctx));
sync_ctx.mbox = mbox;
sync_ctx.keep_recent =
- (mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) != 0;
+ (mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) == 0;
sync_ctx.hdr = mail_index_get_header(sync_view);
sync_ctx.from_line = str_new(default_pool, 256);
&ctx->info.flags);
}
- box = mailbox_alloc(ctx->ctx.list, ctx->info.name,
- MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ctx->ctx.list, ctx->info.name, 0);
index_mailbox_list_status_set_info_flags(box, node->uid,
&ctx->info.flags);
mailbox_free(&box);
bool auto_boxes =
(ctx->ctx.flags & MAILBOX_LIST_ITER_NO_AUTO_BOXES) == 0;
- box = mailbox_alloc(ctx->ctx.list, list_path,
- MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ctx->ctx.list, list_path, 0);
ret = mailbox_exists(box, auto_boxes, &existence);
mailbox_free(&box);
MAILBOX_FLAG_READONLY = 0x01,
/* Only saving/copying mails to mailbox works. */
MAILBOX_FLAG_SAVEONLY = 0x02,
- /* Don't reset MAIL_RECENT flags when syncing */
- MAILBOX_FLAG_KEEP_RECENT = 0x08,
+ /* Remove MAIL_RECENT flags when syncing */
+ MAILBOX_FLAG_DROP_RECENT = 0x04,
/* Don't create index files for the mailbox */
MAILBOX_FLAG_NO_INDEX_FILES = 0x10,
/* Keep mailbox exclusively locked all the time while it's open */
(MAILBOX_NOSELECT | MAILBOX_NONEXISTENT)) != 0)
continue;
- box = mailbox_alloc(list, info->name, MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(list, info->name, 0);
if (mailbox_get_metadata(box, MAILBOX_METADATA_GUID,
&metadata) < 0) {
i_error("Couldn't get mailbox %s GUID: %s",
enum mailbox_existence existence;
int ret;
- box = mailbox_alloc(list, "INBOX", MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(list, "INBOX", 0);
ret = mailbox_exists(box, FALSE, &existence);
mailbox_free(&box);
if (ret < 0) {
return -1;
}
box = mailbox_alloc(ns->list, mailbox,
- MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT |
- MAILBOX_FLAG_IGNORE_ACLS);
+ MAILBOX_FLAG_READONLY | MAILBOX_FLAG_IGNORE_ACLS);
if (mailbox_open(box) < 0) {
i_error("Can't open mailbox %s: %s", mailbox,
mailbox_get_last_error(box, NULL));
return -1;
}
box = mailbox_alloc(ns->list, mailbox,
- MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT |
- MAILBOX_FLAG_IGNORE_ACLS);
+ MAILBOX_FLAG_READONLY | MAILBOX_FLAG_IGNORE_ACLS);
if (mailbox_open(box) < 0) {
path = mailbox_list_get_path(ns->list, box->name,
MAILBOX_LIST_PATH_TYPE_MAILBOX);
if (ctx->box != NULL)
rescan_finish(ctx);
- ctx->box = mailbox_alloc_guid(ctx->index->list,
- guid, MAILBOX_FLAG_KEEP_RECENT);
+ ctx->box = mailbox_alloc_guid(ctx->index->list, guid,
+ (enum mailbox_flags)0);
if (mailbox_open(ctx->box) < 0) {
enum mail_error error;
const char *errstr;
iter = mailbox_list_iter_init(index->list, "*", iter_flags);
while ((info = mailbox_list_iter_next(iter)) != NULL) {
box = mailbox_alloc(index->list, info->name,
- MAILBOX_FLAG_KEEP_RECENT);
+ (enum mailbox_flags)0);
if (mailbox_get_metadata(box, MAILBOX_METADATA_GUID,
&metadata) == 0 &&
(guids == NULL ||
struct fts_index_header hdr;
int ret;
- box = mailbox_alloc(list, "INBOX", MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(list, "INBOX", 0);
if (mailbox_sync(box, (enum mailbox_sync_flags)0) < 0) {
i_error("lucene: Failed to sync mailbox INBOX: %s",
mailbox_get_last_error(box, NULL));
#define ERROR_NOT_ADMIN "["IMAP_RESP_CODE_NOPERM"] " \
"You lack administrator privileges on this mailbox."
-#define ACL_MAILBOX_FLAGS \
- (MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT)
-
#define IMAP_ACL_ANYONE "anyone"
#define IMAP_ACL_AUTHENTICATED "authenticated"
#define IMAP_ACL_OWNER "owner"
/* Force opening the mailbox so that we can give a nicer error message
if mailbox isn't selectable but is listable. */
- box = mailbox_alloc(ns->list, name, ACL_MAILBOX_FLAGS |
+ box = mailbox_alloc(ns->list, name, MAILBOX_FLAG_READONLY |
MAILBOX_FLAG_IGNORE_ACLS);
ret = acl_mailbox_right_lookup(box, ACL_STORAGE_RIGHT_ADMIN);
if (ret > 0)
return TRUE;
box = mailbox_alloc(ns->list, mailbox,
- ACL_MAILBOX_FLAGS | MAILBOX_FLAG_IGNORE_ACLS);
+ MAILBOX_FLAG_READONLY | MAILBOX_FLAG_IGNORE_ACLS);
if (acl_object_get_my_rights(acl_mailbox_get_aclobj(box),
pool_datastack_create(), &rights) < 0) {
client_send_tagline(cmd, "NO "MAIL_ERRSTR_CRITICAL_MSG);
return TRUE;
}
- box = mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_READONLY |
- MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_READONLY);
/* build QUOTAROOT reply and QUOTA reply for all quota roots */
quotaroot_reply = t_str_new(128);
/* add expunge namespace prefix */
name = t_strconcat(list->ns->prefix, name, NULL);
- box = mailbox_alloc(list, name, MAILBOX_FLAG_KEEP_RECENT |
- MAILBOX_FLAG_NO_INDEX_FILES);
+ box = mailbox_alloc(list, name, MAILBOX_FLAG_NO_INDEX_FILES);
if (mailbox_open(box) == 0) {
*error_r = NULL;
return box;
return 0;
}
- box = mailbox_alloc(ns->list, vname,
- MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT);
+ box = mailbox_alloc(ns->list, vname, MAILBOX_FLAG_READONLY);
if (mailbox_sync(box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) {
error = mailbox_get_last_mail_error(box);
mailbox_free(&box);
sbox->module_ctx.super = *v;
box->vlast = &sbox->module_ctx.super;
- sbox->snarf_box = mailbox_alloc(snarf_list, snarf_name,
- MAILBOX_FLAG_KEEP_RECENT);
+ sbox->snarf_box = mailbox_alloc(snarf_list, snarf_name, 0);
v->sync_init = snarf_sync_init;
v->free = snarf_mailbox_free;
{
struct mail_search_args *search_args;
- trash->box = mailbox_alloc(trash->ns->list, trash->name,
- MAILBOX_FLAG_KEEP_RECENT);
+ trash->box = mailbox_alloc(trash->ns->list, trash->name, 0);
if (mailbox_open(trash->box) < 0) {
mailbox_free(&trash->box);
return 0;
i_assert(bbox->box == NULL);
- if (!bbox->clear_recent)
- flags |= MAILBOX_FLAG_KEEP_RECENT;
+ if (bbox->clear_recent)
+ flags |= MAILBOX_FLAG_DROP_RECENT;
mailbox = bbox->name;
ns = mail_namespace_find(user->namespaces, mailbox);
index_sync_flags = MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY |
MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES;
- if ((mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0)
+ if ((mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) != 0)
index_sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT;
ret = mail_index_sync_begin(ctx->index, &ctx->index_sync_ctx,
client->inbox_ns = ns;
flags = MAILBOX_FLAG_POP3_SESSION;
- if (set->pop3_no_flag_updates)
- flags |= MAILBOX_FLAG_KEEP_RECENT;
+ if (!set->pop3_no_flag_updates)
+ flags |= MAILBOX_FLAG_DROP_RECENT;
if (set->pop3_lock_session)
flags |= MAILBOX_FLAG_KEEP_LOCKED;
client->mailbox = mailbox_alloc(ns->list, "INBOX", flags);