# HG changeset patch
# User Damien Riegel <[email protected]>
# Date 1464826922 14400
# Wed Jun 01 20:22:02 2016 -0400
# Node ID cb69c738d8258dca86a2dcef45023d949ae46ad9
# Parent 80888906ecef1287e3010a990a6496bb6b7bd8fa
add close_msg to struct mx_ops
diff -r 80888906ecef -r cb69c738d825 imap/imap.c
--- a/imap/imap.c Wed Jun 01 20:06:34 2016 -0400
+++ b/imap/imap.c Wed Jun 01 20:22:02 2016 -0400
@@ -2071,6 +2071,7 @@
.open = imap_open_mailbox,
.close = imap_close_mailbox,
.open_msg = imap_fetch_message,
+ .close_msg = imap_close_message,
.open_new_msg = imap_open_new_message,
.check = imap_check_mailbox_reopen,
};
diff -r 80888906ecef -r cb69c738d825 imap/imap_private.h
--- a/imap/imap_private.h Wed Jun 01 20:06:34 2016 -0400
+++ b/imap/imap_private.h Wed Jun 01 20:22:02 2016 -0400
@@ -269,6 +269,7 @@
int imap_cache_clean (IMAP_DATA* idata);
int imap_fetch_message (CONTEXT *ctx, MESSAGE *msg, int msgno);
+int imap_close_message (CONTEXT *ctx, MESSAGE *msg);
/* util.c */
#ifdef USE_HCACHE
diff -r 80888906ecef -r cb69c738d825 imap/message.c
--- a/imap/message.c Wed Jun 01 20:06:34 2016 -0400
+++ b/imap/message.c Wed Jun 01 20:22:02 2016 -0400
@@ -595,6 +595,11 @@
return -1;
}
+int imap_close_message (CONTEXT *ctx, MESSAGE *msg)
+{
+ return safe_fclose (&msg->fp);
+}
+
int imap_append_message (CONTEXT *ctx, MESSAGE *msg)
{
IMAP_DATA* idata;
diff -r 80888906ecef -r cb69c738d825 mbox.c
--- a/mbox.c Wed Jun 01 20:06:34 2016 -0400
+++ b/mbox.c Wed Jun 01 20:22:02 2016 -0400
@@ -458,6 +458,13 @@
return 0;
}
+static int mbox_close_message (CONTEXT *ctx, MESSAGE *msg)
+{
+ msg->fp = NULL;
+
+ return 0;
+}
+
static int mbox_open_new_message (MESSAGE *msg, CONTEXT *dest, HEADER *hdr)
{
msg->fp = dest->fp;
@@ -1286,6 +1293,7 @@
.open = mbox_open_mailbox,
.close = mbox_close_mailbox,
.open_msg = mbox_open_message,
+ .close_msg = mbox_close_message,
.open_new_msg = mbox_open_new_message,
.check = mbox_check_mailbox,
};
@@ -1294,6 +1302,7 @@
.open = mbox_open_mailbox,
.close = mbox_close_mailbox,
.open_msg = mbox_open_message,
+ .close_msg = mbox_close_message,
.open_new_msg = mbox_open_new_message,
.check = mbox_check_mailbox,
};
diff -r 80888906ecef -r cb69c738d825 mh.c
--- a/mh.c Wed Jun 01 20:06:34 2016 -0400
+++ b/mh.c Wed Jun 01 20:22:02 2016 -0400
@@ -1355,6 +1355,11 @@
return maildir_mh_open_message (ctx, msg, msgno, 0);
}
+static int mh_close_message (CONTEXT *ctx, MESSAGE *msg)
+{
+ return safe_fclose (&msg->fp);
+}
+
/*
* Open a new (temporary) message in a maildir folder.
*
@@ -2431,6 +2436,7 @@
.open = maildir_open_mailbox,
.close = mh_close_mailbox,
.open_msg = maildir_open_message,
+ .close_msg = mh_close_message,
.open_new_msg = maildir_open_new_message,
.check = maildir_check_mailbox,
};
@@ -2439,6 +2445,7 @@
.open = mh_open_mailbox,
.close = mh_close_mailbox,
.open_msg = mh_open_message,
+ .close_msg = mh_close_message,
.open_new_msg = mh_open_new_message,
.check = mh_check_mailbox,
};
diff -r 80888906ecef -r cb69c738d825 mutt.h
--- a/mutt.h Wed Jun 01 20:06:34 2016 -0400
+++ b/mutt.h Wed Jun 01 20:22:02 2016 -0400
@@ -894,6 +894,7 @@
int (*close)(struct _context *);
int (*check) (struct _context *ctx, int *index_hint);
int (*open_msg) (struct _context *, struct _message *, int msgno);
+ int (*close_msg) (struct _context *, struct _message *);
int (*open_new_msg) (struct _message *, struct _context *, HEADER *);
};
diff -r 80888906ecef -r cb69c738d825 mx.c
--- a/mx.c Wed Jun 01 20:06:34 2016 -0400
+++ b/mx.c Wed Jun 01 20:22:02 2016 -0400
@@ -1392,20 +1392,16 @@
/* close a pointer to a message */
int mx_close_message (CONTEXT *ctx, MESSAGE **msg)
{
+ struct mx_ops *ops = mx_get_ops (ctx->magic);
int r = 0;
- if (ctx->magic == MUTT_MH || ctx->magic == MUTT_MAILDIR
- || ctx->magic == MUTT_IMAP || ctx->magic == MUTT_POP)
- {
- r = safe_fclose (&(*msg)->fp);
- }
- else
- (*msg)->fp = NULL;
+ if (ops && ops->close_msg)
+ r = ops->close_msg (ctx, *msg);
if ((*msg)->path)
{
dprint (1, (debugfile, "mx_close_message (): unlinking %s\n",
- (*msg)->path));
+ (*msg)->path));
unlink ((*msg)->path);
FREE (&(*msg)->path);
}
diff -r 80888906ecef -r cb69c738d825 pop.c
--- a/pop.c Wed Jun 01 20:06:34 2016 -0400
+++ b/pop.c Wed Jun 01 20:22:02 2016 -0400
@@ -656,6 +656,11 @@
return 0;
}
+static int pop_close_message (CONTEXT *ctx, MESSAGE *msg)
+{
+ return safe_fclose (&msg->fp);
+}
+
/* update POP mailbox - delete messages from server */
int pop_sync_mailbox (CONTEXT *ctx, int *index_hint)
{
@@ -932,5 +937,6 @@
.open = pop_open_mailbox,
.close = pop_close_mailbox,
.open_msg = pop_fetch_message,
+ .close_msg = pop_close_message,
.check = pop_check_mailbox,
};