From 5f3812736e4b29f483b4f4ce4f8b23f6deaba857 Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Mon, 26 Jan 2015 16:35:10 +0000 Subject: [PATCH] . OBS-URL: https://build.opensuse.org/package/show/server:mail/mutt?expand=0&rev=105 --- automake-1.12.patch | 12 - aw.listreply.diff | 46 +- bsc907453-CVE-2014-9116-jessie.patch | 25 +- bug-676388-largefile.patch | 90 +- mutt-1.5.20-gpgme_set_locale.patch | 12 - mutt-1.5.21-patches.tar.bz2 | 3 - mutt-1.5.21.tar.bz2 | 3 - ...rn.path => mutt-1.5.23-cariage-return.path | 73 +- mutt-1.5.23-patches.tar.bz2 | 3 + mutt-1.5.21.dif => mutt-1.5.23.dif | 0 mutt-1.5.23.tar.gz | 3 + mutt-CVE-2014-0467.patch | 10 - mutt.changes | 16 + mutt.spec | 26 +- patch-1.5.21.rr.compressed.1.bz2 | 3 - patch-1.5.23.rr.compressed.bz2 | 3 + ...tch => patch-1.5.23.sidebar.20140412.patch | 1048 +++++++++-------- ...itles.3.ab.1 => patch-1.5.23.xtitles.patch | 145 ++- 18 files changed, 738 insertions(+), 783 deletions(-) delete mode 100644 automake-1.12.patch delete mode 100644 mutt-1.5.20-gpgme_set_locale.patch delete mode 100644 mutt-1.5.21-patches.tar.bz2 delete mode 100644 mutt-1.5.21.tar.bz2 rename mutt-1.5.21-cariage-return.path => mutt-1.5.23-cariage-return.path (65%) create mode 100644 mutt-1.5.23-patches.tar.bz2 rename mutt-1.5.21.dif => mutt-1.5.23.dif (100%) create mode 100644 mutt-1.5.23.tar.gz delete mode 100644 mutt-CVE-2014-0467.patch delete mode 100644 patch-1.5.21.rr.compressed.1.bz2 create mode 100644 patch-1.5.23.rr.compressed.bz2 rename mutt-1.5.21.sidebar.20120829.patch => patch-1.5.23.sidebar.20140412.patch (84%) rename patch-1.5.5.1.nt.xtitles.3.ab.1 => patch-1.5.23.xtitles.patch (54%) diff --git a/automake-1.12.patch b/automake-1.12.patch deleted file mode 100644 index 0333b62..0000000 --- a/automake-1.12.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: mutt-1.5.21/configure.ac -=================================================================== ---- mutt-1.5.21.orig/configure.ac -+++ mutt-1.5.21/configure.ac -@@ -27,7 +27,6 @@ AC_MSG_RESULT($mutt_cv_prefix) - - AC_PROG_CC - AC_ISC_POSIX --AM_C_PROTOTYPES - if test "x$U" != "x"; then - AC_MSG_ERROR(Compiler not ANSI compliant) - fi diff --git a/aw.listreply.diff b/aw.listreply.diff index c56f5dc..99ae302 100644 --- a/aw.listreply.diff +++ b/aw.listreply.diff @@ -1,19 +1,21 @@ ask when sending list message replies to author only - Armin Wolfermann (aw) -Index: mutt-1.5.21/PATCHES -=================================================================== ---- mutt-1.5.21.orig/PATCHES 2012-06-21 11:48:06.757181997 +0200 -+++ mutt-1.5.21/PATCHES 2012-06-21 11:48:50.352837436 +0200 -@@ -1,3 +1,4 @@ +--- + PATCHES | 1 + + init.h | 7 +++++++ + mutt.h | 1 + + send.c | 18 ++++++++++++++++++ + 4 files changed, 27 insertions(+) + +--- mutt-1.5.23/PATCHES ++++ mutt-1.5.23/PATCHES 2015-01-26 15:34:40.133518493 +0000 +@@ -1,2 +1,3 @@ +patch-1.5.9.aw.listreply.1 - patch-1.5.21.sidebar.20120829.txt - patch-1.5.19.rr.compressed.1 - patch-1.5.5.1.nt.xtitles.3.ab.1 -Index: mutt-1.5.21/init.h -=================================================================== ---- mutt-1.5.21.orig/init.h 2012-06-21 11:48:06.754181952 +0200 -+++ mutt-1.5.21/init.h 2012-06-21 11:48:22.426417566 +0200 -@@ -1331,6 +1331,13 @@ struct option_t MuttVars[] = { + patch-1.5.23.sidebar.20140412.txt + rr.compressed +--- mutt-1.5.23/init.h ++++ mutt-1.5.23/init.h 2012-06-21 09:48:22.000000000 +0000 +@@ -1340,6 +1340,13 @@ struct option_t MuttVars[] = { ** The locale used by \fCstrftime(3)\fP to format dates. Legal values are ** the strings your system accepts for the locale environment variable \fC$$$LC_TIME\fP. */ @@ -27,11 +29,9 @@ Index: mutt-1.5.21/init.h { "mail_check", DT_NUM, R_NONE, UL &BuffyTimeout, 5 }, /* ** .pp -Index: mutt-1.5.21/mutt.h -=================================================================== ---- mutt-1.5.21.orig/mutt.h 2012-06-21 11:48:06.788182463 +0200 -+++ mutt-1.5.21/mutt.h 2012-06-21 11:48:22.426417566 +0200 -@@ -290,6 +290,7 @@ enum +--- mutt-1.5.23/mutt.h ++++ mutt-1.5.23/mutt.h 2012-06-21 09:48:22.000000000 +0000 +@@ -288,6 +288,7 @@ enum #endif OPT_SUBJECT, OPT_VERIFYSIG, /* verify PGP signatures */ @@ -39,11 +39,9 @@ Index: mutt-1.5.21/mutt.h /* THIS MUST BE THE LAST VALUE. */ OPT_MAX -Index: mutt-1.5.21/send.c -=================================================================== ---- mutt-1.5.21.orig/send.c 2012-06-21 11:48:06.724181501 +0200 -+++ mutt-1.5.21/send.c 2012-06-21 11:48:22.426417566 +0200 -@@ -453,6 +453,7 @@ static int include_reply (CONTEXT *ctx, +--- mutt-1.5.23/send.c ++++ mutt-1.5.23/send.c 2012-06-21 09:48:22.000000000 +0000 +@@ -452,6 +452,7 @@ static int include_reply (CONTEXT *ctx, static int default_to (ADDRESS **to, ENVELOPE *env, int flags, int hmfupto) { char prompt[STRING]; @@ -51,7 +49,7 @@ Index: mutt-1.5.21/send.c if (flags && env->mail_followup_to && hmfupto == M_YES) { -@@ -466,6 +467,23 @@ static int default_to (ADDRESS **to, ENV +@@ -465,6 +466,23 @@ static int default_to (ADDRESS **to, ENV if (flags & SENDLISTREPLY) return 0; diff --git a/bsc907453-CVE-2014-9116-jessie.patch b/bsc907453-CVE-2014-9116-jessie.patch index a722920..82b65bc 100644 --- a/bsc907453-CVE-2014-9116-jessie.patch +++ b/bsc907453-CVE-2014-9116-jessie.patch @@ -12,9 +12,13 @@ has -jessie prefixed in its name. Index: mutt/lib.c =================================================================== +--- + lib.c | 3 +++ + 1 file changed, 3 insertions(+) + --- mutt/lib.c -+++ mutt/lib.c -@@ -819,6 +819,9 @@ char *mutt_substrdup (const char *begin, ++++ mutt/lib.c 2015-01-26 00:00:00.000000000 +0000 +@@ -820,6 +820,9 @@ char *mutt_substrdup (const char *begin, size_t len; char *p; @@ -24,20 +28,3 @@ Index: mutt/lib.c if (end) len = end - begin; else -Index: mutt/sendlib.c -=================================================================== ---- mutt/sendlib.c -+++ mutt/sendlib.c -@@ -1814,7 +1814,11 @@ static int write_one_header (FILE *fp, i - { - tagbuf = mutt_substrdup (start, t); - ++t; /* skip over the colon separating the header field name and value */ -- SKIPWS(t); /* skip over any leading whitespace */ -+ -+ /* skip over any leading whitespace (WSP, as defined in RFC5322) */ -+ while (*t == ' ' || *t == '\t') -+ t++; -+ - valbuf = mutt_substrdup (t, end); - } - dprint(4,(debugfile,"mwoh: buf[%s%s] too long, " diff --git a/bug-676388-largefile.patch b/bug-676388-largefile.patch index 7faa945..6ea8417 100644 --- a/bug-676388-largefile.patch +++ b/bug-676388-largefile.patch @@ -1,7 +1,12 @@ -diff -ur orig.010003/mutt-1.5.21/crypt-gpgme.c mutt-1.5.21/crypt-gpgme.c ---- orig.010003/mutt-1.5.21/crypt-gpgme.c 2010-09-13 19:19:55.000000000 +0200 -+++ mutt-1.5.21/crypt-gpgme.c 2011-03-02 18:18:01.000000000 +0100 -@@ -461,7 +461,7 @@ +--- + crypt-gpgme.c | 2 +- + mh.c | 6 +++--- + mutt.h | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +--- mutt-1.5.23/crypt-gpgme.c ++++ mutt-1.5.23/crypt-gpgme.c 2011-03-02 17:18:01.000000000 +0000 +@@ -450,7 +450,7 @@ static gpgme_data_t body_to_data_object /* Create a GPGME data object from the stream FP but limit the object to LENGTH bytes starting at OFFSET bytes from the beginning of the file. */ @@ -10,31 +15,9 @@ diff -ur orig.010003/mutt-1.5.21/crypt-gpgme.c mutt-1.5.21/crypt-gpgme.c { int err = 0; gpgme_data_t data; -@@ -2156,7 +2156,7 @@ - { - int needpass = -1, pgp_keyblock = 0; - int clearsign = 0; -- long start_pos = 0; -+ LOFF_T start_pos = 0; - long bytes; - LOFF_T last_pos, offset; - char buf[HUGE_STRING]; -diff -ur orig.010003/mutt-1.5.21/handler.c mutt-1.5.21/handler.c ---- orig.010003/mutt-1.5.21/handler.c 2009-08-25 21:08:52.000000000 +0200 -+++ mutt-1.5.21/handler.c 2011-03-02 18:12:28.000000000 +0100 -@@ -1520,7 +1520,7 @@ - FILE *fp = NULL; - char tempfile[_POSIX_PATH_MAX]; - handler_t handler = NULL; -- long tmpoffset = 0; -+ LOFF_T tmpoffset = 0; - size_t tmplength = 0; - char type[STRING]; - int rc = 0; -diff -ur orig.010003/mutt-1.5.21/mh.c mutt-1.5.21/mh.c ---- orig.010003/mutt-1.5.21/mh.c 2010-08-24 18:34:21.000000000 +0200 -+++ mutt-1.5.21/mh.c 2011-03-02 18:48:36.000000000 +0100 -@@ -1493,9 +1493,9 @@ +--- mutt-1.5.23/mh.c ++++ mutt-1.5.23/mh.c 2011-03-02 17:48:36.000000000 +0000 +@@ -1579,9 +1579,9 @@ static int mh_rewrite_message (CONTEXT * char newpath[_POSIX_PATH_MAX]; char partpath[_POSIX_PATH_MAX]; @@ -47,10 +30,9 @@ diff -ur orig.010003/mutt-1.5.21/mh.c mutt-1.5.21/mh.c if ((dest = mx_open_new_message (ctx, h, 0)) == NULL) return -1; -diff -ur orig.010003/mutt-1.5.21/mutt.h mutt-1.5.21/mutt.h ---- orig.010003/mutt-1.5.21/mutt.h 2010-09-13 19:19:55.000000000 +0200 -+++ mutt-1.5.21/mutt.h 2011-03-02 17:52:03.000000000 +0100 -@@ -625,7 +625,7 @@ +--- mutt-1.5.23/mutt.h ++++ mutt-1.5.23/mutt.h 2011-03-02 16:52:03.000000000 +0000 +@@ -638,7 +638,7 @@ typedef struct body PARAMETER *parameter; /* parameters of the content-type */ char *description; /* content-description */ char *form_name; /* Content-Disposition form-data name param */ @@ -59,45 +41,3 @@ diff -ur orig.010003/mutt-1.5.21/mutt.h mutt-1.5.21/mutt.h * this info is used when invoking metamail, * where we need to send the headers of the * attachment -diff -ur orig.010003/mutt-1.5.21/pgp.c mutt-1.5.21/pgp.c ---- orig.010003/mutt-1.5.21/pgp.c 2010-09-13 19:19:55.000000000 +0200 -+++ mutt-1.5.21/pgp.c 2011-03-02 18:48:08.000000000 +0100 -@@ -251,7 +251,7 @@ - int needpass = -1, pgp_keyblock = 0; - int clearsign = 0, rv, rc; - int c = 1; /* silence GCC warning */ -- long start_pos = 0; -+ LOFF_T start_pos = 0; - long bytes; - LOFF_T last_pos, offset; - char buf[HUGE_STRING]; -diff -ur orig.010003/mutt-1.5.21/smime.c mutt-1.5.21/smime.c ---- orig.010003/mutt-1.5.21/smime.c 2010-09-13 19:19:55.000000000 +0200 -+++ mutt-1.5.21/smime.c 2011-03-02 18:12:08.000000000 +0100 -@@ -1546,7 +1546,7 @@ - pid_t thepid; - int badsig = -1; - -- long tmpoffset = 0; -+ LOFF_T tmpoffset = 0; - size_t tmplength = 0; - int origType = sigbdy->type; - char *savePrefix = NULL; -@@ -1660,7 +1660,7 @@ - { - int len=0; - int c; -- long last_pos; -+ LOFF_T last_pos; - char buf[HUGE_STRING]; - char outfile[_POSIX_PATH_MAX], errfile[_POSIX_PATH_MAX]; - char tmpfname[_POSIX_PATH_MAX]; -@@ -1865,7 +1865,7 @@ - - char tempfile[_POSIX_PATH_MAX]; - STATE s; -- long tmpoffset = b->offset; -+ LOFF_T tmpoffset = b->offset; - size_t tmplength = b->length; - int origType = b->type; - FILE *tmpfp=NULL; diff --git a/mutt-1.5.20-gpgme_set_locale.patch b/mutt-1.5.20-gpgme_set_locale.patch deleted file mode 100644 index 444a288..0000000 --- a/mutt-1.5.20-gpgme_set_locale.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: mutt-1.5.20/crypt-gpgme.c -=================================================================== ---- mutt-1.5.20/crypt-gpgme.c 2009-05-19 02:11:35.000000000 +0200 -+++ mutt-1.5.20/crypt-gpgme.c 2009-07-14 14:43:43.000000000 +0200 -@@ -344,6 +344,7 @@ static gpgme_ctx_t create_gpgme_context - - if (!GpgmeLocaleSet) - { -+ gpgme_check_version(NULL); - gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL)); - #ifdef ENABLE_NLS - gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL)); diff --git a/mutt-1.5.21-patches.tar.bz2 b/mutt-1.5.21-patches.tar.bz2 deleted file mode 100644 index 25e39c6..0000000 --- a/mutt-1.5.21-patches.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:220b330eec40f2b15ed82bb87cae09b08c7a71e0282b57416183cf0ead7c7086 -size 7583 diff --git a/mutt-1.5.21.tar.bz2 b/mutt-1.5.21.tar.bz2 deleted file mode 100644 index 52f9cf8..0000000 --- a/mutt-1.5.21.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca64bf24206a3026ab8148c2161e89b2bf25f383a44072c6861a6dd0bae53595 -size 2503333 diff --git a/mutt-1.5.21-cariage-return.path b/mutt-1.5.23-cariage-return.path similarity index 65% rename from mutt-1.5.21-cariage-return.path rename to mutt-1.5.23-cariage-return.path index aec1a4c..d6f5f3c 100644 --- a/mutt-1.5.21-cariage-return.path +++ b/mutt-1.5.23-cariage-return.path @@ -1,41 +1,13 @@ ---- crypt-gpgme.c -+++ crypt-gpgme.c 2013-05-29 09:31:53.141939173 +0000 -@@ -2003,12 +2003,12 @@ static int pgp_check_traditional_one_bod - { - if (!mutt_strncmp ("-----BEGIN PGP ", buf, 15)) - { -- if (!mutt_strcmp ("MESSAGE-----\n", buf + 15)) -+ if (!mutt_strxcmp ("MESSAGE-----\n", buf + 15)) - { - enc = 1; - break; - } -- else if (!mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15)) -+ else if (!mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15)) - { - sgn = 1; - break; -@@ -2196,14 +2196,14 @@ int pgp_gpgme_application_handler (BODY - clearsign = 0; - start_pos = last_pos; - -- if (!mutt_strcmp ("MESSAGE-----\n", buf + 15)) -+ if (!mutt_strxcmp ("MESSAGE-----\n", buf + 15)) - needpass = 1; -- else if (!mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15)) -+ else if (!mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15)) - { - clearsign = 1; - needpass = 0; - } -- else if (!mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15)) -+ else if (!mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15)) - { - needpass = 0; - pgp_keyblock = 1; +--- + lib.c | 12 ++++++++++++ + lib.h | 1 + + pager.c | 2 +- + pgp.c | 24 ++++++++++++------------ + 4 files changed, 26 insertions(+), 13 deletions(-) + --- lib.c -+++ lib.c 2013-05-29 09:31:53.325439198 +0000 -@@ -875,6 +875,18 @@ int mutt_strcmp(const char *a, const cha ++++ lib.c 2013-05-29 09:31:53.000000000 +0000 +@@ -876,6 +876,18 @@ int mutt_strcmp(const char *a, const cha return strcmp(NONULL(a), NONULL(b)); } @@ -55,8 +27,8 @@ { return strcasecmp(NONULL(a), NONULL(b)); --- lib.h -+++ lib.h 2013-05-29 09:25:21.805439324 +0000 -@@ -179,6 +179,7 @@ int mutt_copy_bytes (FILE *, FILE *, siz ++++ lib.h 2013-05-29 09:25:22.000000000 +0000 +@@ -197,6 +197,7 @@ int mutt_copy_bytes (FILE *, FILE *, siz int mutt_rx_sanitize_string (char *, size_t, const char *); int mutt_strcasecmp (const char *, const char *); int mutt_strcmp (const char *, const char *); @@ -65,7 +37,7 @@ int mutt_strncmp (const char *, const char *, size_t); int mutt_strcoll (const char *, const char *); --- pager.c -+++ pager.c 2013-05-29 09:31:53.433440090 +0000 ++++ pager.c 2013-05-29 09:31:53.000000000 +0000 @@ -771,7 +771,7 @@ resolve_types (char *buf, char *raw, str else if (check_attachment_marker ((char *) raw) == 0) lineInfo[n].type = MT_COLOR_ATTACHMENT; @@ -76,10 +48,19 @@ i = n + 1; --- pgp.c -+++ pgp.c 2013-05-29 09:31:53.461439587 +0000 -@@ -287,14 +287,14 @@ int pgp_application_pgp_handler (BODY *m ++++ pgp.c 2015-01-26 15:48:02.361518080 +0000 +@@ -219,7 +219,7 @@ static void pgp_copy_clearsigned (FILE * + continue; + } + +- if (mutt_strcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) ++ if (mutt_strxcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) + break; + + if (armor_header) +@@ -285,14 +285,14 @@ int pgp_application_pgp_handler (BODY *m + { clearsign = 0; - start_pos = last_pos; - if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0) + if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0) @@ -95,7 +76,7 @@ { needpass = 0; pgp_keyblock = 1; -@@ -327,10 +327,10 @@ int pgp_application_pgp_handler (BODY *m +@@ -325,10 +325,10 @@ int pgp_application_pgp_handler (BODY *m fputs (buf, tmpfp); @@ -109,7 +90,7 @@ break; /* remember optional Charset: armor header as defined by RfC4880 */ if (mutt_strncmp ("Charset: ", buf, 9) == 0) -@@ -552,11 +552,11 @@ static int pgp_check_traditional_one_bod +@@ -550,11 +550,11 @@ static int pgp_check_traditional_one_bod { if (mutt_strncmp ("-----BEGIN PGP ", buf, 15) == 0) { @@ -124,7 +105,7 @@ key = 1; } } -@@ -1065,9 +1065,9 @@ BODY *pgp_sign_message (BODY *a) +@@ -1063,9 +1063,9 @@ BODY *pgp_sign_message (BODY *a) */ while (fgets (buffer, sizeof (buffer) - 1, pgpout) != NULL) { diff --git a/mutt-1.5.23-patches.tar.bz2 b/mutt-1.5.23-patches.tar.bz2 new file mode 100644 index 0000000..9811e40 --- /dev/null +++ b/mutt-1.5.23-patches.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa4453d1fe2d5bc2fd78b71779594de2f5998c5921fad03195f28ae0a29b4d6f +size 243 diff --git a/mutt-1.5.21.dif b/mutt-1.5.23.dif similarity index 100% rename from mutt-1.5.21.dif rename to mutt-1.5.23.dif diff --git a/mutt-1.5.23.tar.gz b/mutt-1.5.23.tar.gz new file mode 100644 index 0000000..1d8f860 --- /dev/null +++ b/mutt-1.5.23.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3af0701e57b9e1880ed3a0dee34498a228939e854a16cdccd24e5e502626fd37 +size 3782032 diff --git a/mutt-CVE-2014-0467.patch b/mutt-CVE-2014-0467.patch deleted file mode 100644 index 9f050b4..0000000 --- a/mutt-CVE-2014-0467.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- mutt-1.5.21/copy.c -+++ mutt-1.5.21/copy.c 2014-03-25 08:42:27.466839319 +0000 -@@ -254,6 +254,7 @@ mutt_copy_hdr (FILE *in, FILE *out, LOFF - { - if (!address_header_decode (&this_one)) - rfc2047_decode (&this_one); -+ this_one_len = mutt_strlen (this_one); - } - - if (!headers[x]) diff --git a/mutt.changes b/mutt.changes index 5bc1877..ffbc8a5 100644 --- a/mutt.changes +++ b/mutt.changes @@ -1,3 +1,19 @@ +------------------------------------------------------------------- +Mon Jan 26 16:22:08 UTC 2015 - werner@suse.de + +- Update to mutt version 1.5.23 which is a security bugfix release + as well as add support for TLS 1.1/1.2 +- Remove the patches automake-1.12.patch, + mutt-1.5.20-gpgme_set_locale.patch, and mutt-CVE-2014-0467.patch +- Replace the patches + patch-1.5.23.rr.compressed.bz2 with patch-1.5.21.rr.compressed.1.bz2 + mutt-1.5.21.sidebar.20120829.patch with patch-1.5.23.sidebar.20140412.patch + patch-1.5.5.1.nt.xtitles.3.ab.1 with patch-1.5.23.xtitles.patch + mutt-1.5.21.dif with mutt-1.5.23.dif +- Modify the patches aw.listreply.diff, bug-676388-largefile.patch, + and bsc907453-CVE-2014-9116-jessie.patch +- Build with PIE + ------------------------------------------------------------------- Thu Dec 4 12:03:10 UTC 2014 - werner@suse.de diff --git a/mutt.spec b/mutt.spec index f38bdac..41e534f 100644 --- a/mutt.spec +++ b/mutt.spec @@ -1,7 +1,7 @@ # # spec file for package mutt # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -57,6 +57,7 @@ Url: http://www.mutt.org Provides: muttssl Obsoletes: muttssl Recommends: smtp_daemon +Recommends: urlview Recommends: w3m %if 0%{?suse_version} > 1130 Requires(post): shared-mime-info @@ -65,13 +66,13 @@ Requires(postun): shared-mime-info # NOTE: We don't want this dependency and desktop-data-SuSE is in all # desktop selections. #Requires: desktop-data-SuSE -Version: 1.5.21 +Version: 1.5.23 Release: 33.2 Summary: Mail Program License: GPL-2.0+ Group: Productivity/Networking/Email/Clients # ftp://ftp.mutt.org/mutt/devel/ -Source0: %name-%version.tar.bz2 +Source0: https://bitbucket.org/mutt/mutt/downloads/%name-%version.tar.gz Source1: Signature_conversion Source2: README.alternates Source3: mutt.png @@ -83,28 +84,24 @@ Source8: %name-%version-patches.tar.bz2 Source9: mutt.mailcap Patch: %name-%version.dif # http://www.spinnaker.de/mutt/compressed/ -Patch1: patch-%version.rr.compressed.1.bz2 +Patch1: patch-%version.rr.compressed.bz2 Patch2: %name-1.5.9i-pgpewrap.diff Patch3: %name-1.5.20-sendgroupreplyto.diff Patch4: %name-1.5.15-wrapcolumn.diff -Patch5: patch-1.5.5.1.nt.xtitles.3.ab.1 +Patch5: patch-1.5.23.xtitles.patch # http://lunar-linux.org/mutt-sidebar -Patch6: mutt-1.5.21.sidebar.20120829.patch +Patch6: patch-1.5.23.sidebar.20140412.patch Patch7: mutt-1.5.21-opennfs.dif -Patch8: mutt-1.5.20-gpgme_set_locale.patch Patch9: bug-676388-largefile.patch Patch10: mutt-1.5.21-tinfo.dif # http://www.wolfermann.org/mutt.html Patch11: aw.listreply.diff Patch12: patch-1.5.21.vk.pgp_verbose_mime -Patch13: automake-1.12.patch Patch14: nion.sidebar-color.diff # PATCH-FIX-OPENSUSE: bnc#813498 - mutt crashes in fgetwc in text_enriched_handler Patch15: widechar.sidebar.dif # PATCH-FIX-OPENSUSE: Be able to read signed/encrypted messsages even with CRLF -Patch16: mutt-1.5.21-cariage-return.path -# PATCH-FIX-SUSE: bnc#868115 - CVE-2014-0467: mutt: crash due to malicious email -Patch17: mutt-CVE-2014-0467.patch +Patch16: mutt-1.5.23-cariage-return.path # PATCH-FIX-OPENSUSE bnc#899712 - fallback mailcap for e.g text/html Patch18: mutt-1.5.21-mailcap.diff # PATCH-FIX-SUSE: bsc#907453 - CVE-2014-9116: mutt: heap-based buffer overflow in mutt_substrdup() @@ -132,16 +129,13 @@ done %patch5 -p1 -b .xtitles %patch6 -p1 -b .sidebar %patch7 -p0 -b .opennfs -%patch8 -p1 -b .gpgme %patch9 -p1 -b .largefile %patch10 -p0 -b .tinfo %patch11 -p1 -b .listreply %patch12 -p1 -b .pgp_verbose_mtime -%patch13 -p1 -b .automake-1.12 %patch14 -p1 -b .sidebar.color %patch15 -p0 -b .widechar.sidebar %patch16 -p0 -b .crlf -%patch17 -p1 -b .cve.2014.0467 %patch18 -p1 -b .mailcap %patch19 -p1 -b .cvw2014.9116 @@ -178,14 +172,15 @@ autoreconf -fi CC=gcc CFLAGS="-Wall $RPM_OPT_FLAGS -I. -D_GNU_SOURCE" #cflags -DSUSE_IMAP_FORCE_SSL CFLAGS -cflags -std=gnu99 CFLAGS cflags -fno-strict-aliasing CFLAGS cflags -fstack-protector CFLAGS +cflags -fPIE CFLAGS cflags -g3 CFLAGS cflags -pipe CFLAGS cflags -Wl,--as-needed LDFLAGS cflags -Wl,-O2 LDFLAGS cflags -Wl,--hash-size=8599 LDFLAGS +cflags -pie LDFLAGS KRB5CFGPATH=%{S:6} export CC CFLAGS LDFLAGS KRB5CFGPATH chmod 755 $KRB5CFGPATH @@ -276,6 +271,7 @@ install -D -m 644 %{SOURCE9} %{buildroot}%{_datadir}/mutt/mailcap %{_datadir}/applications/*.desktop %{_datadir}/pixmaps/mutt.png %{_mandir}/man1/mutt.1.gz +%{_mandir}/man1/pgp*.1.gz %{_mandir}/man1/smime_keys.1.gz %{_mandir}/man5/mmdf_mutt.5.gz %{_mandir}/man5/muttrc.5.gz diff --git a/patch-1.5.21.rr.compressed.1.bz2 b/patch-1.5.21.rr.compressed.1.bz2 deleted file mode 100644 index e6b440f..0000000 --- a/patch-1.5.21.rr.compressed.1.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:352a022a428c6a00c044105ae29a7abbf7aab0082fcc7b9694af8b02c7c35ee2 -size 10357 diff --git a/patch-1.5.23.rr.compressed.bz2 b/patch-1.5.23.rr.compressed.bz2 new file mode 100644 index 0000000..541fea9 --- /dev/null +++ b/patch-1.5.23.rr.compressed.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f92431ff7e793af274d200324c4526d470e88d68d6cb803aaf387c9292dba62 +size 9730 diff --git a/mutt-1.5.21.sidebar.20120829.patch b/patch-1.5.23.sidebar.20140412.patch similarity index 84% rename from mutt-1.5.21.sidebar.20120829.patch rename to patch-1.5.23.sidebar.20140412.patch index 445e574..2adcf75 100644 --- a/mutt-1.5.21.sidebar.20120829.patch +++ b/patch-1.5.23.sidebar.20140412.patch @@ -1,5 +1,129 @@ -*** mutt-1.5.21/buffy.c ---- mutt-1.5.21/buffy.c Wed Aug 29 17:12:22 2012 +--- + Makefile.am | 1 + Makefile.in | 8 ! + OPS | 5 + PATCHES | 1 + buffy.c | 151 +++++++++++++++++++!! + buffy.h | 6 + color.c | 2 + compose.c | 26 !!! + configure.ac | 2 + curs_main.c | 37 ++!!! + doc/Muttrc | 20 ++ + flags.c | 3 + functions.h | 10 + + globals.h | 6 + handler.c | 29 ++++ + imap/command.c | 7 + imap/imap.c | 2 + init.h | 48 ++++++ + mailbox.h | 1 + main.c | 11 + + mbox.c | 2 + menu.c | 20 !! + mh.c | 26 +++ + mutt.h | 6 + mutt_curses.h | 3 + mutt_menu.h | 1 + muttlib.c | 48 ++++++ + mx.c | 24 ++! + mx.h | 1 + pager.c | 42 +++!! + pattern.c | 38 +++++ + protos.h | 7 + sidebar.c | 405 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + sidebar.h | 36 +++++ + 34 files changed, 936 insertions(+), 99 modifications(!) + +*** mutt-1.5.23/Makefile.am +--- mutt-1.5.23/Makefile.am Fri Apr 11 15:14:01 2014 +*************** mutt_SOURCES = \ +*** 33,38 **** +--- 33,39 ---- + rfc822.c rfc1524.c rfc2047.c rfc2231.c rfc3676.c \ + score.c send.c sendlib.c signal.c sort.c \ + status.c system.c thread.c charset.c history.c lib.c \ ++ sidebar.c \ + muttlib.c editmsg.c mbyte.c \ + url.c ascii.c crypt-mod.c crypt-mod.h safe_asprintf.c + +*** mutt-1.5.23/Makefile.in +--- mutt-1.5.23/Makefile.in Sat Apr 12 17:12:38 2014 +*************** am_mutt_OBJECTS = addrbook.$(OBJEXT) ali +*** 133,139 **** + system.$(OBJEXT) thread.$(OBJEXT) charset.$(OBJEXT) \ + history.$(OBJEXT) lib.$(OBJEXT) muttlib.$(OBJEXT) \ + editmsg.$(OBJEXT) mbyte.$(OBJEXT) url.$(OBJEXT) \ +! ascii.$(OBJEXT) crypt-mod.$(OBJEXT) safe_asprintf.$(OBJEXT) + am__objects_1 = + am__objects_2 = patchlist.$(OBJEXT) conststrings.$(OBJEXT) \ + $(am__objects_1) +--- 133,140 ---- + system.$(OBJEXT) thread.$(OBJEXT) charset.$(OBJEXT) \ + history.$(OBJEXT) lib.$(OBJEXT) muttlib.$(OBJEXT) \ + editmsg.$(OBJEXT) mbyte.$(OBJEXT) url.$(OBJEXT) \ +! ascii.$(OBJEXT) crypt-mod.$(OBJEXT) safe_asprintf.$(OBJEXT) \ +! sidebar.$(OBJEXT) + am__objects_1 = + am__objects_2 = patchlist.$(OBJEXT) conststrings.$(OBJEXT) \ + $(am__objects_1) +*************** mutt_SOURCES = \ +*** 472,478 **** + 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 safe_asprintf.c + + nodist_mutt_SOURCES = $(BUILT_SOURCES) + mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \ +--- 473,480 ---- + 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 safe_asprintf.c \ +! sidebar.c + + nodist_mutt_SOURCES = $(BUILT_SOURCES) + mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \ +*************** EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O +*** 504,510 **** + README.SSL smime.h group.h \ + muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ + ChangeLog mkchangelog.sh mutt_idna.h \ +! snprintf.c regex.c crypt-gpgme.h hcachever.sh.in \ + txt2c.c txt2c.sh version.sh check_sec.sh + + EXTRA_SCRIPTS = smime_keys +--- 506,512 ---- + README.SSL smime.h group.h \ + muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ + ChangeLog mkchangelog.sh mutt_idna.h \ +! snprintf.c regex.c crypt-gpgme.h sidebar.h hcachever.sh.in \ + txt2c.c txt2c.sh version.sh check_sec.sh + + EXTRA_SCRIPTS = smime_keys +*** mutt-1.5.23/OPS +--- mutt-1.5.23/OPS Fri Apr 11 15:14:01 2014 +*************** OP_WHAT_KEY "display the keycode for a k +*** 179,181 **** +--- 179,186 ---- + 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" ++ OP_SIDEBAR_SCROLL_UP "scroll the mailbox pane up 1 page" ++ OP_SIDEBAR_SCROLL_DOWN "scroll the mailbox pane down 1 page" ++ OP_SIDEBAR_NEXT "go down to next mailbox" ++ OP_SIDEBAR_PREV "go to previous mailbox" ++ OP_SIDEBAR_OPEN "open hilighted mailbox" +*** mutt-1.5.23/PATCHES +--- mutt-1.5.23/PATCHES Sat Apr 12 17:36:35 2014 +*************** +*** 1 **** +--- 1,2 ---- ++ patch-1.5.23.sidebar.20140412.txt + rr.compressed +*** mutt-1.5.23/buffy.c +--- mutt-1.5.23/buffy.c Sat Apr 12 20:33:54 2014 *************** void mutt_buffy_cleanup (const char *buf *** 161,166 **** --- 161,209 ---- @@ -234,8 +358,25 @@ { BUFFY *tmp; *************** int mutt_buffy_check (int force) -*** 444,459 **** ---- 584,602 ---- +*** 444,460 **** + { + case M_MBOX: + case M_MMDF: + if (buffy_mbox_hasnew (tmp, &sb) > 0) + BuffyCount++; + break; + + case M_MAILDIR: + if (buffy_maildir_hasnew (tmp) > 0) + BuffyCount++; + break; + + case M_MH: +! mh_buffy(tmp); + if (tmp->new) + BuffyCount++; + break; +--- 584,603 ---- { case M_MBOX: case M_MMDF: @@ -251,12 +392,13 @@ break; case M_MH: -+ mh_buffy_update (tmp->path, &tmp->msgcount, &tmp->msg_unread, &tmp->msg_flagged, &tmp->sb_last_checked); - if ((tmp->new = mh_buffy (tmp->path)) > 0) +! mh_buffy_update (tmp->path, &tmp->msgcount, &tmp->msg_unread, &tmp->msg_flagged, &tmp->sb_last_checked); +! mh_buffy(tmp); + if (tmp->new) BuffyCount++; break; -*** mutt-1.5.21/buffy.h ---- mutt-1.5.21/buffy.h Wed Aug 29 17:11:20 2012 +*** mutt-1.5.23/buffy.h +--- mutt-1.5.23/buffy.h Fri Apr 11 15:14:01 2014 *************** *** 23,35 **** --- 23,41 ---- @@ -279,9 +421,9 @@ } BUFFY; -*** mutt-1.5.21/color.c ---- mutt-1.5.21/color.c Wed Aug 29 16:25:04 2012 -*************** static struct mapping_t Fields[] = +*** mutt-1.5.23/color.c +--- mutt-1.5.23/color.c Fri Apr 11 15:14:01 2014 +*************** static const struct mapping_t Fields[] = *** 93,98 **** --- 93,100 ---- { "bold", MT_COLOR_BOLD }, @@ -292,8 +434,8 @@ { NULL, 0 } }; -*** mutt-1.5.21/compose.c ---- mutt-1.5.21/compose.c Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/compose.c +--- mutt-1.5.23/compose.c Sat Apr 12 17:15:56 2014 *************** enum *** 72,78 **** @@ -301,7 +443,7 @@ #define TITLE_FMT "%10s" /* Used for Prompts, which are ASCII */ ! #define W (COLS - HDR_XOFFSET) - static char *Prompts[] = + static const char * const Prompts[] = { --- 72,78 ---- @@ -309,27 +451,27 @@ #define TITLE_FMT "%10s" /* Used for Prompts, which are ASCII */ ! #define W (COLS - HDR_XOFFSET - SidebarWidth) - static char *Prompts[] = + static const char * const Prompts[] = { -*************** static void redraw_crypt_lines (HEADER * -*** 112,118 **** - { - int off = 0; +*************** static void snd_entry (char *b, size_t b +*** 110,116 **** + static void redraw_crypt_lines (HEADER *msg) + { ! mvaddstr (HDR_CRYPT, 0, "Security: "); if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0) { ---- 112,118 ---- - { - int off = 0; +--- 110,116 ---- + static void redraw_crypt_lines (HEADER *msg) + { ! mvaddstr (HDR_CRYPT, SidebarWidth, "Security: "); if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0) { *************** static void redraw_crypt_lines (HEADER * -*** 144,150 **** +*** 142,148 **** } clrtoeol (); @@ -337,7 +479,7 @@ clrtoeol (); if ((WithCrypto & APPLICATION_PGP) ---- 144,150 ---- +--- 142,148 ---- } clrtoeol (); @@ -346,24 +488,24 @@ if ((WithCrypto & APPLICATION_PGP) *************** static void redraw_crypt_lines (HEADER * -*** 161,167 **** +*** 159,165 **** && (msg->security & ENCRYPT) && SmimeCryptAlg && *SmimeCryptAlg) { ! mvprintw (HDR_CRYPTINFO, 40, "%s%s", _("Encrypt with: "), NONULL(SmimeCryptAlg)); - off = 20; } ---- 161,167 ---- + } +--- 159,165 ---- && (msg->security & ENCRYPT) && SmimeCryptAlg && *SmimeCryptAlg) { ! mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "), NONULL(SmimeCryptAlg)); - off = 20; } + } *************** static void redraw_mix_line (LIST *chain -*** 175,181 **** +*** 172,178 **** int c; char *t; @@ -371,7 +513,7 @@ if (!chain) { ---- 175,181 ---- +--- 172,178 ---- int c; char *t; @@ -380,7 +522,7 @@ if (!chain) { *************** static void redraw_mix_line (LIST *chain -*** 190,196 **** +*** 187,193 **** if (t && t[0] == '0' && t[1] == '\0') t = ""; @@ -388,7 +530,7 @@ break; addstr (NONULL(t)); ---- 190,196 ---- +--- 187,193 ---- if (t && t[0] == '0' && t[1] == '\0') t = ""; @@ -397,7 +539,7 @@ addstr (NONULL(t)); *************** static void draw_envelope_addr (int line -*** 242,248 **** +*** 239,245 **** buf[0] = 0; rfc822_write_address (buf, sizeof (buf), addr, 1); @@ -405,7 +547,7 @@ mutt_paddstr (W, buf); } ---- 242,248 ---- +--- 239,245 ---- buf[0] = 0; rfc822_write_address (buf, sizeof (buf), addr, 1); @@ -414,7 +556,7 @@ } *************** static void draw_envelope (HEADER *msg, -*** 252,261 **** +*** 249,258 **** draw_envelope_addr (HDR_TO, msg->env->to); draw_envelope_addr (HDR_CC, msg->env->cc); draw_envelope_addr (HDR_BCC, msg->env->bcc); @@ -425,7 +567,7 @@ mutt_paddstr (W, fcc); if (WithCrypto) ---- 252,261 ---- +--- 249,258 ---- draw_envelope_addr (HDR_TO, msg->env->to); draw_envelope_addr (HDR_CC, msg->env->cc); draw_envelope_addr (HDR_BCC, msg->env->bcc); @@ -437,24 +579,24 @@ if (WithCrypto) *************** static void draw_envelope (HEADER *msg, -*** 266,272 **** +*** 263,269 **** #endif SETCOLOR (MT_COLOR_STATUS); ! mvaddstr (HDR_ATTACH - 1, 0, _("-- Attachments")); - BKGDSET (MT_COLOR_STATUS); clrtoeol (); ---- 266,272 ---- + NORMAL_COLOR; +--- 263,269 ---- #endif SETCOLOR (MT_COLOR_STATUS); ! mvaddstr (HDR_ATTACH - 1, SidebarWidth, _("-- Attachments")); - BKGDSET (MT_COLOR_STATUS); clrtoeol (); + NORMAL_COLOR; *************** static int edit_address_list (int line, -*** 304,310 **** +*** 299,305 **** /* redraw the expanded list so the user can see the result */ buf[0] = 0; rfc822_write_address (buf, sizeof (buf), *addr, 1); @@ -462,7 +604,7 @@ mutt_paddstr (W, buf); return 0; ---- 304,310 ---- +--- 299,305 ---- /* redraw the expanded list so the user can see the result */ buf[0] = 0; rfc822_write_address (buf, sizeof (buf), *addr, 1); @@ -471,24 +613,24 @@ return 0; *************** int mutt_compose_menu (HEADER *msg, /* -*** 549,555 **** +*** 544,550 **** if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0) { mutt_str_replace (&msg->env->subject, buf); ! move (HDR_SUBJECT, HDR_XOFFSET); - clrtoeol (); if (msg->env->subject) mutt_paddstr (W, msg->env->subject); ---- 549,555 ---- + else +--- 544,550 ---- if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0) { mutt_str_replace (&msg->env->subject, buf); ! move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth); - clrtoeol (); if (msg->env->subject) mutt_paddstr (W, msg->env->subject); + else *************** int mutt_compose_menu (HEADER *msg, /* -*** 566,572 **** +*** 562,568 **** { strfcpy (fcc, buf, fcclen); mutt_pretty_mailbox (fcc, fcclen); @@ -496,7 +638,7 @@ mutt_paddstr (W, fcc); fccSet = 1; } ---- 566,572 ---- +--- 562,568 ---- { strfcpy (fcc, buf, fcclen); mutt_pretty_mailbox (fcc, fcclen); @@ -504,11 +646,11 @@ mutt_paddstr (W, fcc); fccSet = 1; } -*** mutt-1.5.21/configure.ac ---- mutt-1.5.21/configure.ac Wed Aug 29 17:10:31 2012 +*** mutt-1.5.23/configure.ac +--- mutt-1.5.23/configure.ac Fri Apr 11 15:14:01 2014 *************** if test $mutt_cv_langinfo_yesexpr = yes; -*** 1302,1307 **** ---- 1302,1309 ---- +*** 1289,1294 **** +--- 1289,1296 ---- AC_DEFINE(HAVE_LANGINFO_YESEXPR,1,[ Define if you have and nl_langinfo(YESEXPR). ]) fi @@ -517,8 +659,8 @@ dnl Documentation tools have_openjade="no" AC_PATH_PROG([OSPCAT], [ospcat], [none]) -*** mutt-1.5.21/curs_main.c ---- mutt-1.5.21/curs_main.c Wed Aug 29 17:08:10 2012 +*** mutt-1.5.23/curs_main.c +--- mutt-1.5.23/curs_main.c Sun Apr 13 02:45:21 2014 *************** *** 26,32 **** --- 26,34 ---- @@ -586,23 +728,22 @@ if (menu->menu == MENU_MAIN) *************** int mutt_index_menu (void) -*** 567,576 **** ---- 580,592 ---- +*** 567,575 **** +--- 580,591 ---- if (menu->redraw & REDRAW_STATUS) { + DrawFullLine = 1; menu_status_line (buf, sizeof (buf), menu, NONULL (Status)); + DrawFullLine = 0; - CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES-2); + move (option (OPTSTATUSONTOP) ? 0 : LINES-2, 0); SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); + set_buffystats(Context); mutt_paddstr (COLS, buf); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + NORMAL_COLOR; + menu->redraw &= ~REDRAW_STATUS; *************** int mutt_index_menu (void) -*** 591,597 **** +*** 589,595 **** menu->oldcurrent = -1; if (option (OPTARROWCURSOR)) @@ -610,7 +751,7 @@ else if (option (OPTBRAILLEFRIENDLY)) move (menu->current - menu->top + menu->offset, 0); else ---- 607,613 ---- +--- 605,611 ---- menu->oldcurrent = -1; if (option (OPTARROWCURSOR)) @@ -619,8 +760,18 @@ move (menu->current - menu->top + menu->offset, 0); else *************** int mutt_index_menu (void) -*** 1089,1094 **** ---- 1105,1111 ---- +*** 1031,1036 **** +--- 1047,1053 ---- + break; + + CHECK_MSGCOUNT; ++ CHECK_VISIBLE; + CHECK_READONLY; + { + int oldvcount = Context->vcount; +*************** int mutt_index_menu (void) +*** 1090,1095 **** +--- 1107,1113 ---- menu->redraw = REDRAW_FULL; break; @@ -629,7 +780,7 @@ case OP_MAIN_NEXT_UNREAD_MAILBOX: *************** int mutt_index_menu (void) -*** 1120,1126 **** +*** 1121,1127 **** { mutt_buffy (buf, sizeof (buf)); @@ -637,7 +788,7 @@ { if (menu->menu == MENU_PAGER) { ---- 1137,1147 ---- +--- 1139,1149 ---- { mutt_buffy (buf, sizeof (buf)); @@ -650,8 +801,8 @@ if (menu->menu == MENU_PAGER) { *************** int mutt_index_menu (void) -*** 1138,1143 **** ---- 1159,1165 ---- +*** 1139,1144 **** +--- 1161,1167 ---- } mutt_expand_path (buf, sizeof (buf)); @@ -660,8 +811,8 @@ { mutt_error (_("%s is not a mailbox."), buf); *************** int mutt_index_menu (void) -*** 2233,2238 **** ---- 2255,2266 ---- +*** 2234,2239 **** +--- 2257,2268 ---- mutt_what_key(); break; @@ -674,8 +825,39 @@ default: if (menu->menu == MENU_MAIN) km_error_key (MENU_MAIN); -*** mutt-1.5.21/flags.c ---- mutt-1.5.21/flags.c Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/doc/Muttrc +--- mutt-1.5.23/doc/Muttrc Fri Apr 11 15:14:01 2014 +*************** set check_mbox_size=yes +*** 657,662 **** +--- 657,682 ---- + # $crypt_autosign, $crypt_replysign and $smime_is_default. + # + # ++ # set sidebar_visible=no ++ # ++ # Name: sidebar_visible ++ # Type: boolean ++ # Default: no ++ # ++ # ++ # This specifies whether or not to show sidebar (left-side list of folders). ++ # ++ # ++ # set sidebar_width=0 ++ # ++ # Name: sidebar_width ++ # Type: number ++ # Default: 0 ++ # ++ # ++ # The width of the sidebar. ++ # ++ # + # set crypt_autosign=no + # + # Name: crypt_autosign +*** mutt-1.5.23/flags.c +--- mutt-1.5.23/flags.c Fri Apr 11 15:14:01 2014 *************** *** 22,29 **** --- 22,31 ---- @@ -699,9 +881,9 @@ } void mutt_tag_set_flag (int flag, int bf) -*** mutt-1.5.21/functions.h ---- mutt-1.5.21/functions.h Wed Aug 29 16:25:04 2012 -*************** struct binding_t OpMain[] = { /* map: in +*** mutt-1.5.23/functions.h +--- mutt-1.5.23/functions.h Fri Apr 11 15:14:01 2014 +*************** const struct binding_t OpMain[] = { /* m *** 169,174 **** --- 169,179 ---- { "decrypt-save", OP_DECRYPT_SAVE, NULL }, @@ -715,7 +897,7 @@ { NULL, 0, NULL } }; -*************** struct binding_t OpPager[] = { /* map: p +*************** const struct binding_t OpPager[] = { /* *** 272,277 **** --- 277,287 ---- @@ -729,22 +911,23 @@ { NULL, 0, NULL } }; -*** mutt-1.5.21/globals.h ---- mutt-1.5.21/globals.h Wed Aug 29 17:09:02 2012 +*** mutt-1.5.23/globals.h +--- mutt-1.5.23/globals.h Fri Apr 11 15:14:01 2014 *************** WHERE short SearchContext; *** 117,122 **** ---- 117,124 ---- +--- 117,125 ---- WHERE char *SendCharset; WHERE char *Sendmail; WHERE char *Shell; + WHERE char *SidebarDelim; + WHERE char *SidebarFormat; ++ WHERE char *SidebarIndentStr; WHERE char *Signature; WHERE char *SimpleSearch; #if USE_SMTP *************** WHERE short ScoreThresholdDelete; -*** 209,214 **** ---- 211,219 ---- +*** 210,215 **** +--- 213,221 ---- WHERE short ScoreThresholdRead; WHERE short ScoreThresholdFlag; @@ -754,12 +937,12 @@ #ifdef USE_IMAP WHERE short ImapKeepalive; WHERE short ImapPipelineDepth; -*** mutt-1.5.21/handler.c ---- mutt-1.5.21/handler.c Wed Aug 29 17:10:31 2012 +*** mutt-1.5.23/handler.c +--- mutt-1.5.23/handler.c Fri Apr 11 15:14:01 2014 *************** int mutt_body_handler (BODY *b, STATE *s -*** 1525,1530 **** ---- 1525,1535 ---- - char type[STRING]; +*** 1599,1604 **** +--- 1599,1609 ---- + size_t tmplength = 0; int rc = 0; + #ifdef HAVE_FMEMOPEN @@ -771,8 +954,8 @@ /* first determine which handler to use to process this part */ *************** int mutt_body_handler (BODY *b, STATE *s -*** 1644,1649 **** ---- 1649,1662 ---- +*** 1711,1716 **** +--- 1716,1729 ---- { /* decode to a tempfile, saving the original destination */ fp = s->fpout; @@ -788,8 +971,8 @@ if ((s->fpout = safe_fopen (tempfile, "w")) == NULL) { *************** int mutt_body_handler (BODY *b, STATE *s -*** 1651,1656 **** ---- 1664,1670 ---- +*** 1718,1723 **** +--- 1731,1737 ---- dprint (1, (debugfile, "Can't open %s.\n", tempfile)); goto bail; } @@ -798,8 +981,8 @@ * of the "real" values now, and restore them after processing */ *************** int mutt_body_handler (BODY *b, STATE *s -*** 1679,1686 **** ---- 1693,1711 ---- +*** 1746,1753 **** +--- 1760,1778 ---- /* restore final destination and substitute the tempfile for input */ s->fpout = fp; fp = s->fpin; @@ -820,8 +1003,8 @@ /* restore the prefix */ s->prefix = savePrefix; *************** int mutt_body_handler (BODY *b, STATE *s -*** 1706,1711 **** ---- 1731,1740 ---- +*** 1773,1778 **** +--- 1798,1807 ---- /* restore the original source stream */ safe_fclose (&s->fpin); @@ -832,11 +1015,48 @@ s->fpin = fp; } } -*** mutt-1.5.21/init.h ---- mutt-1.5.21/init.h Wed Aug 29 17:09:48 2012 +*** mutt-1.5.23/imap/command.c +--- mutt-1.5.23/imap/command.c Fri Apr 11 15:14:01 2014 +*************** static void cmd_parse_status (IMAP_DATA* +*** 1012,1017 **** +--- 1012,1024 ---- + opened */ + status->uidnext = oldun; + ++ /* Added to make the sidebar show the correct numbers */ ++ if (status->messages) ++ { ++ inc->msgcount = status->messages; ++ inc->msg_unread = status->unseen; ++ } ++ + FREE (&value); + return; + } +*** mutt-1.5.23/imap/imap.c +--- mutt-1.5.23/imap/imap.c Fri Apr 11 15:14:01 2014 +*************** int imap_buffy_check (int force) +*** 1514,1520 **** + + imap_munge_mbox_name (munged, sizeof (munged), name); + snprintf (command, sizeof (command), +! "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)", munged); + + if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0) + { +--- 1514,1520 ---- + + imap_munge_mbox_name (munged, sizeof (munged), name); + snprintf (command, sizeof (command), +! "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)", munged); + + if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0) + { +*** mutt-1.5.23/init.h +--- mutt-1.5.23/init.h Fri Apr 11 15:14:01 2014 *************** struct option_t MuttVars[] = { -*** 1955,1960 **** ---- 1955,2002 ---- +*** 1966,1971 **** +--- 1966,2019 ---- ** not used. ** (PGP only) */ @@ -846,6 +1066,12 @@ + ** This specifies the delimiter between the sidebar (if visible) and + ** other screens. + */ ++ {"sidebar_indentstr", DT_STR, R_BOTH, UL &SidebarIndentStr, UL " "}, ++ /* ++ ** .pp ++ ** This specifies the string that is used to indent items ++ ** with sidebar_folderindent= yes ++ */ + { "sidebar_visible", DT_BOOL, R_BOTH, OPTSIDEBAR, 0 }, + /* + ** .pp @@ -885,8 +1111,8 @@ { "pgp_use_gpg_agent", DT_BOOL, R_NONE, OPTUSEGPGAGENT, 0}, /* ** .pp -*** mutt-1.5.21/mailbox.h ---- mutt-1.5.21/mailbox.h Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/mailbox.h +--- mutt-1.5.23/mailbox.h Fri Apr 11 15:14:01 2014 *************** *** 27,32 **** --- 27,33 ---- @@ -897,8 +1123,8 @@ /* mx_open_new_message() */ #define M_ADD_FROM 1 /* add a From_ line */ -*** mutt-1.5.21/main.c ---- mutt-1.5.21/main.c Wed Aug 29 17:13:28 2012 +*** mutt-1.5.23/main.c +--- mutt-1.5.23/main.c Fri Apr 11 15:14:01 2014 *************** *** 50,55 **** --- 50,56 ---- @@ -910,7 +1136,7 @@ #ifdef HAVE_GETOPT_H *************** init_extended_keys(); -*** 531,537 **** +*** 561,567 **** int main (int argc, char **argv) { @@ -918,7 +1144,7 @@ char *subject = NULL; char *includeFile = NULL; char *draftFile = NULL; ---- 532,538 ---- +--- 562,568 ---- int main (int argc, char **argv) { @@ -927,8 +1153,8 @@ char *includeFile = NULL; char *draftFile = NULL; *************** int main (int argc, char **argv) -*** 1001,1006 **** ---- 1002,1014 ---- +*** 1031,1036 **** +--- 1032,1044 ---- strfcpy (folder, NONULL(Spoolfile), sizeof (folder)); mutt_expand_path (folder, sizeof (folder)); @@ -943,8 +1169,8 @@ mutt_str_replace (&LastFolder, folder); *************** int main (int argc, char **argv) -*** 1023,1028 **** ---- 1031,1037 ---- +*** 1053,1058 **** +--- 1061,1067 ---- if((Context = mx_open_mailbox (folder, ((flags & M_RO) || option (OPTREADONLY)) ? M_READONLY : 0, NULL)) || !explicit_folder) { @@ -952,75 +1178,8 @@ mutt_index_menu (); if (Context) FREE (&Context); -*** mutt-1.5.21/Makefile.am ---- mutt-1.5.21/Makefile.am Wed Aug 29 16:25:04 2012 -*************** mutt_SOURCES = \ -*** 32,37 **** ---- 32,38 ---- - rfc822.c rfc1524.c rfc2047.c rfc2231.c rfc3676.c \ - score.c send.c sendlib.c signal.c sort.c \ - status.c system.c thread.c charset.c history.c lib.c \ -+ sidebar.c \ - muttlib.c editmsg.c mbyte.c \ - url.c ascii.c crypt-mod.c crypt-mod.h safe_asprintf.c - -*** mutt-1.5.21/Makefile.in ---- mutt-1.5.21/Makefile.in Wed Aug 29 16:25:04 2012 -*************** am_mutt_OBJECTS = addrbook.$(OBJEXT) ali -*** 86,92 **** - system.$(OBJEXT) thread.$(OBJEXT) charset.$(OBJEXT) \ - history.$(OBJEXT) lib.$(OBJEXT) muttlib.$(OBJEXT) \ - editmsg.$(OBJEXT) mbyte.$(OBJEXT) url.$(OBJEXT) \ -! ascii.$(OBJEXT) crypt-mod.$(OBJEXT) safe_asprintf.$(OBJEXT) - am__objects_1 = - am__objects_2 = patchlist.$(OBJEXT) $(am__objects_1) - nodist_mutt_OBJECTS = $(am__objects_2) ---- 86,93 ---- - system.$(OBJEXT) thread.$(OBJEXT) charset.$(OBJEXT) \ - history.$(OBJEXT) lib.$(OBJEXT) muttlib.$(OBJEXT) \ - editmsg.$(OBJEXT) mbyte.$(OBJEXT) url.$(OBJEXT) \ -! ascii.$(OBJEXT) crypt-mod.$(OBJEXT) safe_asprintf.$(OBJEXT) \ -! sidebar.$(OBJEXT) - am__objects_1 = - am__objects_2 = patchlist.$(OBJEXT) $(am__objects_1) - nodist_mutt_OBJECTS = $(am__objects_2) -*************** mutt_SOURCES = \ -*** 360,366 **** - 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 safe_asprintf.c - - nodist_mutt_SOURCES = $(BUILT_SOURCES) - mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \ ---- 361,368 ---- - 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 safe_asprintf.c \ -! sidebar.c - - nodist_mutt_SOURCES = $(BUILT_SOURCES) - mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \ -*************** EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O -*** 392,398 **** - README.SSL smime.h group.h \ - muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ - ChangeLog mkchangelog.sh mutt_idna.h \ -! snprintf.c regex.c crypt-gpgme.h hcachever.sh.in - - EXTRA_SCRIPTS = smime_keys - mutt_dotlock_SOURCES = mutt_dotlock.c ---- 394,400 ---- - README.SSL smime.h group.h \ - muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ - ChangeLog mkchangelog.sh mutt_idna.h \ -! snprintf.c regex.c crypt-gpgme.h sidebar.h hcachever.sh.in - - EXTRA_SCRIPTS = smime_keys - mutt_dotlock_SOURCES = mutt_dotlock.c -*** mutt-1.5.21/mbox.c ---- mutt-1.5.21/mbox.c Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/mbox.c +--- mutt-1.5.23/mbox.c Fri Apr 11 15:14:01 2014 *************** int mmdf_parse_mailbox (CONTEXT *ctx) *** 104,109 **** --- 104,110 ---- @@ -1041,8 +1200,8 @@ #ifdef NFS_ATTRIBUTE_HACK if (sb.st_mtime > sb.st_atime) -*** mutt-1.5.21/menu.c ---- mutt-1.5.21/menu.c Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/menu.c +--- mutt-1.5.23/menu.c Sun Apr 13 02:31:16 2014 *************** *** 24,29 **** --- 24,30 ---- @@ -1051,10 +1210,10 @@ #include "mbyte.h" + #include "sidebar.h" - #include - #include + extern size_t UngetCount; + *************** static void menu_pad_string (char *s, si -*** 156,162 **** +*** 186,192 **** { char *scratch = safe_strdup (s); int shift = option (OPTARROWCURSOR) ? 3 : 0; @@ -1062,7 +1221,7 @@ mutt_format_string (s, n, cols, cols, FMT_LEFT, ' ', scratch, mutt_strlen (scratch), 1); s[n - 1] = 0; ---- 157,163 ---- +--- 187,193 ---- { char *scratch = safe_strdup (s); int shift = option (OPTARROWCURSOR) ? 3 : 0; @@ -1071,145 +1230,131 @@ mutt_format_string (s, n, cols, cols, FMT_LEFT, ' ', scratch, mutt_strlen (scratch), 1); s[n - 1] = 0; *************** void menu_redraw_index (MUTTMENU *menu) -*** 207,212 **** ---- 208,214 ---- - char buf[LONG_STRING]; - int i; +*** 239,244 **** +--- 240,246 ---- + int do_color; + int attr; + draw_sidebar(1); for (i = menu->top; i < menu->top + menu->pagelen; i++) { if (i < menu->max) *************** void menu_redraw_index (MUTTMENU *menu) -*** 217,223 **** - if (option (OPTARROWCURSOR)) - { - attrset (menu->color (i)); -! CLEARLINE (i - menu->top + menu->offset); +*** 249,255 **** + menu_pad_string (buf, sizeof (buf)); - if (i == menu->current) - { ---- 219,225 ---- - if (option (OPTARROWCURSOR)) - { - attrset (menu->color (i)); -! CLEARLINE_WIN (i - menu->top + menu->offset); + ATTRSET(attr); +! move(i - menu->top + menu->offset, 0); + do_color = 1; - if (i == menu->current) - { + if (i == menu->current) +--- 251,257 ---- + menu_pad_string (buf, sizeof (buf)); + + ATTRSET(attr); +! move(i - menu->top + menu->offset, SidebarWidth); + do_color = 1; + + if (i == menu->current) *************** void menu_redraw_index (MUTTMENU *menu) -*** 246,259 **** - BKGDSET (MT_COLOR_INDICATOR); - } - -! CLEARLINE (i - menu->top + menu->offset); - print_enriched_string (menu->color(i), (unsigned char *) buf, i != menu->current); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); - } - } +*** 272,278 **** else -! CLEARLINE (i - menu->top + menu->offset); + { + NORMAL_COLOR; +! CLEARLINE(i - menu->top + menu->offset); + } } - menu->redraw = 0; - } ---- 248,261 ---- - BKGDSET (MT_COLOR_INDICATOR); - } - -! CLEARLINE_WIN (i - menu->top + menu->offset); - print_enriched_string (menu->color(i), (unsigned char *) buf, i != menu->current); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); - } - } + NORMAL_COLOR; +--- 274,280 ---- else + { + NORMAL_COLOR; ! CLEARLINE_WIN (i - menu->top + menu->offset); + } } - menu->redraw = 0; - } + NORMAL_COLOR; *************** void menu_redraw_motion (MUTTMENU *menu) -*** 268,274 **** +*** 289,295 **** return; } ! move (menu->oldcurrent + menu->offset - menu->top, 0); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + ATTRSET(menu->color (menu->oldcurrent)); ---- 270,276 ---- + if (option (OPTARROWCURSOR)) +--- 291,297 ---- return; } ! move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + ATTRSET(menu->color (menu->oldcurrent)); + if (option (OPTARROWCURSOR)) *************** void menu_redraw_motion (MUTTMENU *menu) -*** 283,295 **** - clrtoeol (); +*** 301,313 **** + { menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent); menu_pad_string (buf, sizeof (buf)); ! move (menu->oldcurrent + menu->offset - menu->top, 3); print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) buf, 1); - SETCOLOR (MT_COLOR_NORMAL); } /* now draw it in the new location */ -! move (menu->current + menu->offset - menu->top, 0); - attrset (menu->color (menu->current)); - ADDCOLOR (MT_COLOR_INDICATOR); - addstr ("->"); ---- 285,297 ---- - clrtoeol (); + SETCOLOR(MT_COLOR_INDICATOR); +! mvaddstr(menu->current + menu->offset - menu->top, 0, "->"); + } + else + { +--- 303,315 ---- + { menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent); menu_pad_string (buf, sizeof (buf)); ! move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3); print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) buf, 1); - SETCOLOR (MT_COLOR_NORMAL); } /* now draw it in the new location */ -! move (menu->current + menu->offset - menu->top, SidebarWidth); - attrset (menu->color (menu->current)); - ADDCOLOR (MT_COLOR_INDICATOR); - addstr ("->"); + SETCOLOR(MT_COLOR_INDICATOR); +! mvaddstr(menu->current + menu->offset - menu->top, SidebarWidth, "->"); + } + else + { *************** void menu_redraw_motion (MUTTMENU *menu) -*** 310,316 **** - attrset (menu->color (menu->current)); - ADDCOLOR (MT_COLOR_INDICATOR); - BKGDSET (MT_COLOR_INDICATOR); -! CLEARLINE (menu->current - menu->top + menu->offset); +*** 320,326 **** + menu_make_entry (buf, sizeof (buf), menu, menu->current); + menu_pad_string (buf, sizeof (buf)); + SETCOLOR(MT_COLOR_INDICATOR); +! move(menu->current - menu->top + menu->offset, 0); print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 0); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); ---- 312,318 ---- - attrset (menu->color (menu->current)); - ADDCOLOR (MT_COLOR_INDICATOR); - BKGDSET (MT_COLOR_INDICATOR); -! CLEARLINE_WIN (menu->current - menu->top + menu->offset); + } + menu->redraw &= REDRAW_STATUS; +--- 322,328 ---- + menu_make_entry (buf, sizeof (buf), menu, menu->current); + menu_pad_string (buf, sizeof (buf)); + SETCOLOR(MT_COLOR_INDICATOR); +! move(menu->current - menu->top + menu->offset, SidebarWidth); print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 0); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + } + menu->redraw &= REDRAW_STATUS; *************** void menu_redraw_current (MUTTMENU *menu -*** 322,328 **** - { +*** 332,338 **** char buf[LONG_STRING]; + int attr = menu->color (menu->current); ! move (menu->current + menu->offset - menu->top, 0); menu_make_entry (buf, sizeof (buf), menu, menu->current); menu_pad_string (buf, sizeof (buf)); ---- 324,330 ---- - { +--- 334,340 ---- char buf[LONG_STRING]; + int attr = menu->color (menu->current); ! move (menu->current + menu->offset - menu->top, SidebarWidth); menu_make_entry (buf, sizeof (buf), menu, menu->current); menu_pad_string (buf, sizeof (buf)); *************** int mutt_menuLoop (MUTTMENU *menu) -*** 875,881 **** +*** 872,878 **** if (option (OPTARROWCURSOR)) @@ -1217,7 +1362,7 @@ else if (option (OPTBRAILLEFRIENDLY)) move (menu->current - menu->top + menu->offset, 0); else ---- 877,883 ---- +--- 874,880 ---- if (option (OPTARROWCURSOR)) @@ -1225,34 +1370,12 @@ else if (option (OPTBRAILLEFRIENDLY)) move (menu->current - menu->top + menu->offset, 0); else -*** mutt-1.5.21/mh.c ---- mutt-1.5.21/mh.c Wed Aug 29 17:07:18 2012 -*************** int mh_buffy (const char *path) -*** 235,247 **** - - if (mh_read_sequences (&mhs, path) < 0) - return 0; - for (i = 0; !r && i <= mhs.max; i++) -! if (mhs_check (&mhs, i) & MH_SEQ_UNSEEN) - r = 1; +*** mutt-1.5.23/mh.c +--- mutt-1.5.23/mh.c Fri Apr 11 16:04:59 2014 +*************** void mh_buffy(BUFFY *b) +*** 295,300 **** +--- 295,326 ---- mhs_free_sequences (&mhs); - return r; - } - - static int mh_mkstemp (CONTEXT * dest, FILE ** fp, char **tgt) - { - int fd; ---- 235,275 ---- - - if (mh_read_sequences (&mhs, path) < 0) - return 0; -+ - for (i = 0; !r && i <= mhs.max; i++) -! if (mhs_check (&mhs, i) & MH_SEQ_UNSEEN) { - r = 1; -+ } - mhs_free_sequences (&mhs); - return r; } + void mh_buffy_update (const char *path, int *msgcount, int *msg_unread, int *msg_flagged, time_t *sb_last_checked) @@ -1284,11 +1407,11 @@ static int mh_mkstemp (CONTEXT * dest, FILE ** fp, char **tgt) { int fd; -*** mutt-1.5.21/mutt.h ---- mutt-1.5.21/mutt.h Wed Aug 29 17:09:48 2012 +*** mutt-1.5.23/mutt.h +--- mutt-1.5.23/mutt.h Mon Jan 26 15:01:48 2015 *************** enum -*** 425,430 **** ---- 425,434 ---- +*** 427,432 **** +--- 427,436 ---- OPTSAVENAME, OPTSENDGROUPREPLYTO, OPTSCORE, @@ -1300,8 +1423,8 @@ OPTSIGONTOP, OPTSORTRE, *************** typedef struct _context -*** 866,871 **** ---- 870,876 ---- +*** 868,873 **** +--- 872,878 ---- { char *path; FILE *fp; @@ -1310,8 +1433,8 @@ off_t size; off_t vsize; *************** typedef struct _context -*** 905,910 **** ---- 910,916 ---- +*** 907,912 **** +--- 912,918 ---- unsigned int quiet : 1; /* inhibit status messages? */ unsigned int collapsed : 1; /* are all threads collapsed? */ unsigned int closing : 1; /* mailbox is being closed */ @@ -1319,11 +1442,46 @@ /* driver hooks */ void *data; /* driver specific data */ -*** mutt-1.5.21/muttlib.c ---- mutt-1.5.21/muttlib.c Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/mutt_curses.h +--- mutt-1.5.23/mutt_curses.h Fri Apr 11 15:14:01 2014 +*************** +*** 64,69 **** +--- 64,70 ---- + #undef lines + #endif /* lines */ + ++ #define CLEARLINE_WIN(x) move(x,SidebarWidth), clrtoeol() + #define CLEARLINE(x) move(x,0), clrtoeol() + #define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x) + #define BEEP() do { if (option (OPTBEEP)) beep(); } while (0) +*************** enum +*** 120,125 **** +--- 121,128 ---- + MT_COLOR_BOLD, + MT_COLOR_UNDERLINE, + MT_COLOR_INDEX, ++ MT_COLOR_NEW, ++ MT_COLOR_FLAGGED, + MT_COLOR_MAX + }; + +*** mutt-1.5.23/mutt_menu.h +--- mutt-1.5.23/mutt_menu.h Fri Apr 11 15:14:01 2014 +*************** +*** 34,39 **** +--- 34,40 ---- + #define REDRAW_FULL (1<<5) + #define REDRAW_BODY (1<<6) + #define REDRAW_SIGWINCH (1<<7) ++ #define REDRAW_SIDEBAR (1<<8) + + #define M_MODEFMT "-- Mutt: %s" + +*** mutt-1.5.23/muttlib.c +--- mutt-1.5.23/muttlib.c Fri Apr 11 15:14:01 2014 *************** void mutt_FormatString (char *dest, /* -*** 1289,1294 **** ---- 1289,1296 ---- +*** 1281,1286 **** +--- 1281,1288 ---- pl = pw = 1; /* see if there's room to add content, else ignore */ @@ -1333,8 +1491,8 @@ { int pad; *************** void mutt_FormatString (char *dest, /* -*** 1332,1337 **** ---- 1334,1385 ---- +*** 1324,1329 **** +--- 1326,1377 ---- col += wid; src += pl; } @@ -1387,46 +1545,11 @@ break; /* skip rest of input */ } else if (ch == '|') -*** mutt-1.5.21/mutt_curses.h ---- mutt-1.5.21/mutt_curses.h Wed Aug 29 16:25:04 2012 -*************** -*** 64,69 **** ---- 64,70 ---- - #undef lines - #endif /* lines */ - -+ #define CLEARLINE_WIN(x) move(x,SidebarWidth), clrtoeol() - #define CLEARLINE(x) move(x,0), clrtoeol() - #define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x) - #define BEEP() do { if (option (OPTBEEP)) beep(); } while (0) -*************** enum -*** 126,131 **** ---- 127,134 ---- - MT_COLOR_BOLD, - MT_COLOR_UNDERLINE, - MT_COLOR_INDEX, -+ MT_COLOR_NEW, -+ MT_COLOR_FLAGGED, - MT_COLOR_MAX - }; - -*** mutt-1.5.21/mutt_menu.h ---- mutt-1.5.21/mutt_menu.h Wed Aug 29 17:08:10 2012 -*************** -*** 34,39 **** ---- 34,40 ---- - #define REDRAW_FULL (1<<5) - #define REDRAW_BODY (1<<6) - #define REDRAW_SIGWINCH (1<<7) -+ #define REDRAW_SIDEBAR (1<<8) - - #define M_MODEFMT "-- Mutt: %s" - -*** mutt-1.5.21/mx.c ---- mutt-1.5.21/mx.c Wed Aug 29 17:12:49 2012 +*** mutt-1.5.23/mx.c +--- mutt-1.5.23/mx.c Mon Jan 26 15:02:43 2015 *************** static int mx_open_mailbox_append (CONTE -*** 595,600 **** ---- 595,601 ---- +*** 596,601 **** +--- 596,602 ---- * M_APPEND open mailbox for appending * M_READONLY open mailbox in read-only mode * M_QUIET only print error messages @@ -1435,8 +1558,8 @@ */ CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx) *************** CONTEXT *mx_open_mailbox (const char *pa -*** 617,622 **** ---- 618,625 ---- +*** 618,623 **** +--- 619,626 ---- ctx->quiet = 1; if (flags & M_READONLY) ctx->readonly = 1; @@ -1446,7 +1569,7 @@ if (flags & (M_APPEND|M_NEWFOLDER)) { *************** CONTEXT *mx_open_mailbox (const char *pa -*** 721,733 **** +*** 722,734 **** void mx_fastclose_mailbox (CONTEXT *ctx) { int i; @@ -1460,7 +1583,7 @@ if (ctx->mx_close) ctx->mx_close (ctx); ---- 724,749 ---- +--- 725,750 ---- void mx_fastclose_mailbox (CONTEXT *ctx) { int i; @@ -1488,8 +1611,8 @@ if (ctx->mx_close) ctx->mx_close (ctx); *************** void mx_fastclose_mailbox (CONTEXT *ctx) -*** 739,744 **** ---- 755,762 ---- +*** 740,745 **** +--- 756,763 ---- mutt_clear_threads (ctx); for (i = 0; i < ctx->msgcount; i++) mutt_free_header (&ctx->hdrs[i]); @@ -1499,8 +1622,8 @@ FREE (&ctx->v2r); #ifdef USE_COMPRESSED *************** int mx_close_mailbox (CONTEXT *ctx, int -*** 842,847 **** ---- 860,869 ---- +*** 843,848 **** +--- 861,870 ---- if (!ctx->hdrs[i]->deleted && ctx->hdrs[i]->read && !(ctx->hdrs[i]->flagged && option (OPTKEEPFLAGGED))) read_msgs++; @@ -1511,33 +1634,20 @@ } if (read_msgs && quadoption (OPT_MOVE) != M_NO) -*** mutt-1.5.21/mx.h ---- mutt-1.5.21/mx.h Wed Aug 29 17:06:47 2012 -*************** int mh_read_dir (CONTEXT *, const char * -*** 61,66 **** ---- 61,67 ---- +*** mutt-1.5.23/mx.h +--- mutt-1.5.23/mx.h Fri Apr 11 16:11:47 2014 +*************** void mbox_reset_atime (CONTEXT *, struct +*** 60,65 **** +--- 60,66 ---- + int mh_read_dir (CONTEXT *, const char *); int mh_sync_mailbox (CONTEXT *, int *); int mh_check_mailbox (CONTEXT *, int *); - int mh_buffy (const char *); + void mh_buffy_update (const char *, int *, int *, int *, time_t *); int mh_check_empty (const char *); int maildir_read_dir (CONTEXT *); -*** mutt-1.5.21/OPS ---- mutt-1.5.21/OPS Wed Aug 29 16:25:04 2012 -*************** OP_WHAT_KEY "display the keycode for a k -*** 179,181 **** ---- 179,186 ---- - 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" -+ OP_SIDEBAR_SCROLL_UP "scroll the mailbox pane up 1 page" -+ OP_SIDEBAR_SCROLL_DOWN "scroll the mailbox pane down 1 page" -+ OP_SIDEBAR_NEXT "go down to next mailbox" -+ OP_SIDEBAR_PREV "go to previous mailbox" -+ OP_SIDEBAR_OPEN "open hilighted mailbox" -*** mutt-1.5.21/pager.c ---- mutt-1.5.21/pager.c Wed Aug 29 16:36:24 2012 +*** mutt-1.5.23/pager.c +--- mutt-1.5.23/pager.c Mon Jan 26 15:08:29 2015 *************** *** 29,34 **** --- 29,35 ---- @@ -1559,8 +1669,8 @@ if (check_attachment_marker ((char *)buf) == 0) wrap_cols = COLS; *************** mutt_pager (const char *banner, const ch -*** 1571,1576 **** ---- 1573,1579 ---- +*** 1572,1577 **** +--- 1574,1580 ---- int bodyoffset = 1; /* offset of first line of real text */ int statusoffset = 0; /* offset for the status bar */ @@ -1569,7 +1679,7 @@ int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */ *************** mutt_pager (const char *banner, const ch -*** 1745,1751 **** +*** 1746,1752 **** if ((redraw & REDRAW_BODY) || topline != oldtopline) { do { @@ -1577,7 +1687,7 @@ curline = oldtopline = topline; lines = 0; force_redraw = 0; ---- 1748,1754 ---- +--- 1749,1755 ---- if ((redraw & REDRAW_BODY) || topline != oldtopline) { do { @@ -1586,8 +1696,8 @@ lines = 0; force_redraw = 0; *************** mutt_pager (const char *banner, const ch -*** 1758,1763 **** ---- 1761,1767 ---- +*** 1759,1764 **** +--- 1762,1768 ---- &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) lines++; curline++; @@ -1603,25 +1713,21 @@ 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. */ + NORMAL_COLOR; + *************** mutt_pager (const char *banner, const ch -*** 1786,1791 **** ---- 1791,1798 ---- +*** 1788,1816 **** hfi.ctx = Context; hfi.pager_progress = pager_progress_str; -+ statuswidth = COLS - (option(OPTSTATUSONTOP) && PagerIndexLines > 0 ? SidebarWidth : 0); -+ if (last_pos < sb.st_size - 1) snprintf(pager_progress_str, sizeof(pager_progress_str), OFF_T_FMT "%%", (100 * last_offset / sb.st_size)); else -*************** mutt_pager (const char *banner, const ch -*** 1794,1815 **** + strfcpy(pager_progress_str, (topline == 0) ? "all" : "end", sizeof(pager_progress_str)); + /* print out the pager status bar */ +! move (statusoffset, 0); SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); -! CLEARLINE (statusoffset); if (IsHeader (extra) || IsMsgAttach (extra)) { @@ -1637,19 +1743,29 @@ snprintf (bn, sizeof (bn), "%s (%s)", banner, pager_progress_str); ! mutt_paddstr (COLS, bn); } - BKGDSET (MT_COLOR_NORMAL); - SETCOLOR (MT_COLOR_NORMAL); + NORMAL_COLOR; if (option(OPTXTERMSETTITLES)) ---- 1801,1829 ---- + { +--- 1793,1831 ---- + hfi.ctx = Context; + hfi.pager_progress = pager_progress_str; + ++ statuswidth = COLS - (option(OPTSTATUSONTOP) && PagerIndexLines > 0 ? SidebarWidth : 0); ++ + if (last_pos < sb.st_size - 1) + snprintf(pager_progress_str, sizeof(pager_progress_str), OFF_T_FMT "%%", (100 * last_offset / sb.st_size)); + else + strfcpy(pager_progress_str, (topline == 0) ? "all" : "end", sizeof(pager_progress_str)); + /* print out the pager status bar */ +! move (statusoffset, SidebarWidth); SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); -! if(option(OPTSTATUSONTOP) && PagerIndexLines > 0) { -! CLEARLINE_WIN (statusoffset); -! } else { -! CLEARLINE (statusoffset); -! DrawFullLine = 1; /* for mutt_make_string_info */ -! } ++ if(option(OPTSTATUSONTOP) && PagerIndexLines > 0) { ++ CLEARLINE_WIN (statusoffset); ++ } else { ++ CLEARLINE (statusoffset); ++ DrawFullLine = 1; /* for mutt_make_string_info */ ++ } if (IsHeader (extra) || IsMsgAttach (extra)) { @@ -1666,12 +1782,12 @@ ! mutt_paddstr (statuswidth, bn); } + if(!option(OPTSTATUSONTOP) || PagerIndexLines == 0) -+ DrawFullLine = 0; /* reset */ - BKGDSET (MT_COLOR_NORMAL); - SETCOLOR (MT_COLOR_NORMAL); ++ DrawFullLine = 0; /* reset */ + NORMAL_COLOR; if (option(OPTXTERMSETTITLES)) + { *************** mutt_pager (const char *banner, const ch -*** 1826,1843 **** +*** 1826,1841 **** /* redraw the pager_index indicator, because the * flags for this message might have changed. */ menu_redraw_current (index); @@ -1681,16 +1797,14 @@ ! 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); + NORMAL_COLOR; } redraw = 0; if (option(OPTBRAILLEFRIENDLY)) { ---- 1840,1863 ---- +--- 1841,1862 ---- /* redraw the pager_index indicator, because the * flags for this message might have changed. */ menu_redraw_current (index); @@ -1702,10 +1816,8 @@ ! move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), ! (option(OPTSTATUSONTOP) ? 0: SidebarWidth)); SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); ! mutt_paddstr (COLS - (option(OPTSTATUSONTOP) ? 0 : SidebarWidth), buffer); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + NORMAL_COLOR; } + /* if we're not using the index, update every time */ @@ -1716,8 +1828,8 @@ if (option(OPTBRAILLEFRIENDLY)) { *************** search_next: -*** 2763,2768 **** ---- 2783,2795 ---- +*** 2770,2775 **** +--- 2791,2803 ---- mutt_what_key (); break; @@ -1731,16 +1843,8 @@ default: ch = -1; break; -*** mutt-1.5.21/PATCHES ---- mutt-1.5.21/PATCHES Wed Aug 29 18:22:48 2012 -*************** -*** 1,2 **** ---- 1,3 ---- -+ patch-1.5.21.sidebar.20120829.txt - patch-1.5.19.rr.compressed.1 - patch-1.5.5.1.nt.xtitles.3.ab.1 -*** mutt-1.5.21/pattern.c ---- mutt-1.5.21/pattern.c Wed Aug 29 17:10:31 2012 +*** mutt-1.5.23/pattern.c +--- mutt-1.5.23/pattern.c Fri Apr 11 15:14:01 2014 *************** msg_search (CONTEXT *ctx, pattern_t* pat *** 154,159 **** --- 154,163 ---- @@ -1837,8 +1941,8 @@ } } -*** mutt-1.5.21/protos.h ---- mutt-1.5.21/protos.h Wed Aug 29 17:09:02 2012 +*** mutt-1.5.23/protos.h +--- mutt-1.5.23/protos.h Fri Apr 11 15:14:01 2014 *************** struct hdr_format_info *** 36,41 **** --- 36,48 ---- @@ -1855,8 +1959,8 @@ void mutt_make_string_info (char *, size_t, const char *, struct hdr_format_info *, format_flag); int mutt_extract_token (BUFFER *, BUFFER *, int); -*** mutt-1.5.21/sidebar.c ---- mutt-1.5.21/sidebar.c Wed Aug 29 17:16:48 2012 +*** mutt-1.5.23/sidebar.c +--- mutt-1.5.23/sidebar.c Fri Apr 11 15:14:01 2014 *************** *** 0 **** --- 1,405 ---- @@ -2172,11 +2276,11 @@ + /* calculate depth of current folder and generate its display name with indented spaces */ + int sidebar_folder_depth = 0; + char *sidebar_folder_name; -+ sidebar_folder_name = mutt_basename(tmp->path); ++ sidebar_folder_name = option(OPTSIDEBARSHORTPATH) ? mutt_basename(tmp->path) : tmp->path + maildir_is_prefix*(strlen(Maildir) + 1); + if ( maildir_is_prefix && option(OPTSIDEBARFOLDERINDENT) ) { + char *tmp_folder_name; + int i; -+ tmp_folder_name = tmp->path + strlen(Maildir); ++ tmp_folder_name = tmp->path + strlen(Maildir) + 1; + for (i = 0; i < strlen(tmp->path) - strlen(Maildir); i++) { + if (tmp_folder_name[i] == '/' || tmp_folder_name[i] == '.') sidebar_folder_depth++; + } @@ -2184,17 +2288,17 @@ + if (option(OPTSIDEBARSHORTPATH)) { + tmp_folder_name = strrchr(tmp->path, '.'); + if (tmp_folder_name == NULL) -+ tmp_folder_name = tmp->path; ++ tmp_folder_name = mutt_basename(tmp->path); + else + tmp_folder_name++; + } + else -+ tmp_folder_name = tmp->path; -+ sidebar_folder_name = malloc(strlen(basename(tmp_folder_name)) + sidebar_folder_depth + 1); ++ tmp_folder_name = tmp->path + strlen(Maildir) + 1; ++ sidebar_folder_name = malloc(strlen(tmp_folder_name) + sidebar_folder_depth*strlen(NONULL(SidebarIndentStr)) + 1); ++ sidebar_folder_name[0]=0; + for (i=0; i < sidebar_folder_depth; i++) -+ sidebar_folder_name[i]=' '; -+ sidebar_folder_name[i]=0; -+ strncat(sidebar_folder_name, mutt_basename(tmp_folder_name), strlen(mutt_basename(tmp_folder_name)) + sidebar_folder_depth); ++ strncat(sidebar_folder_name, NONULL(SidebarIndentStr), strlen(NONULL(SidebarIndentStr))); ++ strncat(sidebar_folder_name, tmp_folder_name, strlen(tmp_folder_name)); + } + } + printw( "%.*s", SidebarWidth - delim_len + 1, @@ -2265,8 +2369,8 @@ + draw_sidebar(menu); + } + -*** mutt-1.5.21/sidebar.h ---- mutt-1.5.21/sidebar.h Wed Aug 29 16:25:04 2012 +*** mutt-1.5.23/sidebar.h +--- mutt-1.5.23/sidebar.h Fri Apr 11 15:14:01 2014 *************** *** 0 **** --- 1,36 ---- @@ -2306,71 +2410,3 @@ + void set_buffystats(CONTEXT*); + + #endif /* SIDEBAR_H */ -*** mutt-1.5.21/doc/Muttrc ---- mutt-1.5.21/doc/Muttrc Wed Aug 29 16:25:04 2012 -*************** set check_mbox_size=yes -*** 662,667 **** ---- 662,687 ---- - # $crypt_autosign, $crypt_replysign and $smime_is_default. - # - # -+ # set sidebar_visible=no -+ # -+ # Name: sidebar_visible -+ # Type: boolean -+ # Default: no -+ # -+ # -+ # This specifies whether or not to show sidebar (left-side list of folders). -+ # -+ # -+ # set sidebar_width=0 -+ # -+ # Name: sidebar_width -+ # Type: number -+ # Default: 0 -+ # -+ # -+ # The width of the sidebar. -+ # -+ # - # set crypt_autosign=no - # - # Name: crypt_autosign -*** mutt-1.5.21/imap/imap.c ---- mutt-1.5.21/imap/imap.c Wed Aug 29 16:25:04 2012 -*************** int imap_buffy_check (int force) -*** 1521,1527 **** - - imap_munge_mbox_name (munged, sizeof (munged), name); - snprintf (command, sizeof (command), -! "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)", munged); - - if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0) - { ---- 1521,1527 ---- - - imap_munge_mbox_name (munged, sizeof (munged), name); - snprintf (command, sizeof (command), -! "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)", munged); - - if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0) - { -*** mutt-1.5.21/imap/command.c ---- mutt-1.5.21/imap/command.c Wed Aug 29 16:25:04 2012 -*************** static void cmd_parse_status (IMAP_DATA* -*** 1011,1016 **** ---- 1011,1023 ---- - opened */ - status->uidnext = oldun; - -+ /* Added to make the sidebar show the correct numbers */ -+ if (status->messages) -+ { -+ inc->msgcount = status->messages; -+ inc->msg_unread = status->unseen; -+ } -+ - FREE (&value); - return; - } diff --git a/patch-1.5.5.1.nt.xtitles.3.ab.1 b/patch-1.5.23.xtitles.patch similarity index 54% rename from patch-1.5.5.1.nt.xtitles.3.ab.1 rename to patch-1.5.23.xtitles.patch index 35fe4e4..df64beb 100644 --- a/patch-1.5.5.1.nt.xtitles.3.ab.1 +++ b/patch-1.5.23.xtitles.patch @@ -1,21 +1,42 @@ -Index: mutt-1.5.20/PATCHES -=================================================================== ---- mutt-1.5.20.orig/PATCHES -+++ mutt-1.5.20/PATCHES -@@ -1 +1,2 @@ - patch-1.5.19.rr.compressed.1 -+patch-1.5.5.1.nt.xtitles.3.ab.1 -Index: mutt-1.5.20/curs_main.c -=================================================================== ---- mutt-1.5.20.orig/curs_main.c -+++ mutt-1.5.20/curs_main.c -@@ -110,6 +110,19 @@ static const char *No_visible = N_("No v +From: Cristoph Berg +Date: Thu, 27 Feb 2014 12:25:51 +0100 +Subject: xtitles + +This is the xterm title patch as found on the mutt mailing lists. + +* Changes made: + - 2007-01-27 myon: using %P caused a segfault, updated status.c to catch + menu==NULL. + - 2007-02-20 myon: make the note about the xterm_set_titles defaults a + comment. + - 2008-08-02 myon: move set_xterm_* prototypes into the proper header file + (cleaner code, no functional change, evades conflict with sidebar patch) + +Signed-off-by: Matteo F. Vescovi + +Gbp-Pq: Topic features +--- + curs_main.c | 20 ++++++++++++++++++++ + globals.h | 2 ++ + init.c | 20 ++++++++++++++++++++ + init.h | 21 +++++++++++++++++++++ + mutt.h | 1 + + mutt_menu.h | 2 ++ + pager.c | 7 +++++++ + status.c | 2 ++ + 8 files changed, 75 insertions(+) + +diff --git a/curs_main.c b/curs_main.c +index aa4b044..16ddbc9 100644 +--- a/curs_main.c ++++ b/curs_main.c +@@ -110,6 +110,19 @@ static const char *No_visible = N_("No visible messages."); extern size_t UngetCount; +#define ASCII_CTRL_G 0x07 +#define ASCII_CTRL_OPEN_SQUARE_BRAKET 0x1b -+ ++ +void set_xterm_title_bar(char *title) +{ + fprintf(stderr ,"%c]2;%s%c", ASCII_CTRL_OPEN_SQUARE_BRAKET, title, ASCII_CTRL_G); @@ -29,9 +50,9 @@ Index: mutt-1.5.20/curs_main.c void index_make_entry (char *s, size_t l, MUTTMENU *menu, int num) { format_flag flag = M_FORMAT_MAKEPRINT | M_FORMAT_ARROWCURSOR | M_FORMAT_INDEX; -@@ -566,6 +579,13 @@ int mutt_index_menu (void) - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); +@@ -560,6 +573,13 @@ int mutt_index_menu (void) + mutt_paddstr (COLS, buf); + NORMAL_COLOR; menu->redraw &= ~REDRAW_STATUS; + if (option(OPTXTERMSETTITLES)) + { @@ -43,10 +64,10 @@ Index: mutt-1.5.20/curs_main.c } menu->redraw = 0; -Index: mutt-1.5.20/globals.h -=================================================================== ---- mutt-1.5.20.orig/globals.h -+++ mutt-1.5.20/globals.h +diff --git a/globals.h b/globals.h +index 6fefe5b..584cd0c 100644 +--- a/globals.h ++++ b/globals.h @@ -141,6 +141,8 @@ WHERE char *Tempdir; WHERE char *Tochars; WHERE char *Username; @@ -56,11 +77,11 @@ Index: mutt-1.5.20/globals.h WHERE char *CurrentFolder; WHERE char *LastFolder; -Index: mutt-1.5.20/init.c -=================================================================== ---- mutt-1.5.20.orig/init.c -+++ mutt-1.5.20/init.c -@@ -1833,6 +1833,26 @@ static int parse_set (BUFFER *tmp, BUFFE +diff --git a/init.c b/init.c +index cc3cf4b..81bb9e7 100644 +--- a/init.c ++++ b/init.c +@@ -1877,6 +1877,26 @@ static int parse_set (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err) toggle_option (MuttVars[idx].data); else set_option (MuttVars[idx].data); @@ -87,11 +108,11 @@ Index: mutt-1.5.20/init.c } else if (myvar || DTYPE (MuttVars[idx].type) == DT_STR || DTYPE (MuttVars[idx].type) == DT_PATH || -Index: mutt-1.5.20/init.h -=================================================================== ---- mutt-1.5.20.orig/init.h -+++ mutt-1.5.20/init.h -@@ -3348,6 +3348,27 @@ struct option_t MuttVars[] = { +diff --git a/init.h b/init.h +index 80d05ce..cf8e75a 100644 +--- a/init.h ++++ b/init.h +@@ -3412,6 +3412,27 @@ struct option_t MuttVars[] = { ** Also see the $$read_inc, $$net_inc and $$time_inc variables and the ** ``$tuning'' section of the manual for performance considerations. */ @@ -103,11 +124,11 @@ Index: mutt-1.5.20/init.h + ** ``$$status_format''. + */ + {"xterm_set_titles", DT_BOOL, R_BOTH, OPTXTERMSETTITLES, 0}, ++ /* The default must be off to force in the validity checking. */ + /* + ** .pp + ** Controls whether mutt sets the xterm title bar and icon name -+ ** (as long as you're in an appropriate terminal). The default must -+ ** be off to force in the validity checking. ++ ** (as long as you are in an appropriate terminal). + */ + {"xterm_title", DT_STR, R_BOTH, UL &XtermTitle, UL "Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?"}, + /* @@ -119,11 +140,11 @@ Index: mutt-1.5.20/init.h /*--*/ { NULL, 0, 0, 0, 0 } }; -Index: mutt-1.5.20/mutt.h -=================================================================== ---- mutt-1.5.20.orig/mutt.h -+++ mutt-1.5.20/mutt.h -@@ -452,6 +452,7 @@ enum +diff --git a/mutt.h b/mutt.h +index dcd7dc5..1d7e177 100644 +--- a/mutt.h ++++ b/mutt.h +@@ -449,6 +449,7 @@ enum OPTWRAPSEARCH, OPTWRITEBCC, /* write out a bcc header? */ OPTXMAILER, @@ -131,14 +152,27 @@ Index: mutt-1.5.20/mutt.h OPTCRYPTUSEGPGME, OPTCRYPTUSEPKA, -Index: mutt-1.5.20/pager.c -=================================================================== ---- mutt-1.5.20.orig/pager.c -+++ mutt-1.5.20/pager.c -@@ -1784,6 +1784,13 @@ mutt_pager (const char *banner, const ch +diff --git a/mutt_menu.h b/mutt_menu.h +index d459bef..82abecd 100644 +--- a/mutt_menu.h ++++ b/mutt_menu.h +@@ -103,6 +103,8 @@ void menu_current_middle (MUTTMENU *); + void menu_current_bottom (MUTTMENU *); + void menu_check_recenter (MUTTMENU *); + void menu_status_line (char *, size_t, MUTTMENU *, const char *); ++void set_xterm_title_bar (char *title); ++void set_xterm_icon_name (char *name); + + MUTTMENU *mutt_new_menu (int); + void mutt_menuDestroy (MUTTMENU **); +diff --git a/pager.c b/pager.c +index 486d8c8..23eb8ca 100644 +--- a/pager.c ++++ b/pager.c +@@ -1812,6 +1812,13 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra) + mutt_paddstr (COLS, bn); } - BKGDSET (MT_COLOR_NORMAL); - SETCOLOR (MT_COLOR_NORMAL); + NORMAL_COLOR; + if (option(OPTXTERMSETTITLES)) + { + menu_status_line (buffer, sizeof (buffer), index, NONULL (XtermTitle)); @@ -149,15 +183,16 @@ Index: mutt-1.5.20/pager.c } if ((redraw & REDRAW_INDEX) && index) -Index: mutt-1.5.20/mutt_menu.h -=================================================================== ---- mutt-1.5.20.orig/mutt_menu.h -+++ mutt-1.5.20/mutt_menu.h -@@ -112,4 +112,7 @@ int mutt_menuLoop (MUTTMENU *); - void index_make_entry (char *, size_t, struct menu_t *, int); - int index_color (int); +diff --git a/status.c b/status.c +index 1bb9a5a..6051e3a 100644 +--- a/status.c ++++ b/status.c +@@ -195,6 +195,8 @@ status_format_str (char *buf, size_t buflen, size_t col, char op, const char *sr + break; -+void set_xterm_title_bar(char *); -+void set_xterm_icon_name(char *); -+ - #endif /* _MUTT_MENU_H_ */ + case 'P': ++ if (!menu) ++ break; + if (menu->top + menu->pagelen >= menu->max) + cp = menu->top ? "end" : "all"; + else