#include <lib-lib/lib-lib.h>
-#include <lib-ui/curses.h>
+#include <lib-ui/lib-ui.h>
#include <lib-sys/mutt_signal.h>
#include "mutt.h"
return 0;
}
+static int mbox_open_message(MESSAGE *msg, CONTEXT *ctx, int msgno)
+{
+ msg->fp = ctx->fp;
+ return 0;
+}
+
/* prototypes */
static int mbox_reopen_mailbox (CONTEXT*, int*);
{
int r;
- if ((r = mx_lock_file(ctx->path, fileno(ctx->fp), excl, 1, retry)) == 0)
+ if ((r = mx_lock_file(ctx->path, fileno(ctx->fp), excl, retry)) == 0)
ctx->locked = 1;
else if (retry && !excl) {
ctx->readonly = 1;
return 0;
}
- return (r);
+ return r;
}
static void mbox_unlock_mailbox (CONTEXT * ctx)
if (ctx->locked) {
fflush (ctx->fp);
- mx_unlock_file (ctx->path, fileno (ctx->fp), 1);
+ mx_unlock_file(ctx->path, fileno(ctx->fp));
ctx->locked = 0;
}
}
/* Save information about the folder at the time we opened it. */
if (stat (ctx->path, &sb) == -1) {
mutt_perror (ctx->path);
- return (-1);
+ return -1;
}
ctx->size = sb.st_size;
/* precompute the local timezone to speed up calculation of the
date received */
- tz = mutt_local_tz (0);
+ t = time(NULL);
+ tz = localtime(&t)->tm_gmtoff;
loc = ftello (ctx->fp);
while (fgets (buf, sizeof (buf), ctx->fp) != NULL) {
mx_update_context (ctx, count);
}
- return (0);
+ return 0;
}
#undef PREV
if (stat (ctx->path, &st) == 0) {
if (st.st_mtime == ctx->mtime && st.st_size == ctx->size)
- return (0);
+ return 0;
if (st.st_size == ctx->size) {
/* the file was touched, but it is still the same length, so just exit */
ctx->mtime = st.st_mtime;
- return (0);
+ return 0;
}
if (st.st_size > ctx->size) {
* probably the new mail arrived: no reason to wait till we can
* parse it: we'll get it on the next pass
*/
- return (M_LOCKED);
+ return M_LOCKED;
}
unlock = 1;
}
mutt_unblock_signals ();
}
- return (M_NEW_MAIL); /* signal that new mail arrived */
+ return M_NEW_MAIL; /* signal that new mail arrived */
}
else
modified = 1;
mbox_unlock_mailbox (ctx);
mutt_unblock_signals ();
}
- return (M_REOPENED);
+ return M_REOPENED;
}
}
mutt_unblock_signals ();
mutt_error _("Mailbox was corrupted!");
- return (-1);
+ return -1;
}
static int mbox_check_mailbox(CONTEXT *ctx, int *index_hint, int lock)
mx_fastclose_mailbox (ctx);
mutt_error _("Fatal error! Could not reopen mailbox!");
- return (-1);
+ return -1;
}
mutt_block_signals ();
}
else if (i < 0)
/* fatal error */
- return (-1);
+ return -1;
/* Create a temporary file to write the new version of the mailbox in. */
fp = m_tempfile(tempfile, _POSIX_PATH_MAX, NONULL(mod_core.tmpdir), NULL);
mx_fastclose_mailbox (ctx);
mutt_perror (_("Can't create temporary file"));
mutt_sleep (5);
- return (-1);
+ return -1;
}
if (fseeko (ctx->fp, offset, SEEK_SET) != 0 /* seek the append location */
mutt_pretty_mailbox (savefile);
mutt_error (_("Write failed! Saved partial mailbox to %s"), savefile);
mutt_sleep (5);
- return (-1);
+ return -1;
}
/* Restore the previous access/modification times */
mutt_unblock_signals ();
mx_fastclose_mailbox (ctx);
mutt_error _("Fatal error! Could not reopen mailbox!");
- return (-1);
+ return -1;
}
/* update the offsets of the rewritten messages */
unlink (tempfile); /* remove partial copy of the mailbox */
mutt_unblock_signals ();
- return (0); /* signal success */
+ return 0; /* signal success */
bail: /* Come here in case of disaster */
mutt_error _("Could not reopen mailbox!");
mx_fastclose_mailbox (ctx);
- return (-1);
+ return -1;
}
if (need_sort)
/* close a mailbox opened in write-mode */
int mbox_close_mailbox (CONTEXT * ctx)
{
- mx_unlock_file (ctx->path, fileno (ctx->fp), 1);
+ mx_unlock_file(ctx->path, fileno(ctx->fp));
if (ctx->cinfo)
mutt_slow_close_compressed (ctx);
p_delete(&old_hdrs);
ctx->quiet = 0;
- return (-1);
+ return -1;
}
/* now try to recover the old flags */
ctx->quiet = 0;
- return ((ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL);
+ return (ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL;
}
/*
if (stat (path, &st) == -1)
return -1;
- return ((st.st_size == 0));
+ return st.st_size == 0;
}
int mbox_is_magic (const char* path, struct stat* st)
char tmp[_POSIX_PATH_MAX];
if (S_ISDIR(st->st_mode))
- return (-1);
+ return -1;
if (st->st_size == 0) {
return M_MBOX;
utime (path, ×);
} else {
mutt_perror (path);
- return (-1); /* fopen failed */
+ return -1; /* fopen failed */
}
if (magic == -1 && mutt_can_read_compressed (path))
- return (M_COMPRESSED);
- return (magic);
+ return M_COMPRESSED;
+ return magic;
}
static int mbox_commit_message (MESSAGE* msg, CONTEXT* ctx) {
access,
mbox_open_mailbox,
mbox_open_new_message,
+ mbox_open_message,
NULL,
mbox_check_mailbox,
NULL,