mutt_*mktemp--
[apps/madmutt.git] / editmsg.c
index b4e28a3..6d848e3 100644 (file)
--- a/editmsg.c
+++ b/editmsg.c
@@ -9,19 +9,12 @@
 
 /* simple, editor-based message editing */
 
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
+#include <lib-ui/curses.h>
+#include <lib-mx/mx.h>
 
 #include "mutt.h"
 #include "copy.h"
-#include "mailbox.h"
-#include "mx.h"
-
-#include <sys/stat.h>
-#include <errno.h>
-
-#include <time.h>
 
 /*
  * return value:
@@ -51,6 +44,7 @@ static int edit_one_message (CONTEXT * ctx, HEADER * cur)
 
   struct stat sb;
   time_t mtime = 0;
+  ssize_t size = 0;
 
   mutt_mktemp (tmp);
 
@@ -79,8 +73,10 @@ static int edit_one_message (CONTEXT * ctx, HEADER * cur)
     goto bail;
   }
 
-  if (stat (tmp, &sb) == 0)
+  if (stat (tmp, &sb) == 0) {
     mtime = sb.st_mtime;
+    size = sb.st_size;
+  }
 
   /*
    * 2002-09-05 me@sigpipe.org
@@ -90,7 +86,7 @@ static int edit_one_message (CONTEXT * ctx, HEADER * cur)
    * remove it, the message will grow by one line each time the user edits
    * the message.
    */
-  if (sb.st_size != 0 && truncate (tmp, sb.st_size - 1) == -1) {
+  if (size != 0 && truncate (tmp, --size) == -1) {
     mutt_error (_("could not truncate temporary mail folder: %s"),
                 strerror (errno));
     goto bail;
@@ -109,7 +105,7 @@ static int edit_one_message (CONTEXT * ctx, HEADER * cur)
     goto bail;
   }
 
-  if (sb.st_mtime == mtime) {
+  if (sb.st_mtime == mtime && sb.st_size == size) {
     mutt_message (_("Message not modified!"));
     rc = 1;
     goto bail;
@@ -169,8 +165,7 @@ static int edit_one_message (CONTEXT * ctx, HEADER * cur)
   mx_close_mailbox (&tmpctx, NULL);
 
 bail:
-  if (fp)
-    fclose (fp);
+  m_fclose(&fp);
 
   if (rc >= 0)
     unlink (tmp);