X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mx%2Fmbox.c;h=9eb2809388f0463841bf4a3f39559aab44efa5d9;hp=d3c59485fe368526eca349c0223ab8112789cc3e;hb=a833478d0bab31dd0016520da5049bdf45b29736;hpb=55de28a5bb96c3edfbb2a3b080356acbb44a3cc4 diff --git a/lib-mx/mbox.c b/lib-mx/mbox.c index d3c5948..9eb2809 100644 --- a/lib-mx/mbox.c +++ b/lib-mx/mbox.c @@ -11,7 +11,7 @@ #include -#include +#include #include #include "mutt.h" @@ -38,6 +38,12 @@ static int mbox_open_new_message(MESSAGE *msg, CONTEXT *dest, HEADER *hdr) 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*); @@ -50,14 +56,14 @@ int mbox_lock_mailbox(CONTEXT *ctx, int excl, int retry) { 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) @@ -65,7 +71,7 @@ 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; } } @@ -88,7 +94,7 @@ static int mbox_parse_mailbox (CONTEXT * ctx) /* 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; @@ -99,7 +105,8 @@ static int mbox_parse_mailbox (CONTEXT * ctx) /* 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) { @@ -218,7 +225,7 @@ static int mbox_parse_mailbox (CONTEXT * ctx) mx_update_context (ctx, count); } - return (0); + return 0; } #undef PREV @@ -264,12 +271,12 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint) 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) { @@ -282,7 +289,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint) * 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; } @@ -309,7 +316,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint) mutt_unblock_signals (); } - return (M_NEW_MAIL); /* signal that new mail arrived */ + return M_NEW_MAIL; /* signal that new mail arrived */ } else modified = 1; @@ -327,7 +334,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint) mbox_unlock_mailbox (ctx); mutt_unblock_signals (); } - return (M_REOPENED); + return M_REOPENED; } } @@ -338,7 +345,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint) mutt_unblock_signals (); mutt_error _("Mailbox was corrupted!"); - return (-1); + return -1; } static int mbox_check_mailbox(CONTEXT *ctx, int *index_hint, int lock) @@ -397,7 +404,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)) mx_fastclose_mailbox (ctx); mutt_error _("Fatal error! Could not reopen mailbox!"); - return (-1); + return -1; } mutt_block_signals (); @@ -419,10 +426,10 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)) } 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(MCore.tmpdir), NULL); + fp = m_tempfile(tempfile, _POSIX_PATH_MAX, NONULL(mod_core.tmpdir), NULL); if (fp == NULL) { mutt_error _("Could not create temporary file!"); mutt_sleep (5); @@ -527,7 +534,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)) 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 */ @@ -568,14 +575,14 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)) char savefile[_POSIX_PATH_MAX]; snprintf(savefile, sizeof (savefile), "%s/mutt.%s-%u", - NONULL(MCore.tmpdir), NONULL(MCore.username), (unsigned int)getpid()); + NONULL(mod_core.tmpdir), NONULL(mod_core.username), (unsigned int)getpid()); rename (tempfile, savefile); mutt_unblock_signals (); mx_fastclose_mailbox (ctx); 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 */ @@ -589,7 +596,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)) 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 */ @@ -606,7 +613,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)) 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 */ @@ -634,7 +641,7 @@ bail: /* Come here in case of disaster */ mutt_error _("Could not reopen mailbox!"); mx_fastclose_mailbox (ctx); - return (-1); + return -1; } if (need_sort) @@ -648,7 +655,7 @@ bail: /* Come here in case of disaster */ /* 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); @@ -731,7 +738,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint) p_delete(&old_hdrs); ctx->quiet = 0; - return (-1); + return -1; } /* now try to recover the old flags */ @@ -801,7 +808,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint) ctx->quiet = 0; - return ((ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL); + return (ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL; } /* @@ -817,7 +824,7 @@ int mbox_check_empty (const char *path) 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) @@ -827,7 +834,7 @@ 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; @@ -849,12 +856,12 @@ int mbox_is_magic (const char* path, struct stat* st) 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) { @@ -875,6 +882,7 @@ mx_t const mbox_mx = { access, mbox_open_mailbox, mbox_open_new_message, + mbox_open_message, NULL, mbox_check_mailbox, NULL,