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;
}
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
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;
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;
break;
default:
if (fputs ("\n", fp) == EOF) {
- mutt_perror (tempfile);
+ mutt_perror (_("Can't create temporary file"));
mutt_sleep (5);
unlink (tempfile);
goto bail;
}
}
- 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) {
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);
}
}
}
- 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-%u",
- NONULL(Tempdir), NONULL(Username), (unsigned int)getpid());
+ NONULL(MCore.tmpdir), NONULL(MCore.username), (unsigned int)getpid());
rename (tempfile, savefile);
mutt_unblock_signals ();
mx_fastclose_mailbox (ctx);
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) {
/* 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) {
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