From: Miroslav Lichvar Date: Tue, 20 Mar 2007 20:39:29 +0000 (-0700) Subject: Make BUFFY_SIZE a runtime switch ($check_mbox_size) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bb112e1a4cac893545f39691b817084083399026;p=mutt Make BUFFY_SIZE a runtime switch ($check_mbox_size) --- diff --git a/ChangeLog b/ChangeLog index 9c9eb470..96db3dd1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2007-03-20 13:17 -0700 Rocco Rutte (2fbc65f3feb6) + + * addrbook.c, browser.c, compose.c, crypt-gpgme.c, curs_main.c, + mutt_ssl.c, mutt_ssl_gnutls.c, pgpkey.c, postpone.c, query.c, + recvattach.c, remailer.c: Enlarge help string buffers Even on 80x25 + terminals, SHORT_STRING (128 byte) may not be enough so use + LONG_STRING (1k) as STRING (256 byte) may well be too short for + wider terminals. Closes debian #4152777. + +2007-03-20 09:45 -0700 Antoine Reilles (f0461517fc93) + + * muttlib.c: Remove trailing slash from $folder in + mutt_expand_path. + 2007-03-20 08:20 -0700 Rocco Rutte (3122a4a338b1) * rfc3676.c: Make f=f handler behave like old f=f handler for quoted @@ -22,7 +36,7 @@ 2007-03-15 16:29 -0700 Brendan Cully (4ade0c9660d5) - * ChangeLog, Makefile.am: Add reldate.h to BUILT_SOURCES + * Makefile.am: Add reldate.h to BUILT_SOURCES 2007-03-15 16:10 +0100 Christoph Berg (ed804d94676a) diff --git a/UPDATING b/UPDATING index c0daa39e..60c18004 100644 --- a/UPDATING +++ b/UPDATING @@ -4,6 +4,7 @@ mutt. Please read this file carefully when upgrading your installation. The keys used are: !: modified feature, -: deleted feature, +: new feature + + $check_mbox_size (use size change instead of atime for new mail) ! improved f=f support wraps lines at $wrap if $wrap is not 0 + $wrap (>0 wraps at $wrap, <0 = $wrapmargin) + $assumed_charset, $attach_charset, $ignore_linear_white_space diff --git a/buffy.c b/buffy.c index b1513f5b..d0998ff2 100644 --- a/buffy.c +++ b/buffy.c @@ -45,8 +45,6 @@ time_t BuffyDoneTime = 0; /* last time we knew for sure how much mail there was. static short BuffyCount = 0; /* how many boxes with new mail */ static short BuffyNotify = 0; /* # of unnotified new boxes */ -#ifdef BUFFY_SIZE - /* Find the last message in the file. * upon success return 0. If no message found - return -1 */ @@ -167,15 +165,12 @@ void mutt_update_mailbox (BUFFY * b) b->size = 0; return; } -#endif int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err) { BUFFY **tmp,*tmp1; char buf[_POSIX_PATH_MAX]; -#ifdef BUFFY_SIZE struct stat sb; -#endif /* BUFFY_SIZE */ while (MoreArgs (s)) { @@ -232,31 +227,28 @@ int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *e (*tmp)->notified = 1; (*tmp)->newly_created = 0; -#ifdef BUFFY_SIZE - /* for buffy_size, it is important that if the folder is new (tested by + /* for check_mbox_size, it is important that if the folder is new (tested by * reading it), the size is set to 0 so that later when we check we see - * that it increased . without buffy_size we probably don't care. + * that it increased . without check_mbox_size we probably don't care. */ - if (stat ((*tmp)->path, &sb) == 0 && !test_new_folder ((*tmp)->path)) + if (option(OPTCHECKMBOXSIZE) && + stat ((*tmp)->path, &sb) == 0 && !test_new_folder ((*tmp)->path)) { /* some systems out there don't have an off_t type */ (*tmp)->size = (long) sb.st_size; } else (*tmp)->size = 0; -#endif /* BUFFY_SIZE */ } return 0; } -#ifdef BUFFY_SIZE -/* people use buffy_size on systems where modified time attributes are BADLY - * broken. Ignore them. +/* people use check_mbox_size on systems where modified time attributes are + * BADLY broken. Ignore them. */ -#define STAT_CHECK (sb.st_size > tmp->size) -#else -#define STAT_CHECK (sb.st_mtime > sb.st_atime || (tmp->newly_created && sb.st_ctime == sb.st_mtime && sb.st_ctime == sb.st_atime)) -#endif /* BUFFY_SIZE */ +#define STAT_CHECK_SIZE (sb.st_size > tmp->size) +#define STAT_CHECK_TIME (sb.st_mtime > sb.st_atime || (tmp->newly_created && sb.st_ctime == sb.st_mtime && sb.st_ctime == sb.st_atime)) +#define STAT_CHECK (option(OPTCHECKMBOXSIZE) ? STAT_CHECK_SIZE : STAT_CHECK_TIME) int mutt_buffy_check (int force) { @@ -323,9 +315,7 @@ int mutt_buffy_check (int force) * be ready for when it does. */ tmp->newly_created = 1; tmp->magic = 0; -#ifdef BUFFY_SIZE tmp->size = 0; -#endif continue; } #ifdef USE_IMAP @@ -365,13 +355,11 @@ int mutt_buffy_check (int force) BuffyCount++; tmp->new = 1; } -#ifdef BUFFY_SIZE - else + else if (option(OPTCHECKMBOXSIZE)) { /* some other program has deleted mail from the folder */ tmp->size = (long) sb.st_size; } -#endif if (tmp->newly_created && (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime)) tmp->newly_created = 0; @@ -407,10 +395,8 @@ int mutt_buffy_check (int force) break; } } -#ifdef BUFFY_SIZE - else if (Context && Context->path) + else if (option(OPTCHECKMBOXSIZE) && Context && Context->path) tmp->size = (long) sb.st_size; /* update the size */ -#endif if (!tmp->new) tmp->notified = 0; diff --git a/buffy.h b/buffy.h index cecff7c2..b86d1aa4 100644 --- a/buffy.h +++ b/buffy.h @@ -23,9 +23,7 @@ typedef struct buffy_t { char *path; -#ifdef BUFFY_SIZE long size; -#endif /* BUFFY_SIZE */ struct buffy_t *next; short new; /* mailbox has new mail */ short notified; /* user has been notified */ @@ -39,7 +37,5 @@ WHERE short BuffyTimeout INITVAL (3); extern time_t BuffyDoneTime; /* last time we knew for sure how much mail there was */ -#ifdef BUFFY_SIZE BUFFY *mutt_find_mailbox (const char *path); void mutt_update_mailbox (BUFFY * b); -#endif diff --git a/commands.c b/commands.c index 6f99cbc9..2fdcb7ff 100644 --- a/commands.c +++ b/commands.c @@ -40,9 +40,7 @@ #include "imap.h" #endif -#ifdef BUFFY_SIZE #include "buffy.h" -#endif #include #include @@ -703,11 +701,8 @@ int mutt_save_message (HEADER *h, int delete, char prompt[SHORT_STRING], buf[_POSIX_PATH_MAX]; CONTEXT ctx; struct stat st; -#ifdef BUFFY_SIZE BUFFY *tmp = NULL; -#else struct utimbuf ut; -#endif *redraw = 0; @@ -842,21 +837,24 @@ int mutt_save_message (HEADER *h, int delete, if (need_buffy_cleanup) { -#ifdef BUFFY_SIZE - tmp = mutt_find_mailbox (buf); - if (tmp && !tmp->new) - mutt_update_mailbox (tmp); -#else - /* fix up the times so buffy won't get confused */ - if (st.st_mtime > st.st_atime) + if (option(OPTCHECKMBOXSIZE)) { - ut.actime = st.st_atime; - ut.modtime = time (NULL); - utime (buf, &ut); + tmp = mutt_find_mailbox (buf); + if (tmp && !tmp->new) + mutt_update_mailbox (tmp); } else - utime (buf, NULL); -#endif + { + /* fix up the times so buffy won't get confused */ + if (st.st_mtime > st.st_atime) + { + ut.actime = st.st_atime; + ut.modtime = time (NULL); + utime (buf, &ut); + } + else + utime (buf, NULL); + } } mutt_clear_error (); diff --git a/configure.ac b/configure.ac index 2cd6b00e..90aa4b67 100644 --- a/configure.ac +++ b/configure.ac @@ -792,11 +792,6 @@ AC_ARG_ENABLE(nfs-fix, AC_HELP_STRING([--enable-nfs-fix], [Work around an NFS wi incorrectly cache the attributes of small files.]) fi]) -AC_ARG_ENABLE(buffy-size, AC_HELP_STRING([--enable-buffy-size], [Use file size attribute instead of access time]), - [if test x$enableval = xyes; then - AC_DEFINE(BUFFY_SIZE,1,[ Define to enable the "buffy_size" feature. ]) - fi]) - AC_ARG_ENABLE(mailtool, AC_HELP_STRING([--enable-mailtool], [Enable Sun mailtool attachments support]), [if test x$enableval = xyes; then AC_DEFINE(SUN_ATTACHMENT,1,[ Define to enable Sun mailtool attachments support. ]) diff --git a/init.h b/init.h index 3ef28e0e..86b0072d 100644 --- a/init.h +++ b/init.h @@ -351,6 +351,12 @@ struct option_t MuttVars[] = { ** follow these menus. The option is disabled by default because many ** visual terminals don't permit making the cursor invisible. */ + { "check_mbox_size", DT_BOOL, R_NONE, OPTCHECKMBOXSIZE, 0 }, + /* + ** .pp + ** When this variable is set, mutt will use file size attribute instead of + ** access time when checking for new mail. + */ { "charset", DT_STR, R_NONE, UL &Charset, UL 0 }, /* ** .pp diff --git a/main.c b/main.c index 54674831..bcca8002 100644 --- a/main.c +++ b/main.c @@ -375,11 +375,6 @@ static void show_version (void) ); puts ( -#ifdef BUFFY_SIZE - "+BUFFY_SIZE " -#else - "-BUFFY_SIZE " -#endif #ifdef EXACT_ADDRESS "+EXACT_ADDRESS " #else diff --git a/mutt.h b/mutt.h index 05fffa42..02df3c48 100644 --- a/mutt.h +++ b/mutt.h @@ -339,6 +339,7 @@ enum OPTBEEPNEW, OPTBOUNCEDELIVERED, OPTBRAILLEFRIENDLY, + OPTCHECKMBOXSIZE, OPTCHECKNEW, OPTCOLLAPSEUNREAD, OPTCONFIRMAPPEND, diff --git a/mx.c b/mx.c index 7e8c7a23..2c16196f 100644 --- a/mx.c +++ b/mx.c @@ -38,9 +38,7 @@ #include "pop.h" #endif -#ifdef BUFFY_SIZE #include "buffy.h" -#endif #ifdef USE_DOTLOCK #include "dotlock.h" @@ -57,9 +55,7 @@ #include #include #include -#ifndef BUFFY_SIZE #include -#endif #define mutt_is_spool(s) (mutt_strcmp (Spoolfile, s) == 0) @@ -426,9 +422,7 @@ int mx_get_magic (const char *path) } else if ((f = fopen (path, "r")) != NULL) { -#ifndef BUFFY_SIZE struct utimbuf times; -#endif fgets (tmp, sizeof (tmp), f); if (mutt_strncmp ("From ", tmp, 5) == 0) @@ -436,15 +430,17 @@ int mx_get_magic (const char *path) else if (mutt_strcmp (MMDF_SEP, tmp) == 0) magic = M_MMDF; safe_fclose (&f); -#ifndef BUFFY_SIZE - /* need to restore the times here, the file was not really accessed, - * only the type was accessed. This is important, because detection - * of "new mail" depends on those times set correctly. - */ - times.actime = st.st_atime; - times.modtime = st.st_mtime; - utime (path, ×); -#endif + + if (!option(OPTCHECKMBOXSIZE)) + { + /* need to restore the times here, the file was not really accessed, + * only the type was accessed. This is important, because detection + * of "new mail" depends on those times set correctly. + */ + times.actime = st.st_atime; + times.modtime = st.st_mtime; + utime (path, ×); + } } else { @@ -781,9 +777,7 @@ void mx_fastclose_mailbox (CONTEXT *ctx) /* save changes to disk */ static int sync_mailbox (CONTEXT *ctx, int *index_hint) { -#ifdef BUFFY_SIZE BUFFY *tmp = NULL; -#endif int rc = -1; if (!ctx->quiet) @@ -794,9 +788,8 @@ static int sync_mailbox (CONTEXT *ctx, int *index_hint) case M_MBOX: case M_MMDF: rc = mbox_sync_mailbox (ctx, index_hint); -#ifdef BUFFY_SIZE - tmp = mutt_find_mailbox (ctx->path); -#endif + if (option(OPTCHECKMBOXSIZE)) + tmp = mutt_find_mailbox (ctx->path); break; case M_MH: @@ -823,10 +816,8 @@ static int sync_mailbox (CONTEXT *ctx, int *index_hint) mutt_error ( _("Could not synchronize mailbox %s!"), ctx->path); #endif -#ifdef BUFFY_SIZE if (tmp && tmp->new == 0) mutt_update_mailbox (tmp); -#endif return rc; }