summaryrefslogtreecommitdiffstats
path: root/mx.c
diff options
context:
space:
mode:
authorThomas Roessler <roessler@does-not-exist.org>1999-09-01 07:16:54 +0000
committerThomas Roessler <roessler@does-not-exist.org>1999-09-01 07:16:54 +0000
commitb62f5ae2a0fdfd0cc47b94e70f9614c78ea26535 (patch)
tree316af980d953b315b37ef372719b0960dde1519f /mx.c
parenta76b0fafc65339bf17491fe59945bda6bfb6a028 (diff)
When the user synchronizes a mail folder, do a thorough check.
Diffstat (limited to 'mx.c')
-rw-r--r--mx.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/mx.c b/mx.c
index f072c7b8..4ad8eaf4 100644
--- a/mx.c
+++ b/mx.c
@@ -1140,15 +1140,39 @@ MESSAGE *mx_open_new_message (CONTEXT *dest, HEADER *hdr, int flags)
}
/* check for new mail */
-int mx_check_mailbox (CONTEXT *ctx, int *index_hint)
+int mx_check_mailbox (CONTEXT *ctx, int *index_hint, int lock)
{
+ int rc;
+
if (ctx)
{
+ if (ctx->locked) lock = 0;
+
switch (ctx->magic)
{
case M_MBOX:
case M_MMDF:
- return (mbox_check_mailbox (ctx, index_hint));
+
+ if (lock)
+ {
+ mutt_block_signals ();
+ if (mbox_lock_mailbox (ctx, 0, 0) == -1)
+ {
+ mutt_unblock_signals ();
+ return M_LOCKED;
+ }
+ }
+
+ rc = mbox_check_mailbox (ctx, index_hint);
+
+ if (lock)
+ {
+ mutt_unblock_signals ();
+ mbox_unlock_mailbox (ctx);
+ }
+
+ return rc;
+
case M_MH:
case M_MAILDIR: