diff options
author | miwi <miwi@FreeBSD.org> | 2009-06-06 05:29:29 +0800 |
---|---|---|
committer | miwi <miwi@FreeBSD.org> | 2009-06-06 05:29:29 +0800 |
commit | 1038c27d41b40c977df621d8d10f2c684ef317f0 (patch) | |
tree | 25135d66ee81a4b5603d24d8f4c1ff01eca5593c /mail/mutt-devel | |
parent | bf4f6461022a623138333dbe9d523acdce908647 (diff) | |
download | freebsd-ports-gnome-1038c27d41b40c977df621d8d10f2c684ef317f0.tar.gz freebsd-ports-gnome-1038c27d41b40c977df621d8d10f2c684ef317f0.tar.zst freebsd-ports-gnome-1038c27d41b40c977df621d8d10f2c684ef317f0.zip |
- Remove unused configure args
- pet portlint
- Update sidebar-patches [1]
PR: 135146
Submitted by: Ulrich Spoerlein <uqs@spoerlein.net>
Approved by: maintainer [1]
Diffstat (limited to 'mail/mutt-devel')
-rw-r--r-- | mail/mutt-devel/Makefile | 12 | ||||
-rw-r--r-- | mail/mutt-devel/files/extra-patch-sidebar | 812 | ||||
-rw-r--r-- | mail/mutt-devel/files/extra-patch-sidebar-nntp | 810 |
3 files changed, 865 insertions, 769 deletions
diff --git a/mail/mutt-devel/Makefile b/mail/mutt-devel/Makefile index b2ba225666fe..79c37c89c8bf 100644 --- a/mail/mutt-devel/Makefile +++ b/mail/mutt-devel/Makefile @@ -115,7 +115,7 @@ PORTNAME= mutt-devel PORTVERSION= 1.5.19 -PORTREVISION?= 1 +PORTREVISION?= 2 CATEGORIES+= mail ipv6 .if defined(WITH_MUTT_NNTP) CATEGORIES+= news @@ -159,9 +159,9 @@ DATADIR?= ${PREFIX}/share/mutt LDFLAGS+= -L${LOCALBASE}/lib CONFIGURE_ENV= CC="${CC} -I${LOCALBASE}/include" LDFLAGS="${LDFLAGS}" CONFIGURE_ARGS= --disable-fcntl --with-ssl=${OPENSSLBASE} \ - --with-sharedir=${PREFIX}/share/mutt --with-docdir=${DOCSDIR} \ - --sysconfdir=${PREFIX}/etc --enable-external-dotlock \ - --enable-pop --enable-imap --disable-warnings + --with-docdir=${DOCSDIR} --sysconfdir=${PREFIX}/etc \ + --enable-external-dotlock --enable-pop --enable-imap \ + --disable-warnings .if defined(MUTT_CONFIGURE_ARGS) CONFIGURE_ARGS+= ${MUTT_CONFIGURE_ARGS} .endif @@ -494,7 +494,7 @@ CONFIGURE_ARGS+= --enable-hcache --without-gdbm --with-bdb CONFIGURE_ARGS+= --disable-hcache .endif .if defined(WITH_MUTT_MAILDIR_HEADER_CACHE) -CONFIGURE_ARGS+= --disable-inodesort --without-qdbm +CONFIGURE_ARGS+= --without-qdbm .endif .if defined(WITH_MUTT_SIDEBAR_PATCH) SCRIPTS_ENV+= MUTT_SIDEBAR_PATCH="yes" @@ -540,7 +540,7 @@ post-patch:: .if ${XML_USED} == yes BUILD_DEPENDS+= xsltproc:${PORTSDIR}/textproc/libxslt \ - ${PREFIX}/share/xsl/docbook/html/docbook.xsl:${PORTSDIR}/textproc/docbook-xsl \ + ${LOCALBASE}/share/xsl/docbook/html/docbook.xsl:${PORTSDIR}/textproc/docbook-xsl \ lynx:${PORTSDIR}/www/lynx post-patch:: @${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-doc-xml diff --git a/mail/mutt-devel/files/extra-patch-sidebar b/mail/mutt-devel/files/extra-patch-sidebar index fa1b558623d7..ec18eb690f91 100644 --- a/mail/mutt-devel/files/extra-patch-sidebar +++ b/mail/mutt-devel/files/extra-patch-sidebar @@ -24,148 +24,7 @@ --- PATCHES 2008-03-19 21:07:06.000000000 +0100 +++ PATCHES 2009-02-17 08:17:03.000000000 +0100 @@ -0,0 +1 @@ -+patch-1.5.17.sidebar.20080412 ---- buffy.c 2008-08-30 01:39:48.000000000 +0200 -+++ buffy.c 2009-02-17 08:13:07.000000000 +0100 -@@ -259,7 +259,7 @@ - char path[_POSIX_PATH_MAX]; - struct stat contex_sb; - time_t t; -- -+ CONTEXT *ctx; - #ifdef USE_IMAP - /* update postponed count as well, on force */ - if (force) -@@ -294,6 +294,8 @@ - - for (tmp = Incoming; tmp; tmp = tmp->next) - { -+ if ( tmp->new == 1 ) -+ tmp->has_new = 1; - #ifdef USE_IMAP - if (tmp->magic != M_IMAP) - #endif -@@ -350,10 +352,27 @@ - case M_MBOX: - case M_MMDF: - -- if (STAT_CHECK) -+ { -+ if (STAT_CHECK || tmp->msgcount == 0) - { -- BuffyCount++; -- tmp->new = 1; -+ BUFFY b = *tmp; -+ 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); -+ if(ctx) -+ { -+ 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)) - { -@@ -363,35 +382,82 @@ - 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 != '.' && -+ (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T'))) -+ { -+ tmp->msgcount++; -+ if (p && strchr(p + 3, 'F')) { -+ tmp->msg_flagged++; -+ } - } - } - closedir (dirp); - break; - - case M_MH: -- if ((tmp->new = mh_buffy (tmp->path)) > 0) -- BuffyCount++; -+ { -+ 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); -+ } - break; - } - } ++patch-1.5.19.sidebar.20090523 --- buffy.h 2008-05-22 20:25:19.000000000 +0200 +++ buffy.h 2009-02-17 08:13:07.000000000 +0100 @@ -25,7 +25,12 @@ @@ -751,134 +610,6 @@ }; typedef struct color_line ---- muttlib.c 2009-01-05 20:20:53.000000000 +0100 -+++ muttlib.c 2009-02-17 08:13:07.000000000 +0100 -@@ -1217,32 +1217,80 @@ - pl = pw = 1; - - /* see if there's room to add content, else ignore */ -- if ((col < COLS && wlen < destlen) || soft) -+ if ( DrawFullLine ) - { -- int pad; -- -- /* get contents after padding */ -- mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); -- len = mutt_strlen (buf); -- wid = mutt_strwidth (buf); -- -- /* try to consume as many columns as we can, if we don't have -- * memory for that, use as much memory as possible */ -- pad = (COLS - col - wid) / pw; -- if (pad > 0 && wlen + (pad * pl) + len > destlen) -- pad = ((signed)(destlen - wlen - len)) / pl; -- if (pad > 0) -+ if ((col < COLS && wlen < destlen) || soft) - { -- while (pad--) -+ int pad; -+ -+ /* get contents after padding */ -+ mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); -+ len = mutt_strlen (buf); -+ wid = mutt_strwidth (buf); -+ -+ /* try to consume as many columns as we can, if we don't have -+ * memory for that, use as much memory as possible */ -+ pad = (COLS - col - wid) / pw; -+ if (pad > 0 && wlen + (pad * pl) + len > destlen) -+ pad = ((signed)(destlen - wlen - len)) / pl; -+ if (pad > 0) -+ { -+ while (pad--) -+ { -+ memcpy (wptr, src, pl); -+ wptr += pl; -+ wlen += pl; -+ col += pw; -+ } -+ } -+ else if (soft && pad < 0) - { -- memcpy (wptr, src, pl); -- wptr += pl; -- wlen += pl; -- col += pw; -+ /* set wptr and wlen back just enough bytes to make sure buf -+ * fits on screen, \0-terminate dest so mutt_wstr_trunc() -+ * can correctly compute string's length */ -+ if (pad < -wlen) -+ pad = -wlen; -+ *wptr = 0; -+ wlen = mutt_wstr_trunc (dest, wlen + pad, col + pad, &col); -+ wptr = dest + wlen; - } -+ if (len + wlen > destlen) -+ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL); -+ memcpy (wptr, buf, len); -+ wptr += len; -+ wlen += len; -+ col += wid; -+ src += pl; - } -- else if (soft && pad < 0) -+ } -+ else -+ { -+ if ((col < COLS-SidebarWidth && wlen < destlen) || soft) - { -+ int pad; -+ -+ /* get contents after padding */ -+ mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); -+ len = mutt_strlen (buf); -+ wid = mutt_strwidth (buf); -+ -+ /* try to consume as many columns as we can, if we don't have -+ * memory for that, use as much memory as possible */ -+ pad = (COLS - SidebarWidth - col - wid) / pw; -+ if (pad > 0 && wlen + (pad * pl) + len > destlen) -+ pad = ((signed)(destlen - wlen - len)) / pl; -+ if (pad > 0) -+ { -+ while (pad--) -+ { -+ memcpy (wptr, src, pl); -+ wptr += pl; -+ wlen += pl; -+ col += pw; -+ } -+ } -+ else if (soft && pad < 0) -+ { - /* \0-terminate dest for length computation in mutt_wstr_trunc() */ - *wptr = 0; - /* make sure right part is at most as wide as display */ -@@ -1250,15 +1298,16 @@ - /* truncate left so that right part fits completely in */ - wlen = mutt_wstr_trunc (dest, destlen - len, col + pad, &col); - wptr = dest + wlen; -+ } -+ if (len + wlen > destlen) -+ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL); -+ memcpy (wptr, buf, len); -+ wptr += len; -+ wlen += len; -+ col += wid; -+ src += pl; -+ } - } -- if (len + wlen > destlen) -- len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL); -- memcpy (wptr, buf, len); -- wptr += len; -- wlen += len; -- col += wid; -- src += pl; -- } - break; /* skip rest of input */ - } - else if (ch == '|') --- mx.c 2009-01-05 20:20:53.000000000 +0100 +++ mx.c 2009-02-17 08:13:07.000000000 +0100 @@ -611,6 +611,7 @@ @@ -920,118 +651,6 @@ if (ctx->mx_close) ctx->mx_close (ctx); ---- pager.c 2009-01-05 20:20:53.000000000 +0100 -+++ pager.c 2009-02-17 08:26:41.000000000 +0100 -@@ -29,6 +29,7 @@ - #include "pager.h" - #include "attach.h" - #include "mbyte.h" -+#include "sidebar.h" - - #include "mutt_crypt.h" - -@@ -1060,6 +1061,9 @@ - mbstate_t mbstate; - - 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)); -@@ -1694,7 +1698,7 @@ - if ((redraw & REDRAW_BODY) || topline != oldtopline) - { - do { -- move (bodyoffset, 0); -+ move (bodyoffset, SidebarWidth); - curline = oldtopline = topline; - lines = 0; - force_redraw = 0; -@@ -1707,6 +1711,7 @@ - &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) - lines++; - curline++; -+ move(lines + bodyoffset, SidebarWidth); - } - last_offset = lineInfo[curline].offset; - } while (force_redraw); -@@ -1720,6 +1725,7 @@ - addch ('~'); - addch ('\n'); - lines++; -+ move(lines + bodyoffset, SidebarWidth); - } - /* We are going to update the pager status bar, so it isn't - * necessary to reset to normal color now. */ -@@ -1743,22 +1749,22 @@ - /* print out the pager status bar */ - SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); -- CLEARLINE (statusoffset); -+ CLEARLINE_WIN (statusoffset); - if (IsHeader (extra)) - { -- size_t l1 = COLS * MB_LEN_MAX; -+ size_t l1 = (COLS * MB_LEN_MAX) - (SidebarWidth * MB_LEN_MAX); - size_t l2 = sizeof (buffer); - hfi.hdr = extra->hdr; - mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); - } - else if (IsMsgAttach (extra)) - { -- size_t l1 = COLS * MB_LEN_MAX; -+ size_t l1 = (COLS * MB_LEN_MAX) - (SidebarWidth * MB_LEN_MAX); - size_t l2 = sizeof (buffer); - hfi.hdr = extra->bdy->hdr; - mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); - } -- mutt_paddstr (COLS, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); -+ mutt_paddstr (COLS-SidebarWidth, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); - BKGDSET (MT_COLOR_NORMAL); - SETCOLOR (MT_COLOR_NORMAL); - } -@@ -1768,18 +1774,24 @@ - /* redraw the pager_index indicator, because the - * flags for this message might have changed. */ - menu_redraw_current (index); -+ draw_sidebar(MENU_PAGER); - - /* print out the index status bar */ - menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); - -- move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0); -+ move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), -+ SidebarWidth); - SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); -- mutt_paddstr (COLS, buffer); -+ mutt_paddstr (COLS-SidebarWidth, buffer); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); - } - -+ /* if we're not using the index, update every time */ -+ if ( index == 0 ) -+ draw_sidebar(MENU_PAGER); -+ - redraw = 0; - - if (option(OPTBRAILLEFRIENDLY)) { -@@ -2671,6 +2683,12 @@ - mutt_what_key (); - break; - -+ case OP_SIDEBAR_SCROLL_UP: -+ case OP_SIDEBAR_SCROLL_DOWN: -+ case OP_SIDEBAR_NEXT: -+ case OP_SIDEBAR_PREV: -+ scroll_sidebar(ch, MENU_PAGER); -+ break; - default: - ch = -1; - break; --- sidebar.c 1970-01-01 01:00:00.000000000 +0100 +++ sidebar.c 2009-02-17 08:13:08.000000000 +0100 @@ -0,0 +1,333 @@ @@ -1407,3 +1026,432 @@ +void set_buffystats(CONTEXT*); + +#endif /* SIDEBAR_H */ +*** buffy.c.orig 2008-08-29 18:39:48.000000000 -0500 +--- buffy.c 2009-05-22 08:45:01.000000000 -0500 +*************** +*** 259,265 **** + char path[_POSIX_PATH_MAX]; + struct stat contex_sb; + time_t t; +! + #ifdef USE_IMAP + /* update postponed count as well, on force */ + if (force) +--- 259,265 ---- + char path[_POSIX_PATH_MAX]; + struct stat contex_sb; + time_t t; +! CONTEXT *ctx; + #ifdef USE_IMAP + /* update postponed count as well, on force */ + if (force) +*************** +*** 294,299 **** +--- 294,301 ---- + + for (tmp = Incoming; tmp; tmp = tmp->next) + { ++ if ( tmp->new == 1 ) ++ tmp->has_new = 1; + #ifdef USE_IMAP + if (tmp->magic != M_IMAP) + #endif +*************** +*** 350,359 **** + case M_MBOX: + case M_MMDF: + +! if (STAT_CHECK) + { +! BuffyCount++; +! tmp->new = 1; + } + else if (option(OPTCHECKMBOXSIZE)) + { +--- 352,378 ---- + case M_MBOX: + case M_MMDF: + +! { +! if (STAT_CHECK || tmp->msgcount == 0) + { +! BUFFY b = *tmp; +! 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); +! if(ctx) +! { +! 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)) + { +*************** +*** 363,397 **** + if (tmp->newly_created && + (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime)) + tmp->newly_created = 0; +! + break; + + case M_MAILDIR: + + snprintf (path, sizeof (path), "%s/new", tmp->path); + if ((dirp = opendir (path)) == NULL) + { + tmp->magic = 0; + break; + } + 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; + } + } + closedir (dirp); + break; + + case M_MH: + if ((tmp->new = mh_buffy (tmp->path)) > 0) + BuffyCount++; + break; + } + } +--- 382,467 ---- + 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'))) + { +! 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; + + 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); ++ } + break; + } + } +*** muttlib.c.orig 2009-01-05 13:20:53.000000000 -0600 +--- muttlib.c 2009-05-21 23:08:38.000000000 -0500 +*************** +*** 1217,1222 **** +--- 1217,1224 ---- + pl = pw = 1; + + /* see if there's room to add content, else ignore */ ++ if ( DrawFullLine ) ++ { + if ((col < COLS && wlen < destlen) || soft) + { + int pad; +*************** +*** 1259,1264 **** +--- 1261,1312 ---- + col += wid; + src += pl; + } ++ } ++ else ++ { ++ if ((col < COLS-SidebarWidth && wlen < destlen) || soft) ++ { ++ int pad; ++ ++ /* get contents after padding */ ++ mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); ++ len = mutt_strlen (buf); ++ wid = mutt_strwidth (buf); ++ ++ /* try to consume as many columns as we can, if we don't have ++ * memory for that, use as much memory as possible */ ++ pad = (COLS - SidebarWidth - col - wid) / pw; ++ if (pad > 0 && wlen + (pad * pl) + len > destlen) ++ pad = ((signed)(destlen - wlen - len)) / pl; ++ if (pad > 0) ++ { ++ while (pad--) ++ { ++ memcpy (wptr, src, pl); ++ wptr += pl; ++ wlen += pl; ++ col += pw; ++ } ++ } ++ else if (soft && pad < 0) ++ { ++ /* \0-terminate dest for length computation in mutt_wstr_trunc() */ ++ *wptr = 0; ++ /* make sure right part is at most as wide as display */ ++ len = mutt_wstr_trunc (buf, destlen, COLS, &wid); ++ /* truncate left so that right part fits completely in */ ++ wlen = mutt_wstr_trunc (dest, destlen - len, col + pad, &col); ++ wptr = dest + wlen; ++ } ++ if (len + wlen > destlen) ++ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL); ++ memcpy (wptr, buf, len); ++ wptr += len; ++ wlen += len; ++ col += wid; ++ src += pl; ++ } ++ } + break; /* skip rest of input */ + } + else if (ch == '|') +*** pager.c.orig 2009-01-05 13:20:53.000000000 -0600 +--- pager.c 2009-05-21 23:08:38.000000000 -0500 +*************** +*** 29,34 **** +--- 29,35 ---- + #include "pager.h" + #include "attach.h" + #include "mbyte.h" ++ #include "sidebar.h" + + #include "mutt_crypt.h" + +*************** +*** 1060,1065 **** +--- 1061,1068 ---- + mbstate_t mbstate; + + 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)); +*************** +*** 1694,1700 **** + if ((redraw & REDRAW_BODY) || topline != oldtopline) + { + do { +! move (bodyoffset, 0); + curline = oldtopline = topline; + lines = 0; + force_redraw = 0; +--- 1697,1703 ---- + if ((redraw & REDRAW_BODY) || topline != oldtopline) + { + do { +! move (bodyoffset, SidebarWidth); + curline = oldtopline = topline; + lines = 0; + force_redraw = 0; +*************** +*** 1707,1712 **** +--- 1710,1716 ---- + &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) + lines++; + curline++; ++ move(lines + bodyoffset, SidebarWidth); + } + last_offset = lineInfo[curline].offset; + } while (force_redraw); +*************** +*** 1720,1725 **** +--- 1724,1730 ---- + addch ('~'); + addch ('\n'); + lines++; ++ move(lines + bodyoffset, SidebarWidth); + } + /* We are going to update the pager status bar, so it isn't + * necessary to reset to normal color now. */ +*************** +*** 1743,1764 **** + /* print out the pager status bar */ + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! CLEARLINE (statusoffset); + if (IsHeader (extra)) + { +! size_t l1 = COLS * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } + else if (IsMsgAttach (extra)) + { +! size_t l1 = COLS * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->bdy->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } +! mutt_paddstr (COLS, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); + BKGDSET (MT_COLOR_NORMAL); + SETCOLOR (MT_COLOR_NORMAL); + } +--- 1748,1769 ---- + /* print out the pager status bar */ + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! CLEARLINE_WIN (statusoffset); + if (IsHeader (extra)) + { +! size_t l1 = (COLS-SidebarWidth) * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } + else if (IsMsgAttach (extra)) + { +! size_t l1 = (COLS-SidebarWidth) * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->bdy->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } +! mutt_paddstr (COLS-SidebarWidth, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); + BKGDSET (MT_COLOR_NORMAL); + SETCOLOR (MT_COLOR_NORMAL); + } +*************** +*** 1768,1785 **** + /* redraw the pager_index indicator, because the + * flags for this message might have changed. */ + menu_redraw_current (index); + + /* print out the index status bar */ + menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); + +! move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0); + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! mutt_paddstr (COLS, buffer); + SETCOLOR (MT_COLOR_NORMAL); + BKGDSET (MT_COLOR_NORMAL); + } + + redraw = 0; + + if (option(OPTBRAILLEFRIENDLY)) { +--- 1773,1795 ---- + /* redraw the pager_index indicator, because the + * flags for this message might have changed. */ + menu_redraw_current (index); ++ draw_sidebar(MENU_PAGER); + + /* print out the index status bar */ + menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); + +! move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), SidebarWidth); + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! mutt_paddstr (COLS-SidebarWidth, buffer); + SETCOLOR (MT_COLOR_NORMAL); + BKGDSET (MT_COLOR_NORMAL); + } + ++ /* if we're not using the index, update every time */ ++ if ( index == 0 ) ++ draw_sidebar(MENU_PAGER); ++ + redraw = 0; + + if (option(OPTBRAILLEFRIENDLY)) { +*************** +*** 2671,2676 **** +--- 2681,2693 ---- + mutt_what_key (); + break; + ++ case OP_SIDEBAR_SCROLL_UP: ++ case OP_SIDEBAR_SCROLL_DOWN: ++ case OP_SIDEBAR_NEXT: ++ case OP_SIDEBAR_PREV: ++ scroll_sidebar(ch, MENU_PAGER); ++ break; ++ + default: + ch = -1; + break; diff --git a/mail/mutt-devel/files/extra-patch-sidebar-nntp b/mail/mutt-devel/files/extra-patch-sidebar-nntp index 1e944cd69afe..47f2fc3c4acd 100644 --- a/mail/mutt-devel/files/extra-patch-sidebar-nntp +++ b/mail/mutt-devel/files/extra-patch-sidebar-nntp @@ -25,147 +25,6 @@ +++ PATCHES 2009-02-17 08:17:03.000000000 +0100 @@ -0,0 +1 @@ +patch-1.5.17.sidebar.20080412 ---- buffy.c 2008-08-30 01:39:48.000000000 +0200 -+++ buffy.c 2009-02-17 08:13:07.000000000 +0100 -@@ -259,7 +259,7 @@ - char path[_POSIX_PATH_MAX]; - struct stat contex_sb; - time_t t; -- -+ CONTEXT *ctx; - #ifdef USE_IMAP - /* update postponed count as well, on force */ - if (force) -@@ -294,6 +294,8 @@ - - for (tmp = Incoming; tmp; tmp = tmp->next) - { -+ if ( tmp->new == 1 ) -+ tmp->has_new = 1; - #ifdef USE_IMAP - if (tmp->magic != M_IMAP) - #endif -@@ -350,10 +352,27 @@ - case M_MBOX: - case M_MMDF: - -- if (STAT_CHECK) -+ { -+ if (STAT_CHECK || tmp->msgcount == 0) - { -- BuffyCount++; -- tmp->new = 1; -+ BUFFY b = *tmp; -+ 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); -+ if(ctx) -+ { -+ 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)) - { -@@ -363,35 +382,82 @@ - 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 != '.' && -+ (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T'))) -+ { -+ tmp->msgcount++; -+ if (p && strchr(p + 3, 'F')) { -+ tmp->msg_flagged++; -+ } - } - } - closedir (dirp); - break; - - case M_MH: -- if ((tmp->new = mh_buffy (tmp->path)) > 0) -- BuffyCount++; -+ { -+ 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); -+ } - break; - } - } --- buffy.h 2008-05-22 20:25:19.000000000 +0200 +++ buffy.h 2009-02-17 08:13:07.000000000 +0100 @@ -25,7 +25,12 @@ @@ -765,134 +624,6 @@ }; typedef struct color_line ---- muttlib.c 2009-01-05 20:20:53.000000000 +0100 -+++ muttlib.c 2009-02-17 08:13:07.000000000 +0100 -@@ -1217,32 +1217,80 @@ - pl = pw = 1; - - /* see if there's room to add content, else ignore */ -- if ((col < COLS && wlen < destlen) || soft) -+ if ( DrawFullLine ) - { -- int pad; -- -- /* get contents after padding */ -- mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); -- len = mutt_strlen (buf); -- wid = mutt_strwidth (buf); -- -- /* try to consume as many columns as we can, if we don't have -- * memory for that, use as much memory as possible */ -- pad = (COLS - col - wid) / pw; -- if (pad > 0 && wlen + (pad * pl) + len > destlen) -- pad = ((signed)(destlen - wlen - len)) / pl; -- if (pad > 0) -+ if ((col < COLS && wlen < destlen) || soft) - { -- while (pad--) -+ int pad; -+ -+ /* get contents after padding */ -+ mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); -+ len = mutt_strlen (buf); -+ wid = mutt_strwidth (buf); -+ -+ /* try to consume as many columns as we can, if we don't have -+ * memory for that, use as much memory as possible */ -+ pad = (COLS - col - wid) / pw; -+ if (pad > 0 && wlen + (pad * pl) + len > destlen) -+ pad = ((signed)(destlen - wlen - len)) / pl; -+ if (pad > 0) -+ { -+ while (pad--) -+ { -+ memcpy (wptr, src, pl); -+ wptr += pl; -+ wlen += pl; -+ col += pw; -+ } -+ } -+ else if (soft && pad < 0) - { -- memcpy (wptr, src, pl); -- wptr += pl; -- wlen += pl; -- col += pw; -+ /* set wptr and wlen back just enough bytes to make sure buf -+ * fits on screen, \0-terminate dest so mutt_wstr_trunc() -+ * can correctly compute string's length */ -+ if (pad < -wlen) -+ pad = -wlen; -+ *wptr = 0; -+ wlen = mutt_wstr_trunc (dest, wlen + pad, col + pad, &col); -+ wptr = dest + wlen; - } -+ if (len + wlen > destlen) -+ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL); -+ memcpy (wptr, buf, len); -+ wptr += len; -+ wlen += len; -+ col += wid; -+ src += pl; - } -- else if (soft && pad < 0) -+ } -+ else -+ { -+ if ((col < COLS-SidebarWidth && wlen < destlen) || soft) - { -+ int pad; -+ -+ /* get contents after padding */ -+ mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); -+ len = mutt_strlen (buf); -+ wid = mutt_strwidth (buf); -+ -+ /* try to consume as many columns as we can, if we don't have -+ * memory for that, use as much memory as possible */ -+ pad = (COLS - SidebarWidth - col - wid) / pw; -+ if (pad > 0 && wlen + (pad * pl) + len > destlen) -+ pad = ((signed)(destlen - wlen - len)) / pl; -+ if (pad > 0) -+ { -+ while (pad--) -+ { -+ memcpy (wptr, src, pl); -+ wptr += pl; -+ wlen += pl; -+ col += pw; -+ } -+ } -+ else if (soft && pad < 0) -+ { - /* \0-terminate dest for length computation in mutt_wstr_trunc() */ - *wptr = 0; - /* make sure right part is at most as wide as display */ -@@ -1250,15 +1298,16 @@ - /* truncate left so that right part fits completely in */ - wlen = mutt_wstr_trunc (dest, destlen - len, col + pad, &col); - wptr = dest + wlen; -+ } -+ if (len + wlen > destlen) -+ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL); -+ memcpy (wptr, buf, len); -+ wptr += len; -+ wlen += len; -+ col += wid; -+ src += pl; -+ } - } -- if (len + wlen > destlen) -- len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL); -- memcpy (wptr, buf, len); -- wptr += len; -- wlen += len; -- col += wid; -- src += pl; -- } - break; /* skip rest of input */ - } - else if (ch == '|') --- mx.c 2009-01-05 20:20:53.000000000 +0100 +++ mx.c 2009-02-17 08:13:07.000000000 +0100 @@ -611,6 +611,7 @@ @@ -934,118 +665,6 @@ if (ctx->mx_close) ctx->mx_close (ctx); ---- pager.c 2009-01-05 20:20:53.000000000 +0100 -+++ pager.c 2009-02-17 08:26:41.000000000 +0100 -@@ -29,6 +29,7 @@ - #include "pager.h" - #include "attach.h" - #include "mbyte.h" -+#include "sidebar.h" - - #include "mutt_crypt.h" - -@@ -1060,6 +1061,9 @@ - mbstate_t mbstate; - - 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)); -@@ -1694,7 +1698,7 @@ - if ((redraw & REDRAW_BODY) || topline != oldtopline) - { - do { -- move (bodyoffset, 0); -+ move (bodyoffset, SidebarWidth); - curline = oldtopline = topline; - lines = 0; - force_redraw = 0; -@@ -1707,6 +1711,7 @@ - &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) - lines++; - curline++; -+ move(lines + bodyoffset, SidebarWidth); - } - last_offset = lineInfo[curline].offset; - } while (force_redraw); -@@ -1720,6 +1725,7 @@ - addch ('~'); - addch ('\n'); - lines++; -+ move(lines + bodyoffset, SidebarWidth); - } - /* We are going to update the pager status bar, so it isn't - * necessary to reset to normal color now. */ -@@ -1743,22 +1749,22 @@ - /* print out the pager status bar */ - SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); -- CLEARLINE (statusoffset); -+ CLEARLINE_WIN (statusoffset); - if (IsHeader (extra)) - { -- size_t l1 = COLS * MB_LEN_MAX; -+ size_t l1 = (COLS * MB_LEN_MAX) - (SidebarWidth * MB_LEN_MAX); - size_t l2 = sizeof (buffer); - hfi.hdr = extra->hdr; - mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); - } - else if (IsMsgAttach (extra)) - { -- size_t l1 = COLS * MB_LEN_MAX; -+ size_t l1 = (COLS * MB_LEN_MAX) - (SidebarWidth * MB_LEN_MAX); - size_t l2 = sizeof (buffer); - hfi.hdr = extra->bdy->hdr; - mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); - } -- mutt_paddstr (COLS, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); -+ mutt_paddstr (COLS-SidebarWidth, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); - BKGDSET (MT_COLOR_NORMAL); - SETCOLOR (MT_COLOR_NORMAL); - } -@@ -1768,18 +1774,24 @@ - /* redraw the pager_index indicator, because the - * flags for this message might have changed. */ - menu_redraw_current (index); -+ draw_sidebar(MENU_PAGER); - - /* print out the index status bar */ - menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); - -- move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0); -+ move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), -+ SidebarWidth); - SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); -- mutt_paddstr (COLS, buffer); -+ mutt_paddstr (COLS-SidebarWidth, buffer); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); - } - -+ /* if we're not using the index, update every time */ -+ if ( index == 0 ) -+ draw_sidebar(MENU_PAGER); -+ - redraw = 0; - - if (option(OPTBRAILLEFRIENDLY)) { -@@ -2671,6 +2683,12 @@ - mutt_what_key (); - break; - -+ case OP_SIDEBAR_SCROLL_UP: -+ case OP_SIDEBAR_SCROLL_DOWN: -+ case OP_SIDEBAR_NEXT: -+ case OP_SIDEBAR_PREV: -+ scroll_sidebar(ch, MENU_PAGER); -+ break; - default: - ch = -1; - break; --- sidebar.c 1970-01-01 01:00:00.000000000 +0100 +++ sidebar.c 2009-02-17 08:13:08.000000000 +0100 @@ -0,0 +1,333 @@ @@ -1421,3 +1040,432 @@ +void set_buffystats(CONTEXT*); + +#endif /* SIDEBAR_H */ +*** buffy.c.orig 2008-08-29 18:39:48.000000000 -0500 +--- buffy.c 2009-05-22 08:45:01.000000000 -0500 +*************** +*** 259,265 **** + char path[_POSIX_PATH_MAX]; + struct stat contex_sb; + time_t t; +! + #ifdef USE_IMAP + /* update postponed count as well, on force */ + if (force) +--- 259,265 ---- + char path[_POSIX_PATH_MAX]; + struct stat contex_sb; + time_t t; +! CONTEXT *ctx; + #ifdef USE_IMAP + /* update postponed count as well, on force */ + if (force) +*************** +*** 294,299 **** +--- 294,301 ---- + + for (tmp = Incoming; tmp; tmp = tmp->next) + { ++ if ( tmp->new == 1 ) ++ tmp->has_new = 1; + #ifdef USE_IMAP + if (tmp->magic != M_IMAP) + #endif +*************** +*** 350,359 **** + case M_MBOX: + case M_MMDF: + +! if (STAT_CHECK) + { +! BuffyCount++; +! tmp->new = 1; + } + else if (option(OPTCHECKMBOXSIZE)) + { +--- 352,378 ---- + case M_MBOX: + case M_MMDF: + +! { +! if (STAT_CHECK || tmp->msgcount == 0) + { +! BUFFY b = *tmp; +! 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); +! if(ctx) +! { +! 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)) + { +*************** +*** 363,397 **** + if (tmp->newly_created && + (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime)) + tmp->newly_created = 0; +! + break; + + case M_MAILDIR: + + snprintf (path, sizeof (path), "%s/new", tmp->path); + if ((dirp = opendir (path)) == NULL) + { + tmp->magic = 0; + break; + } + 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; + } + } + closedir (dirp); + break; + + case M_MH: + if ((tmp->new = mh_buffy (tmp->path)) > 0) + BuffyCount++; + break; + } + } +--- 382,467 ---- + 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'))) + { +! 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; + + 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); ++ } + break; + } + } +*** muttlib.c.orig 2009-01-05 13:20:53.000000000 -0600 +--- muttlib.c 2009-05-21 23:08:38.000000000 -0500 +*************** +*** 1217,1222 **** +--- 1217,1224 ---- + pl = pw = 1; + + /* see if there's room to add content, else ignore */ ++ if ( DrawFullLine ) ++ { + if ((col < COLS && wlen < destlen) || soft) + { + int pad; +*************** +*** 1259,1264 **** +--- 1261,1312 ---- + col += wid; + src += pl; + } ++ } ++ else ++ { ++ if ((col < COLS-SidebarWidth && wlen < destlen) || soft) ++ { ++ int pad; ++ ++ /* get contents after padding */ ++ mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags); ++ len = mutt_strlen (buf); ++ wid = mutt_strwidth (buf); ++ ++ /* try to consume as many columns as we can, if we don't have ++ * memory for that, use as much memory as possible */ ++ pad = (COLS - SidebarWidth - col - wid) / pw; ++ if (pad > 0 && wlen + (pad * pl) + len > destlen) ++ pad = ((signed)(destlen - wlen - len)) / pl; ++ if (pad > 0) ++ { ++ while (pad--) ++ { ++ memcpy (wptr, src, pl); ++ wptr += pl; ++ wlen += pl; ++ col += pw; ++ } ++ } ++ else if (soft && pad < 0) ++ { ++ /* \0-terminate dest for length computation in mutt_wstr_trunc() */ ++ *wptr = 0; ++ /* make sure right part is at most as wide as display */ ++ len = mutt_wstr_trunc (buf, destlen, COLS, &wid); ++ /* truncate left so that right part fits completely in */ ++ wlen = mutt_wstr_trunc (dest, destlen - len, col + pad, &col); ++ wptr = dest + wlen; ++ } ++ if (len + wlen > destlen) ++ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL); ++ memcpy (wptr, buf, len); ++ wptr += len; ++ wlen += len; ++ col += wid; ++ src += pl; ++ } ++ } + break; /* skip rest of input */ + } + else if (ch == '|') +*** pager.c.orig 2009-01-05 13:20:53.000000000 -0600 +--- pager.c 2009-05-21 23:08:38.000000000 -0500 +*************** +*** 29,34 **** +--- 29,35 ---- + #include "pager.h" + #include "attach.h" + #include "mbyte.h" ++ #include "sidebar.h" + + #include "mutt_crypt.h" + +*************** +*** 1060,1065 **** +--- 1061,1068 ---- + mbstate_t mbstate; + + 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)); +*************** +*** 1694,1700 **** + if ((redraw & REDRAW_BODY) || topline != oldtopline) + { + do { +! move (bodyoffset, 0); + curline = oldtopline = topline; + lines = 0; + force_redraw = 0; +--- 1697,1703 ---- + if ((redraw & REDRAW_BODY) || topline != oldtopline) + { + do { +! move (bodyoffset, SidebarWidth); + curline = oldtopline = topline; + lines = 0; + force_redraw = 0; +*************** +*** 1707,1712 **** +--- 1710,1716 ---- + &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) + lines++; + curline++; ++ move(lines + bodyoffset, SidebarWidth); + } + last_offset = lineInfo[curline].offset; + } while (force_redraw); +*************** +*** 1720,1725 **** +--- 1724,1730 ---- + addch ('~'); + addch ('\n'); + lines++; ++ move(lines + bodyoffset, SidebarWidth); + } + /* We are going to update the pager status bar, so it isn't + * necessary to reset to normal color now. */ +*************** +*** 1743,1764 **** + /* print out the pager status bar */ + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! CLEARLINE (statusoffset); + if (IsHeader (extra)) + { +! size_t l1 = COLS * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } + else if (IsMsgAttach (extra)) + { +! size_t l1 = COLS * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->bdy->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } +! mutt_paddstr (COLS, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); + BKGDSET (MT_COLOR_NORMAL); + SETCOLOR (MT_COLOR_NORMAL); + } +--- 1748,1769 ---- + /* print out the pager status bar */ + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! CLEARLINE_WIN (statusoffset); + if (IsHeader (extra)) + { +! size_t l1 = (COLS-SidebarWidth) * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } + else if (IsMsgAttach (extra)) + { +! size_t l1 = (COLS-SidebarWidth) * MB_LEN_MAX; + size_t l2 = sizeof (buffer); + hfi.hdr = extra->bdy->hdr; + mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); + } +! mutt_paddstr (COLS-SidebarWidth, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); + BKGDSET (MT_COLOR_NORMAL); + SETCOLOR (MT_COLOR_NORMAL); + } +*************** +*** 1768,1785 **** + /* redraw the pager_index indicator, because the + * flags for this message might have changed. */ + menu_redraw_current (index); + + /* print out the index status bar */ + menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); + +! move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0); + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! mutt_paddstr (COLS, buffer); + SETCOLOR (MT_COLOR_NORMAL); + BKGDSET (MT_COLOR_NORMAL); + } + + redraw = 0; + + if (option(OPTBRAILLEFRIENDLY)) { +--- 1773,1795 ---- + /* redraw the pager_index indicator, because the + * flags for this message might have changed. */ + menu_redraw_current (index); ++ draw_sidebar(MENU_PAGER); + + /* print out the index status bar */ + menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); + +! move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), SidebarWidth); + SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); +! mutt_paddstr (COLS-SidebarWidth, buffer); + SETCOLOR (MT_COLOR_NORMAL); + BKGDSET (MT_COLOR_NORMAL); + } + ++ /* if we're not using the index, update every time */ ++ if ( index == 0 ) ++ draw_sidebar(MENU_PAGER); ++ + redraw = 0; + + if (option(OPTBRAILLEFRIENDLY)) { +*************** +*** 2671,2676 **** +--- 2681,2693 ---- + mutt_what_key (); + break; + ++ case OP_SIDEBAR_SCROLL_UP: ++ case OP_SIDEBAR_SCROLL_DOWN: ++ case OP_SIDEBAR_NEXT: ++ case OP_SIDEBAR_PREV: ++ scroll_sidebar(ch, MENU_PAGER); ++ break; ++ + default: + ch = -1; + break; |