there is no real need for a lib-hash anymore. fold it.
[apps/madmutt.git] / lib-mx / mbox.c
index 79658fa..60caf04 100644 (file)
@@ -546,15 +546,9 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     return (-1);
 
   /* Create a temporary file to write the new version of the mailbox in. */
-  mutt_mktemp (tempfile);
-  if ((i = open (tempfile, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 ||
-      (fp = fdopen (i, "w")) == NULL) {
-    if (-1 != i) {
-      close (i);
-      unlink (tempfile);
-    }
+  fp = m_tempfile(tempfile, _POSIX_PATH_MAX, NONULL(MCore.tmpdir), NULL);
+  if (fp == NULL) {
     mutt_error _("Could not create temporary file!");
-
     mutt_sleep (5);
     goto bail;
   }
@@ -611,12 +605,11 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
 
       if (ctx->magic == M_MMDF) {
         if (fputs (MMDF_SEP, fp) == EOF) {
-          mutt_perror (tempfile);
+          mutt_perror (_("Can't create temporary file"));
           mutt_sleep (5);
           unlink (tempfile);
           goto bail;
         }
-
       }
 
       /* save the new offset for this message.  we add `offset' because the
@@ -628,7 +621,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
       if (mutt_copy_message
           (fp, ctx, ctx->hdrs[i], M_CM_UPDATE,
            CH_FROM | CH_UPDATE | CH_UPDATE_LEN) == -1) {
-        mutt_perror (tempfile);
+        mutt_perror (_("Can't create temporary file"));
         mutt_sleep (5);
         unlink (tempfile);
         goto bail;
@@ -647,7 +640,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
       switch (ctx->magic) {
       case M_MMDF:
         if (fputs (MMDF_SEP, fp) == EOF) {
-          mutt_perror (tempfile);
+          mutt_perror (_("Can't create temporary file"));
           mutt_sleep (5);
           unlink (tempfile);
           goto bail;
@@ -655,7 +648,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
         break;
       default:
         if (fputs ("\n", fp) == EOF) {
-          mutt_perror (tempfile);
+          mutt_perror (_("Can't create temporary file"));
           mutt_sleep (5);
           unlink (tempfile);
           goto bail;
@@ -664,14 +657,12 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     }
   }
 
-  if (fclose (fp) != 0) {
-    fp = NULL;
+  if (m_fclose(&fp) != 0) {
     unlink (tempfile);
-    mutt_perror (tempfile);
+    mutt_perror (_("Can't create temporary file"));
     mutt_sleep (5);
     goto bail;
   }
-  fp = NULL;
 
   /* Save the state of this folder. */
   if (stat (ctx->path, &statbuf) == -1) {
@@ -684,7 +675,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
   if ((fp = fopen (tempfile, "r")) == NULL) {
     mutt_unblock_signals ();
     mx_fastclose_mailbox (ctx);
-    mutt_perror (tempfile);
+    mutt_perror (_("Can't create temporary file"));
     mutt_sleep (5);
     return (-1);
   }
@@ -716,20 +707,18 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     }
   }
 
-  fclose (fp);
-  fp = NULL;
+  m_fclose(&fp);
   mbox_unlock_mailbox (ctx);
 
-  if (fclose (ctx->fp) != 0 || i == -1) {
+  if (m_fclose(&ctx->fp) != 0 || i == -1) {
     /* error occured while writing the mailbox back, so keep the temp copy
      * around
      */
 
     char savefile[_POSIX_PATH_MAX];
 
-    snprintf (savefile, sizeof (savefile), "%s/mutt.%s-%s-%u",
-              NONULL (Tempdir), NONULL (Username), NONULL (Hostname),
-              (unsigned int) getpid ());
+    snprintf(savefile, sizeof (savefile), "%s/mutt.%s-%u",
+             NONULL(MCore.tmpdir), NONULL(MCore.username), (unsigned int)getpid());
     rename (tempfile, savefile);
     mutt_unblock_signals ();
     mx_fastclose_mailbox (ctx);
@@ -771,7 +760,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
 
 bail:                          /* Come here in case of disaster */
 
-  safe_fclose (&fp);
+  m_fclose(&fp);
 
   /* restore offsets, as far as they are valid */
   if (first >= 0 && oldOffset) {
@@ -849,9 +838,9 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint)
 
   /* simulate a close */
   if (ctx->id_hash)
-    hash_destroy (&ctx->id_hash, NULL);
+    hash_delete (&ctx->id_hash, NULL);
   if (ctx->subj_hash)
-    hash_destroy (&ctx->subj_hash, NULL);
+    hash_delete (&ctx->subj_hash, NULL);
   mutt_clear_threads (ctx);
   p_delete(&ctx->v2r);
   if (ctx->readonly) {
@@ -1017,7 +1006,7 @@ int mbox_is_magic (const char* path, struct stat* st) {
       magic = M_MBOX;
     else if (m_strcmp(MMDF_SEP, tmp) == 0)
       magic = M_MMDF;
-    safe_fclose (&f);
+    m_fclose(&f);
 
     /* need to restore the times here, the file was not really accessed,
      * only the type was accessed.  This is important, because detection