X-Git-Url: https://git.llucax.com/software/mutt-debian.git/blobdiff_plain/39a03160e72cdb54325dc072709386c1a943f869..c71aaa5c83036e5b1685f66887d51832b6fb49f7:/debian/patches/mutt-patched/sidebar?ds=sidebyside diff --git a/debian/patches/mutt-patched/sidebar b/debian/patches/mutt-patched/sidebar index 42ff4e9..fe06ea7 100644 --- a/debian/patches/mutt-patched/sidebar +++ b/debian/patches/mutt-patched/sidebar @@ -31,143 +31,126 @@ in the "mutt-patched" package. --- a/buffy.c +++ b/buffy.c -@@ -292,6 +292,7 @@ - char path[_POSIX_PATH_MAX]; - struct stat contex_sb; - time_t t; -+ CONTEXT *ctx; +@@ -312,6 +312,10 @@ + return 0; + } - sb.st_size=0; - contex_sb.st_dev=0; -@@ -331,6 +332,8 @@ - - for (tmp = Incoming; tmp; tmp = tmp->next) ++ mailbox->msgcount = 0; ++ mailbox->msg_unread = 0; ++ mailbox->msg_flagged = 0; ++ + while ((de = readdir (dirp)) != NULL) { -+ if ( tmp->new == 1 ) -+ tmp->has_new = 1; - #ifdef USE_IMAP - if (tmp->magic != M_IMAP) - #endif -@@ -388,10 +391,27 @@ - case M_MBOX: - case M_MMDF: + if (*de->d_name == '.') +@@ -329,7 +333,9 @@ + continue; + } + /* one new and undeleted message is enough */ +- mailbox->new = 1; ++ mailbox->has_new = mailbox->new = 1; ++ mailbox->msgcount++; ++ mailbox->msg_unread++; + rc = 1; + break; + } +@@ -337,6 +343,32 @@ -- if (STAT_CHECK) -+ { -+ if (STAT_CHECK || tmp->msgcount == 0) - { -- BuffyCount++; -- tmp->new = 1; -+ BUFFY b = *tmp; + closedir (dirp); + ++ /* ++ * count read messages (for folderlist (sidebar) we also need to count ++ * messages in cur so that we the total number of messages ++ */ ++ snprintf (path, sizeof (path), "%s/cur", mailbox->path); ++ if ((dirp = opendir (path)) == NULL) ++ { ++ mailbox->magic = 0; ++ } ++ while ((de = readdir (dirp)) != NULL) ++ { ++ char *p; ++ if (*de->d_name != '.') { ++ if ((p = strstr (de->d_name, ":2,"))) { ++ if (!strchr (p + 3, 'T')) { ++ mailbox->msgcount++; ++ if ( !strchr (p + 3, 'S')) ++ mailbox->msg_unread++; ++ if (strchr(p + 3, 'F')) ++ mailbox->msg_flagged++; ++ } ++ } else ++ mailbox->msgcount++; ++ } ++ } ++ + return rc; + } + +@@ -345,14 +377,33 @@ + { + int rc = 0; + int statcheck; ++ CONTEXT *ctx; + + if (option (OPTCHECKMBOXSIZE)) + statcheck = sb->st_size > mailbox->size; + else + statcheck = sb->st_mtime > sb->st_atime + || (mailbox->newly_created && sb->st_ctime == sb->st_mtime && sb->st_ctime == sb->st_atime); +- if (statcheck) ++ if (statcheck || mailbox->msgcount == 0) + { ++ BUFFY b = *mailbox; + int msgcount = 0; + int msg_unread = 0; + /* parse the mailbox, to see how much mail there is */ -+ ctx = mx_open_mailbox( tmp->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL); ++ ctx = mx_open_mailbox( mailbox->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL); + if(ctx) + { -+ msgcount = ctx->msgcount; ++ msgcount = ctx->msgcount; + msg_unread = ctx->unread; + mx_close_mailbox(ctx, 0); + } -+ *tmp = b; -+ tmp->msgcount = msgcount; -+ tmp->msg_unread = msg_unread; -+ if(STAT_CHECK) { -+ tmp->has_new = tmp->new = 1; -+ BuffyCount++; -+ } - } - else if (option(OPTCHECKMBOXSIZE)) - { -@@ -401,35 +421,86 @@ - if (tmp->newly_created && - (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime)) - tmp->newly_created = 0; -- -+ } - break; - - case M_MAILDIR: - -+ /* count new message */ - snprintf (path, sizeof (path), "%s/new", tmp->path); - if ((dirp = opendir (path)) == NULL) - { - tmp->magic = 0; - break; - } -+ tmp->msgcount = 0; -+ tmp->msg_unread = 0; -+ tmp->msg_flagged = 0; - while ((de = readdir (dirp)) != NULL) - { - char *p; - if (*de->d_name != '.' && - (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T'))) - { -- /* one new and undeleted message is enough */ -- BuffyCount++; -- tmp->new = 1; -- break; -+ tmp->has_new = tmp->new = 1; -+ tmp->msgcount++; -+ tmp->msg_unread++; -+ } -+ } -+ if(tmp->msg_unread) -+ BuffyCount++; -+ -+ closedir (dirp); -+ -+ /* -+ * count read messages (for folderlist (sidebar) we also need to count -+ * messages in cur so that we the total number of messages -+ */ -+ snprintf (path, sizeof (path), "%s/cur", tmp->path); -+ if ((dirp = opendir (path)) == NULL) -+ { -+ tmp->magic = 0; -+ break; -+ } -+ while ((de = readdir (dirp)) != NULL) -+ { -+ char *p; -+ if (*de->d_name != '.') { -+ if ((p = strstr (de->d_name, ":2,"))) { -+ if (!strchr (p + 3, 'T')) { -+ tmp->msgcount++; -+ if ( !strchr (p + 3, 'S')) -+ tmp->msg_unread++; -+ if (strchr(p + 3, 'F')) -+ tmp->msg_flagged++; -+ } -+ } else -+ tmp->msgcount++; - } - } - closedir (dirp); - break; ++ *mailbox = b; ++ mailbox->msgcount = msgcount; ++ mailbox->msg_unread = msg_unread; ++ if(statcheck) ++ { ++ mailbox->has_new = mailbox->new = 1; ++ } + if (!option(OPTMAILCHECKRECENT) || sb->st_mtime > mailbox->last_visited) + { + rc = 1; +@@ -374,9 +425,11 @@ + int mutt_buffy_check (int force) + { + BUFFY *tmp; ++ struct dirent *de, *dp; + struct stat sb; + struct stat contex_sb; + time_t t; ++ CONTEXT *ctx; + sb.st_size=0; + contex_sb.st_dev=0; +@@ -456,6 +509,20 @@ case M_MH: -+ { -+ DIR *dp; -+ struct dirent *de; if ((tmp->new = mh_buffy (tmp->path)) > 0) BuffyCount++; + -+ if ((dp = opendir (path)) == NULL) -+ break; -+ tmp->msgcount = 0; -+ while ((de = readdir (dp))) -+ { -+ if (mh_valid_message (de->d_name)) -+ { -+ tmp->msgcount++; -+ tmp->has_new = tmp->new = 1; -+ } -+ } -+ closedir (dp); -+ } ++ if ((dp = opendir (tmp->path)) == NULL) ++ break; ++ tmp->msgcount = 0; ++ while ((de = readdir (dp))) ++ { ++ if (mh_valid_message (de->d_name)) ++ { ++ tmp->msgcount++; ++ tmp->has_new = tmp->new = 1; ++ } ++ } ++ closedir (dp); ++ break; } } @@ -208,38 +191,25 @@ in the "mutt-patched" package. static char *Prompts[] = { -@@ -115,16 +115,16 @@ - if ((WithCrypto & APPLICATION_PGP) && (WithCrypto & APPLICATION_SMIME)) - { - if (!msg->security) -- mvaddstr (HDR_CRYPT, 0, "Security: "); -+ mvaddstr (HDR_CRYPT, SidebarWidth, "Security: "); - else if (msg->security & APPLICATION_SMIME) -- mvaddstr (HDR_CRYPT, 0, " S/MIME: "); -+ mvaddstr (HDR_CRYPT, SidebarWidth, " S/MIME: "); - else if (msg->security & APPLICATION_PGP) -- mvaddstr (HDR_CRYPT, 0, " PGP: "); -+ mvaddstr (HDR_CRYPT, SidebarWidth, " PGP: "); +@@ -112,7 +112,7 @@ + { + int off = 0; + +- mvaddstr (HDR_CRYPT, 0, "Security: "); ++ mvaddstr (HDR_CRYPT, SidebarWidth, "Security: "); + + if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0) + { +@@ -144,7 +144,7 @@ } - else if ((WithCrypto & APPLICATION_SMIME)) -- mvaddstr (HDR_CRYPT, 0, " S/MIME: "); -+ mvaddstr (HDR_CRYPT, SidebarWidth, " S/MIME: "); - else if ((WithCrypto & APPLICATION_PGP)) -- mvaddstr (HDR_CRYPT, 0, " PGP: "); -+ mvaddstr (HDR_CRYPT, SidebarWidth, " PGP: "); - else - return; -@@ -148,7 +148,7 @@ - } clrtoeol (); - - move (HDR_CRYPTINFO, 0); + move (HDR_CRYPTINFO, SidebarWidth); clrtoeol (); + if ((WithCrypto & APPLICATION_PGP) - && msg->security & APPLICATION_PGP && msg->security & SIGN) -@@ -164,7 +164,7 @@ +@@ -161,7 +161,7 @@ && (msg->security & ENCRYPT) && SmimeCryptAlg && *SmimeCryptAlg) { @@ -248,7 +218,7 @@ in the "mutt-patched" package. NONULL(SmimeCryptAlg)); off = 20; } -@@ -178,7 +178,7 @@ +@@ -175,7 +175,7 @@ int c; char *t; @@ -257,7 +227,7 @@ in the "mutt-patched" package. if (!chain) { -@@ -193,7 +193,7 @@ +@@ -190,7 +190,7 @@ if (t && t[0] == '0' && t[1] == '\0') t = ""; @@ -266,7 +236,7 @@ in the "mutt-patched" package. break; addstr (NONULL(t)); -@@ -245,7 +245,7 @@ +@@ -242,7 +242,7 @@ buf[0] = 0; rfc822_write_address (buf, sizeof (buf), addr, 1); @@ -275,7 +245,7 @@ in the "mutt-patched" package. mutt_paddstr (W, buf); } -@@ -255,10 +255,10 @@ +@@ -252,10 +252,10 @@ draw_envelope_addr (HDR_TO, msg->env->to); draw_envelope_addr (HDR_CC, msg->env->cc); draw_envelope_addr (HDR_BCC, msg->env->bcc); @@ -288,7 +258,7 @@ in the "mutt-patched" package. mutt_paddstr (W, fcc); if (WithCrypto) -@@ -269,7 +269,7 @@ +@@ -266,7 +266,7 @@ #endif SETCOLOR (MT_COLOR_STATUS); @@ -297,7 +267,7 @@ in the "mutt-patched" package. BKGDSET (MT_COLOR_STATUS); clrtoeol (); -@@ -307,7 +307,7 @@ +@@ -304,7 +304,7 @@ /* redraw the expanded list so the user can see the result */ buf[0] = 0; rfc822_write_address (buf, sizeof (buf), *addr, 1); @@ -306,7 +276,7 @@ in the "mutt-patched" package. mutt_paddstr (W, buf); return 0; -@@ -552,7 +552,7 @@ +@@ -549,7 +549,7 @@ if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0) { mutt_str_replace (&msg->env->subject, buf); @@ -315,7 +285,7 @@ in the "mutt-patched" package. clrtoeol (); if (msg->env->subject) mutt_paddstr (W, msg->env->subject); -@@ -569,7 +569,7 @@ +@@ -566,7 +566,7 @@ { strfcpy (fcc, buf, fcclen); mutt_pretty_mailbox (fcc, fcclen); @@ -336,7 +306,7 @@ in the "mutt-patched" package. #ifdef USE_POP #include "pop.h" -@@ -536,8 +538,12 @@ +@@ -532,8 +534,12 @@ menu->redraw |= REDRAW_STATUS; if (do_buffy_notify) { @@ -351,7 +321,7 @@ in the "mutt-patched" package. } else do_buffy_notify = 1; -@@ -549,6 +555,7 @@ +@@ -545,6 +551,7 @@ if (menu->redraw & REDRAW_FULL) { menu_redraw_full (menu); @@ -359,7 +329,7 @@ in the "mutt-patched" package. mutt_show_error (); } -@@ -571,10 +578,13 @@ +@@ -567,10 +574,13 @@ if (menu->redraw & REDRAW_STATUS) { @@ -373,7 +343,7 @@ in the "mutt-patched" package. mutt_paddstr (COLS, buf); SETCOLOR (MT_COLOR_NORMAL); BKGDSET (MT_COLOR_NORMAL); -@@ -595,7 +605,7 @@ +@@ -591,7 +601,7 @@ menu->oldcurrent = -1; if (option (OPTARROWCURSOR)) @@ -382,7 +352,7 @@ in the "mutt-patched" package. else if (option (OPTBRAILLEFRIENDLY)) move (menu->current - menu->top + menu->offset, 0); else -@@ -1075,6 +1085,7 @@ +@@ -1089,6 +1099,7 @@ menu->redraw = REDRAW_FULL; break; @@ -390,7 +360,7 @@ in the "mutt-patched" package. case OP_MAIN_CHANGE_FOLDER: case OP_MAIN_NEXT_UNREAD_MAILBOX: -@@ -1106,7 +1117,11 @@ +@@ -1120,7 +1131,11 @@ { mutt_buffy (buf, sizeof (buf)); @@ -403,7 +373,7 @@ in the "mutt-patched" package. { if (menu->menu == MENU_PAGER) { -@@ -1124,6 +1139,7 @@ +@@ -1138,6 +1153,7 @@ } mutt_expand_path (buf, sizeof (buf)); @@ -411,7 +381,7 @@ in the "mutt-patched" package. if (mx_get_magic (buf) <= 0) { mutt_error (_("%s is not a mailbox."), buf); -@@ -2216,6 +2232,12 @@ +@@ -2241,6 +2257,12 @@ mutt_what_key(); break; @@ -447,7 +417,7 @@ in the "mutt-patched" package. void mutt_tag_set_flag (int flag, int bf) --- a/functions.h +++ b/functions.h -@@ -169,6 +169,11 @@ +@@ -170,6 +170,11 @@ { "decrypt-save", OP_DECRYPT_SAVE, NULL }, @@ -459,7 +429,7 @@ in the "mutt-patched" package. { NULL, 0, NULL } }; -@@ -270,6 +275,11 @@ +@@ -274,6 +279,11 @@ { "what-key", OP_WHAT_KEY, NULL }, @@ -481,7 +451,7 @@ in the "mutt-patched" package. WHERE char *Signature; WHERE char *SimpleSearch; #if USE_SMTP -@@ -209,6 +210,9 @@ +@@ -210,6 +211,9 @@ WHERE short ScoreThresholdRead; WHERE short ScoreThresholdFlag; @@ -493,7 +463,7 @@ in the "mutt-patched" package. WHERE short ImapPipelineDepth; --- a/init.h +++ b/init.h -@@ -1963,6 +1963,22 @@ +@@ -1965,6 +1965,22 @@ ** not used. ** (PGP only) */ @@ -528,13 +498,13 @@ in the "mutt-patched" package. #define M_ADD_FROM 1 /* add a From_ line */ --- a/Makefile.am +++ b/Makefile.am -@@ -29,7 +29,8 @@ +@@ -33,7 +33,8 @@ score.c send.c sendlib.c signal.c sort.c \ status.c system.c thread.c charset.c history.c lib.c \ muttlib.c editmsg.c mbyte.c \ -- url.c ascii.c crypt-mod.c crypt-mod.h -+ url.c ascii.c crypt-mod.c crypt-mod.h \ -+ sidebar.c +- url.c ascii.c crypt-mod.c crypt-mod.h safe_asprintf.c ++ url.c ascii.c crypt-mod.c crypt-mod.h safe_asprintf.c \ ++ sidebar.c nodist_mutt_SOURCES = $(BUILT_SOURCES) @@ -548,7 +518,7 @@ in the "mutt-patched" package. ctx->mtime = sb.st_mtime; ctx->size = sb.st_size; -@@ -259,6 +260,7 @@ +@@ -255,6 +256,7 @@ ctx->size = sb.st_size; ctx->mtime = sb.st_mtime; @@ -652,7 +622,7 @@ in the "mutt-patched" package. menu_make_entry (buf, sizeof (buf), menu, menu->current); menu_pad_string (buf, sizeof (buf)); -@@ -885,7 +887,7 @@ +@@ -884,7 +886,7 @@ if (option (OPTARROWCURSOR)) @@ -682,7 +652,7 @@ in the "mutt-patched" package. --- a/mutt.h +++ b/mutt.h -@@ -426,6 +426,7 @@ +@@ -431,6 +431,7 @@ OPTSAVEEMPTY, OPTSAVENAME, OPTSCORE, @@ -690,7 +660,7 @@ in the "mutt-patched" package. OPTSIGDASHES, OPTSIGONTOP, OPTSORTRE, -@@ -865,6 +866,7 @@ +@@ -874,6 +875,7 @@ { char *path; FILE *fp; @@ -698,7 +668,7 @@ in the "mutt-patched" package. time_t mtime; off_t size; off_t vsize; -@@ -905,6 +907,7 @@ +@@ -914,6 +916,7 @@ unsigned int quiet : 1; /* inhibit status messages? */ unsigned int collapsed : 1; /* are all threads collapsed? */ unsigned int closing : 1; /* mailbox is being closed */ @@ -708,7 +678,7 @@ in the "mutt-patched" package. void *data; /* driver specific data */ --- a/muttlib.c +++ b/muttlib.c -@@ -1232,6 +1232,8 @@ +@@ -1286,6 +1286,8 @@ pl = pw = 1; /* see if there's room to add content, else ignore */ @@ -717,7 +687,7 @@ in the "mutt-patched" package. if ((col < COLS && wlen < destlen) || soft) { int pad; -@@ -1274,6 +1276,52 @@ +@@ -1329,6 +1331,52 @@ col += wid; src += pl; } @@ -772,7 +742,7 @@ in the "mutt-patched" package. else if (ch == '|') --- a/mx.c +++ b/mx.c -@@ -596,6 +596,7 @@ +@@ -595,6 +595,7 @@ * M_APPEND open mailbox for appending * M_READONLY open mailbox in read-only mode * M_QUIET only print error messages @@ -780,7 +750,7 @@ in the "mutt-patched" package. * ctx if non-null, context struct to use */ CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx) -@@ -618,6 +619,8 @@ +@@ -617,6 +618,8 @@ ctx->quiet = 1; if (flags & M_READONLY) ctx->readonly = 1; @@ -789,7 +759,7 @@ in the "mutt-patched" package. if (flags & (M_APPEND|M_NEWFOLDER)) { -@@ -722,9 +725,21 @@ +@@ -721,9 +724,21 @@ void mx_fastclose_mailbox (CONTEXT *ctx) { int i; @@ -809,11 +779,11 @@ in the "mutt-patched" package. + } +#endif - if (ctx->mx_close) - ctx->mx_close (ctx); + /* never announce that a mailbox we've just left has new mail. #3290 + * XXX: really belongs in mx_close_mailbox, but this is a nice hook point */ --- a/OPS +++ b/OPS -@@ -179,3 +179,8 @@ +@@ -180,3 +180,8 @@ OP_MAIN_SHOW_LIMIT "show currently active limit pattern" OP_MAIN_COLLAPSE_THREAD "collapse/uncollapse current thread" OP_MAIN_COLLAPSE_ALL "collapse/uncollapse all threads" @@ -832,16 +802,15 @@ in the "mutt-patched" package. #include "mutt_crypt.h" -@@ -1071,6 +1072,8 @@ - mbstate_t mbstate; +@@ -1099,6 +1100,7 @@ + if (check_attachment_marker ((char *)buf) == 0) + wrap_cols = COLS; - int wrap_cols = mutt_term_width ((flags & M_PAGER_NOWRAP) ? 0 : Wrap); -+ + wrap_cols -= SidebarWidth; - /* FIXME: this should come from lineInfo */ memset(&mbstate, 0, sizeof(mbstate)); -@@ -1717,7 +1720,7 @@ + +@@ -1745,7 +1747,7 @@ if ((redraw & REDRAW_BODY) || topline != oldtopline) { do { @@ -850,7 +819,7 @@ in the "mutt-patched" package. curline = oldtopline = topline; lines = 0; force_redraw = 0; -@@ -1730,6 +1733,7 @@ +@@ -1758,6 +1760,7 @@ &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) lines++; curline++; @@ -858,7 +827,7 @@ in the "mutt-patched" package. } last_offset = lineInfo[curline].offset; } while (force_redraw); -@@ -1743,6 +1747,7 @@ +@@ -1771,6 +1774,7 @@ addch ('~'); addch ('\n'); lines++; @@ -866,7 +835,7 @@ in the "mutt-patched" package. } /* We are going to update the pager status bar, so it isn't * necessary to reset to normal color now. */ -@@ -1766,11 +1771,11 @@ +@@ -1794,11 +1798,11 @@ /* print out the pager status bar */ SETCOLOR (MT_COLOR_STATUS); BKGDSET (MT_COLOR_STATUS); @@ -880,7 +849,7 @@ in the "mutt-patched" package. size_t l2 = sizeof (buffer); hfi.hdr = (IsHeader (extra)) ? extra->hdr : extra->bdy->hdr; mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); -@@ -1780,7 +1785,7 @@ +@@ -1808,7 +1812,7 @@ { char bn[STRING]; snprintf (bn, sizeof (bn), "%s (%s)", banner, pager_progress_str); @@ -889,7 +858,7 @@ in the "mutt-patched" package. } BKGDSET (MT_COLOR_NORMAL); SETCOLOR (MT_COLOR_NORMAL); -@@ -1798,18 +1803,23 @@ +@@ -1826,18 +1830,23 @@ /* redraw the pager_index indicator, because the * flags for this message might have changed. */ menu_redraw_current (index); @@ -915,7 +884,7 @@ in the "mutt-patched" package. redraw = 0; if (option(OPTBRAILLEFRIENDLY)) { -@@ -2742,6 +2752,13 @@ +@@ -2769,6 +2778,13 @@ mutt_what_key (); break; @@ -1346,7 +1315,7 @@ in the "mutt-patched" package. { --- a/imap/command.c +++ b/imap/command.c -@@ -1009,6 +1009,13 @@ +@@ -1011,6 +1011,13 @@ opened */ status->uidnext = oldun;