X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mx%2Fmbox.c;h=81beb5262ec3ffcdb54dace1436d2a85fd2204af;hp=79658fa16dc1c9c5c23e3cb9a0674c09bb8278d9;hb=8e075eda08c6f099ec6988e16607fb4f6a10ba92;hpb=8476307969a605bea67f6b702b0c1e7a52038bed diff --git a/lib-mx/mbox.c b/lib-mx/mbox.c index 79658fa..81beb52 100644 --- a/lib-mx/mbox.c +++ b/lib-mx/mbox.c @@ -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(Tempdir), 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(Tempdir), NONULL(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) { @@ -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