]> granicus.if.org Git - mutt/commitdiff
add commit_msg to struct mx_ops
authorDamien Riegel <damien.riegel@gmail.com>
Sat, 18 Jun 2016 20:36:25 +0000 (13:36 -0700)
committerDamien Riegel <damien.riegel@gmail.com>
Sat, 18 Jun 2016 20:36:25 +0000 (13:36 -0700)
imap/imap.c
imap/imap.h
imap/imap_private.h
mbox.c
mh.c
mutt.h
mx.c
mx.h

index ef9c46855f25fd79c22600f7ac3371b05811a848..009c222c6d53217ddf27795b946325f7b2dd27de 100644 (file)
@@ -2076,6 +2076,7 @@ struct mx_ops mx_imap_ops = {
   .close = imap_close_mailbox,
   .open_msg = imap_fetch_message,
   .close_msg = imap_close_message,
+  .commit_msg = imap_commit_message,
   .open_new_msg = imap_open_new_message,
   .check = imap_check_mailbox_reopen,
 };
index 5dcb2d68612e8a04ec0e068fa26a04d9841a6014..ff0a1ba01f5d8cc7226a68f6249d2d08209c8bf6 100644 (file)
@@ -58,7 +58,6 @@ int imap_mailbox_rename (const char* mailbox);
 /* message.c */
 int imap_append_message (CONTEXT* ctx, MESSAGE* msg);
 int imap_copy_messages (CONTEXT* ctx, HEADER* h, char* dest, int delete);
-int imap_commit_message (CONTEXT *ctx, MESSAGE *msg);
 
 /* socket.c */
 void imap_logout_all (void);
index 8cd610adf22c7cddd1fe9b3ad5379a32b7a3e56c..67fea27e4d9e534bef0c0c33fe93d45117f89544 100644 (file)
@@ -270,6 +270,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);
+int imap_commit_message (CONTEXT *ctx, MESSAGE *msg);
 
 /* util.c */
 #ifdef USE_HCACHE
diff --git a/mbox.c b/mbox.c
index 8f43b109fd6a0f0f0dd300889a3fb2c881d16312..12d423641d055c4f984bdacd1c4450da78028e80 100644 (file)
--- a/mbox.c
+++ b/mbox.c
@@ -461,7 +461,7 @@ static int mbox_close_message (CONTEXT *ctx, MESSAGE *msg)
   return 0;
 }
 
-int mbox_commit_message (CONTEXT *ctx, MESSAGE *msg)
+static int mbox_commit_message (CONTEXT *ctx, MESSAGE *msg)
 {
   int r = fputc ('\n', msg->fp);
 
@@ -471,7 +471,7 @@ int mbox_commit_message (CONTEXT *ctx, MESSAGE *msg)
   return 0;
 }
 
-int mmdf_commit_message (CONTEXT *ctx, MESSAGE *msg)
+static int mmdf_commit_message (CONTEXT *ctx, MESSAGE *msg)
 {
   int r = fputs (MMDF_SEP, msg->fp);
 
@@ -1310,6 +1310,7 @@ struct mx_ops mx_mbox_ops = {
   .close = mbox_close_mailbox,
   .open_msg = mbox_open_message,
   .close_msg = mbox_close_message,
+  .commit_msg = mbox_commit_message,
   .open_new_msg = mbox_open_new_message,
   .check = mbox_check_mailbox,
 };
@@ -1319,6 +1320,7 @@ struct mx_ops mx_mmdf_ops = {
   .close = mbox_close_mailbox,
   .open_msg = mbox_open_message,
   .close_msg = mbox_close_message,
+  .commit_msg = mmdf_commit_message,
   .open_new_msg = mbox_open_new_message,
   .check = mbox_check_mailbox,
 };
diff --git a/mh.c b/mh.c
index 6038132fd2a0f70a063a5cea448f06147e28996b..3898f259ab387f9787a98349113ef58aae144d14 100644 (file)
--- a/mh.c
+++ b/mh.c
@@ -1539,7 +1539,7 @@ static int _maildir_commit_message (CONTEXT * ctx, MESSAGE * msg, HEADER * hdr)
   }
 }
 
-int maildir_commit_message (CONTEXT * ctx, MESSAGE * msg)
+static int maildir_commit_message (CONTEXT * ctx, MESSAGE * msg)
 {
   return _maildir_commit_message (ctx, msg, NULL);
 }
@@ -1625,7 +1625,7 @@ static int _mh_commit_message (CONTEXT * ctx, MESSAGE * msg, HEADER * hdr,
   return 0;
 }
 
-int mh_commit_message (CONTEXT * ctx, MESSAGE * msg)
+static int mh_commit_message (CONTEXT * ctx, MESSAGE * msg)
 {
   return _mh_commit_message (ctx, msg, NULL, 1);
 }
@@ -2456,6 +2456,7 @@ struct mx_ops mx_maildir_ops = {
   .close = mh_close_mailbox,
   .open_msg = maildir_open_message,
   .close_msg = mh_close_message,
+  .commit_msg = maildir_commit_message,
   .open_new_msg = maildir_open_new_message,
   .check = maildir_check_mailbox,
 };
@@ -2465,6 +2466,7 @@ struct mx_ops mx_mh_ops = {
   .close = mh_close_mailbox,
   .open_msg = mh_open_message,
   .close_msg = mh_close_message,
+  .commit_msg = mh_commit_message,
   .open_new_msg = mh_open_new_message,
   .check = mh_check_mailbox,
 };
diff --git a/mutt.h b/mutt.h
index 8b2d9eae308389a973e9fe168c5c1d9e1cef981a..69abdd3b09ad95895d05a6fd33bd0d8fcd09934c 100644 (file)
--- a/mutt.h
+++ b/mutt.h
@@ -896,6 +896,7 @@ struct mx_ops
   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 (*commit_msg) (struct _context *, struct _message *);
   int (*open_new_msg) (struct _message *, struct _context *, HEADER *);
 };
 
diff --git a/mx.c b/mx.c
index 822cb701e413cd82642bf00601ce378defc245a1..1b7497a811b335f3f5ac45b2079353e1409d3ce3 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -1329,8 +1329,12 @@ MESSAGE *mx_open_message (CONTEXT *ctx, int msgno)
 
 int mx_commit_message (MESSAGE *msg, CONTEXT *ctx)
 {
+  struct mx_ops *ops = mx_get_ops (ctx->magic);
   int r = 0;
 
+  if (!ops || !ops->commit_msg)
+    return -1;
+
   if (!(msg->write && ctx->append))
   {
     dprint (1, (debugfile, "mx_commit_message(): msg->write = %d, ctx->append = %d\n",
@@ -1338,40 +1342,7 @@ int mx_commit_message (MESSAGE *msg, CONTEXT *ctx)
     return -1;
   }
 
-  switch (ctx->magic)
-  {
-    case MUTT_MMDF:
-    {
-      r = mmdf_commit_message (ctx, msg);
-      break;
-    }
-    
-    case MUTT_MBOX:
-    {
-      r = mbox_commit_message (ctx, msg);
-      break;
-    }
-
-#ifdef USE_IMAP
-    case MUTT_IMAP:
-    {
-      r = imap_commit_message (ctx, msg);
-      break;
-    }
-#endif
-    
-    case MUTT_MAILDIR:
-    {
-      r = maildir_commit_message (ctx, msg);
-      break;
-    }
-    
-    case MUTT_MH:
-    {
-      r = mh_commit_message (ctx, msg);
-      break;
-    }
-  }
+  r = ops->commit_msg (ctx, msg);
   
   if (r == 0 && (ctx->magic == MUTT_MBOX || ctx->magic == MUTT_MMDF)
       && (fflush (msg->fp) == EOF || fsync (fileno (msg->fp)) == -1))
diff --git a/mx.h b/mx.h
index f9bbc7adb457be8981d1bda63ff74a30655586d8..ba9a78f9ae3d3486cfa6c8da051d59f1c3d48e3a 100644 (file)
--- a/mx.h
+++ b/mx.h
@@ -51,17 +51,12 @@ int mmdf_parse_mailbox (CONTEXT *);
 void mbox_unlock_mailbox (CONTEXT *);
 int mbox_check_empty (const char *);
 void mbox_reset_atime (CONTEXT *, struct stat *);
-int mbox_commit_message (CONTEXT *ctx, MESSAGE *msg);
-int mmdf_commit_message (CONTEXT *ctx, MESSAGE *msg);
 
 int mh_sync_mailbox (CONTEXT *, int *);
 int mh_check_empty (const char *);
 
 int maildir_check_empty (const char *);
 
-int maildir_commit_message (CONTEXT *, MESSAGE *);
-int mh_commit_message (CONTEXT *, MESSAGE *);
-
 FILE *maildir_open_find_message (const char *, const char *);
 
 int mbox_strict_cmp_headers (const HEADER *, const HEADER *);