]> granicus.if.org Git - neomutt/commitdiff
Move fflush and fsync to the mbox and mmdf commit_msg functions.
authorKevin McCarthy <kevin@8t8.us>
Mon, 1 Aug 2016 01:42:07 +0000 (18:42 -0700)
committerKevin McCarthy <kevin@8t8.us>
Mon, 1 Aug 2016 01:42:07 +0000 (18:42 -0700)
The case statement in mx_commit_message() was previously distributed
to the various ops->commit_msg() handlers, but the fflush and fsync were
not.

mbox.c
mx.c

diff --git a/mbox.c b/mbox.c
index 36dd81e7306a5b4ba26b76be0680f87aac4a7dc1..1aabe9e5e9073634af334eb5631d9fec9726a586 100644 (file)
--- a/mbox.c
+++ b/mbox.c
@@ -463,20 +463,30 @@ static int mbox_close_message (CONTEXT *ctx, MESSAGE *msg)
 
 static int mbox_commit_message (CONTEXT *ctx, MESSAGE *msg)
 {
-  int r = fputc ('\n', msg->fp);
+  if (fputc ('\n', msg->fp) == EOF)
+    return -1;
 
-  if (r == EOF)
+  if ((fflush (msg->fp) == EOF) ||
+      (fsync (fileno (msg->fp)) == -1))
+  {
+    mutt_perror _("Can't write message");
     return -1;
+  }
 
   return 0;
 }
 
 static int mmdf_commit_message (CONTEXT *ctx, MESSAGE *msg)
 {
-  int r = fputs (MMDF_SEP, msg->fp);
+  if (fputs (MMDF_SEP, msg->fp) == EOF)
+    return -1;
 
-  if (r == EOF)
+  if ((fflush (msg->fp) == EOF) ||
+      (fsync (fileno (msg->fp)) == -1))
+  {
+    mutt_perror _("Can't write message");
     return -1;
+  }
 
   return 0;
 }
diff --git a/mx.c b/mx.c
index 7af22aaecd2cec9524abd041172922e6cfb67d84..e44ae5afa9b9c94194d3c82bf1f88ec11b292c60 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -1423,7 +1423,6 @@ 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;
@@ -1435,16 +1434,7 @@ int mx_commit_message (MESSAGE *msg, CONTEXT *ctx)
     return -1;
   }
 
-  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))
-  {
-    mutt_perror _("Can't write message");
-    r = -1;
-  }
-  return r;
+  return ops->commit_msg (ctx, msg);
 }
 
 /* close a pointer to a message */