diff --git a/COLS-workaround.dif b/COLS-workaround.dif deleted file mode 100644 index db9eabc..0000000 --- a/COLS-workaround.dif +++ /dev/null @@ -1,37 +0,0 @@ -Use professionel VLINE - ---- - sidebar.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - ---- sidebar.c -+++ sidebar.c 2016-09-13 10:03:50.282864137 +0000 -@@ -579,6 +579,7 @@ static int draw_divider (int first_row, - { - /* Calculate the width of the delimiter in screen cells */ - int delim_len = mutt_strwidth (SidebarDividerChar); -+ int altchar = 0; - - if (delim_len < 1) - return delim_len; -@@ -589,13 +590,19 @@ static int draw_divider (int first_row, - if (delim_len > SidebarWidth) - return -1; - -+ if (delim_len == 1 && strcmp(SidebarDividerChar, "|") == 0) -+ altchar++; -+ - SETCOLOR(MT_COLOR_DIVIDER); - - int i; - for (i = 0; i < num_rows; i++) - { - move (first_row + i, SidebarWidth - delim_len); -- addstr (NONULL(SidebarDividerChar)); -+ if (altchar) -+ addch (ACS_VLINE); -+ else -+ addstr (NONULL(SidebarDividerChar)); - } - - return delim_len; diff --git a/aw.listreply.diff b/aw.listreply.diff index 3c638ed..6d337f0 100644 --- a/aw.listreply.diff +++ b/aw.listreply.diff @@ -8,49 +8,49 @@ ask when sending list message replies to author only - Armin Wolfermann (aw) 4 files changed, 27 insertions(+) --- PATCHES -+++ PATCHES 2016-09-13 10:01:22.837626357 +0000 ++++ PATCHES 2017-04-28 13:20:07.709043569 +0000 @@ -1,3 +1,4 @@ +patch-1.5.9.aw.listreply.1 - patch-compress-neo-git - patch-cond-date-neo-git - patch-fmemopen-neo-git + patch-attach-headers-color-neomutt + patch-compose-to-sender-neomutt + patch-compress-neomutt --- init.h -+++ init.h 2016-09-13 10:00:49.794245364 +0000 -@@ -1501,6 +1501,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. ++++ init.h 2017-04-28 13:20:58.292077398 +0000 +@@ -1581,6 +1581,13 @@ struct option_t MuttVars[] = { + ** ``$$keywords_standard'' are \fCfalse\fP, mutt will save keywords + ** to legacy headers to ensure that it does not lose your labels. */ -+ { "list_reply", DT_QUAD, R_NONE, OPT_LISTREPLY, M_NO }, ++ { "list_reply", DT_QUAD, R_NONE, OPT_LISTREPLY, MUTT_NO }, + /* + ** .pp + ** When set, address replies to the mailing list the original message came + ** from (instead to the author only). Setting this option to ``ask-yes'' or + ** ``ask-no'' will ask if you really intended to reply to the author only. + */ - { "mail_check", DT_NUM, R_NONE, UL &BuffyTimeout, 5 }, + { "mail_check", DT_NUM, R_NONE, UL &BuffyTimeout, 5 }, /* ** .pp --- mutt.h -+++ mutt.h 2016-09-13 10:00:49.794245364 +0000 -@@ -315,6 +315,7 @@ enum ++++ mutt.h 2017-04-28 13:21:29.103488852 +0000 +@@ -299,6 +299,7 @@ enum #endif OPT_SUBJECT, - OPT_VERIFYSIG, /* verify PGP signatures */ + OPT_VERIFYSIG, /* verify PGP signatures */ + OPT_LISTREPLY, #ifdef USE_NNTP OPT_TOMODERATED, OPT_CATCHUP, --- send.c -+++ send.c 2016-09-13 10:00:49.794245364 +0000 -@@ -516,6 +516,7 @@ static int include_reply (CONTEXT *ctx, - static int default_to (ADDRESS **to, ENVELOPE *env, int flags, int hmfupto) ++++ send.c 2017-04-28 13:22:41.410113734 +0000 +@@ -498,6 +498,7 @@ static int include_reply(CONTEXT *ctx, H + static int default_to(ADDRESS **to, ENVELOPE *env, int flags, int hmfupto) { char prompt[STRING]; + ADDRESS *tmp; - if (flags && env->mail_followup_to && hmfupto == M_YES) + if (flags && env->mail_followup_to && hmfupto == MUTT_YES) { -@@ -529,6 +530,23 @@ static int default_to (ADDRESS **to, ENV +@@ -511,6 +512,23 @@ static int default_to(ADDRESS **to, ENVE if (flags & SENDLISTREPLY) return 0; @@ -61,7 +61,7 @@ ask when sending list message replies to author only - Armin Wolfermann (aw) + switch (query_quadoption (OPT_LISTREPLY, + _("Message came from a mailing list. Reply to author only?"))) + { -+ case M_NO: ++ case MUTT_NO: + tmp = find_mailing_lists (env->to, env->cc); + rfc822_append (to, tmp, 0); + rfc822_free_address (&tmp); @@ -71,6 +71,6 @@ ask when sending list message replies to author only - Armin Wolfermann (aw) + } + } + - if (!option(OPTREPLYSELF) && mutt_addr_is_user (env->from)) + if (!option(OPTREPLYSELF) && mutt_addr_is_user(env->from)) { /* mail is from the user, assume replying to recipients */ diff --git a/bsc907453-CVE-2014-9116-jessie.patch b/bsc907453-CVE-2014-9116-jessie.patch index 2339380..e11d439 100644 --- a/bsc907453-CVE-2014-9116-jessie.patch +++ b/bsc907453-CVE-2014-9116-jessie.patch @@ -17,10 +17,10 @@ Index: mutt/lib.c 1 file changed, 3 insertions(+) --- lib.c -+++ lib.c 2015-01-26 00:00:00.000000000 +0000 -@@ -824,6 +824,9 @@ char *mutt_substrdup (const char *begin, ++++ lib.c 2017-04-28 13:46:19.479130332 +0000 +@@ -825,6 +825,9 @@ char *mutt_substrdup(const char *begin, size_t len; - char *p; + char *p = NULL; + if (end != NULL && end < begin) + return NULL; diff --git a/bug-676388-largefile.patch b/bug-676388-largefile.patch index 61b7377..13086e0 100644 --- a/bug-676388-largefile.patch +++ b/bug-676388-largefile.patch @@ -1,23 +1,23 @@ --- - crypt-gpgme.c | 2 +- + crypt_gpgme.c | 2 +- mh.c | 6 +++--- mutt.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) ---- crypt-gpgme.c -+++ crypt-gpgme.c 2016-09-13 10:00:08.959010324 +0000 -@@ -496,7 +496,7 @@ static gpgme_data_t body_to_data_object +--- crypt_gpgme.c ++++ crypt_gpgme.c 2017-04-28 13:17:28.120091455 +0000 +@@ -485,7 +485,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. */ --static gpgme_data_t file_to_data_object (FILE *fp, long offset, long length) -+static gpgme_data_t file_to_data_object (FILE *fp, LOFF_T offset, long length) +-static gpgme_data_t file_to_data_object(FILE *fp, long offset, long length) ++static gpgme_data_t file_to_data_object(FILE *fp, LOFF_T offset, long length) { int err = 0; gpgme_data_t data; --- mh.c -+++ mh.c 2016-09-13 10:00:08.959010324 +0000 -@@ -1625,9 +1625,9 @@ static int mh_rewrite_message (CONTEXT * ++++ mh.c 2017-04-28 13:18:03.683412304 +0000 +@@ -1735,9 +1735,9 @@ static int mh_rewrite_message(CONTEXT *c char newpath[_POSIX_PATH_MAX]; char partpath[_POSIX_PATH_MAX]; @@ -28,16 +28,16 @@ + LOFF_T old_body_length = h->content->length; + LOFF_T old_hdr_lines = h->lines; - if ((dest = mx_open_new_message (ctx, h, 0)) == NULL) + if ((dest = mx_open_new_message(ctx, h, 0)) == NULL) return -1; --- mutt.h -+++ mutt.h 2016-09-13 10:00:08.959010324 +0000 -@@ -731,7 +731,7 @@ typedef struct body - PARAMETER *parameter; /* parameters of the content-type */ - char *description; /* content-description */ - char *form_name; /* Content-Disposition form-data name param */ -- long hdr_offset; /* offset in stream where the headers begin. -+ LOFF_T hdr_offset; /* offset in stream where the headers begin. - * this info is used when invoking metamail, - * where we need to send the headers of the - * attachment ++++ mutt.h 2017-04-28 13:18:35.438805848 +0000 +@@ -738,7 +738,7 @@ typedef struct body + PARAMETER *parameter; /* parameters of the content-type */ + char *description; /* content-description */ + char *form_name; /* Content-Disposition form-data name param */ +- long hdr_offset; /* offset in stream where the headers begin. ++ LOFF_T hdr_offset; /* offset in stream where the headers begin. + * this info is used when invoking metamail, + * where we need to send the headers of the + * attachment diff --git a/mutt-1.5.15-wrapcolumn.diff b/mutt-1.5.15-wrapcolumn.diff index 36c7d79..068842f 100644 --- a/mutt-1.5.15-wrapcolumn.diff +++ b/mutt-1.5.15-wrapcolumn.diff @@ -5,8 +5,8 @@ Index: init.h 1 file changed, 2 insertions(+), 1 deletion(-) --- init.h -+++ init.h 2016-09-13 09:58:52.548441749 +0000 -@@ -4047,7 +4047,8 @@ struct option_t MuttVars[] = { ++++ init.h 2017-04-28 12:56:30.912131384 +0000 +@@ -4224,7 +4224,8 @@ struct option_t MuttVars[] = { ** When \fIset\fP, mutt will weed headers when displaying, forwarding, ** printing, or replying to messages. */ diff --git a/mutt-1.5.20-sendgroupreplyto.diff b/mutt-1.5.20-sendgroupreplyto.diff index 94802e8..df301de 100644 --- a/mutt-1.5.20-sendgroupreplyto.diff +++ b/mutt-1.5.20-sendgroupreplyto.diff @@ -1,28 +1,28 @@ --- init.h | 7 +++++++ mutt.h | 1 + - send.c | 8 ++++++++ - 3 files changed, 16 insertions(+) + send.c | 12 ++++++++++-- + 3 files changed, 18 insertions(+), 2 deletions(-) --- init.h -+++ init.h 2016-09-13 09:58:08.893259601 +0000 -@@ -2885,6 +2885,13 @@ struct option_t MuttVars[] = { ++++ init.h 2017-04-28 12:50:23.915168252 +0000 +@@ -3011,6 +3011,13 @@ struct option_t MuttVars[] = { ** .pp ** Also see the $$force_name variable. */ -+ { "send_group_reply_to", DT_BOOL, R_NONE, OPTSENDGROUPREPLYTO, 0 }, ++ { "send_group_reply_to", DT_BOOL, R_NONE, OPTSENDGROUPREPLYTO, 0 }, + /* + ** .pp + ** This variable controls how group replies are done. + ** When set, all recepients listet in "To:" are set in the + ** "To:" header again, else in the "CC", which is the default. + */ - { "score", DT_BOOL, R_NONE, OPTSCORE, 1 }, + { "score", DT_BOOL, R_NONE, OPTSCORE, 1 }, /* ** .pp --- mutt.h -+++ mutt.h 2016-09-13 09:58:08.893259601 +0000 -@@ -483,6 +483,7 @@ enum ++++ mutt.h 2017-04-28 12:47:19.222709344 +0000 +@@ -474,6 +474,7 @@ enum OPTSAVEADDRESS, OPTSAVEEMPTY, OPTSAVENAME, @@ -31,20 +31,22 @@ #ifdef USE_SIDEBAR OPTSIDEBAR, --- send.c -+++ send.c 2016-09-13 09:58:08.893259601 +0000 -@@ -624,8 +624,16 @@ int mutt_fetch_recips (ENVELOPE *out, EN - if ((flags & SENDGROUPREPLY) && (!in->mail_followup_to || hmfupto != M_YES)) ++++ send.c 2017-04-28 12:55:18.981510643 +0000 +@@ -603,8 +603,16 @@ int mutt_fetch_recips(ENVELOPE *out, ENV + if ((flags & SENDGROUPREPLY) && (!in->mail_followup_to || hmfupto != MUTT_YES)) { /* if(!mutt_addr_is_user(in->to)) */ +- rfc822_append(&out->cc, in->to, 1); +- rfc822_append(&out->cc, in->cc, 1); + if (option (OPTSENDGROUPREPLYTO)) + { -+ rfc822_append (&out->to, in->to, 0); -+ rfc822_append (&out->cc, in->cc, 1); -+ } ++ rfc822_append(&out->to, in->to, 0); ++ rfc822_append(&out->cc, in->cc, 1); ++ } + else + { - rfc822_append (&out->cc, in->to, 1); - rfc822_append (&out->cc, in->cc, 1); ++ rfc822_append(&out->cc, in->to, 1); ++ rfc822_append(&out->cc, in->cc, 1); + } } } diff --git a/mutt-1.5.21-mailcap.diff b/mutt-1.5.21-mailcap.diff index 9720fa2..f6da3a7 100644 --- a/mutt-1.5.21-mailcap.diff +++ b/mutt-1.5.21-mailcap.diff @@ -4,19 +4,18 @@ text/html Index: mutt-1.5.21/init.c =================================================================== --- - init.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + init.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) --- init.c -+++ init.c 2016-07-26 12:03:14.963958298 +0000 -@@ -3330,8 +3330,8 @@ void mutt_init (int skip_sys_rc, LIST *c - MailcapPath = safe_strdup (p); - else - { -- /* Default search path from RFC1524 */ -- MailcapPath = safe_strdup ("~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR "/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap"); -+ /* Default search path from RFC1524 plus fallback for mutt specific defaults */ -+ MailcapPath = safe_strdup ("~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR "/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap:" SYSCONFDIR "/mutt/mailcap"); ++++ init.c 2017-04-28 13:44:54.680745977 +0000 +@@ -3935,7 +3935,8 @@ void mutt_init(int skip_sys_rc, LIST *co + /* Default search path from RFC1524 */ + MailcapPath = safe_strdup( + "~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR +- "/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap"); ++ "/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap" ++ SYSCONFDIR "/mutt/mailcap"); } - Tempdir = safe_strdup ((p = getenv ("TMPDIR")) ? p : "/tmp"); + Tempdir = safe_strdup((p = getenv("TMPDIR")) ? p : "/tmp"); diff --git a/mutt-1.5.23-carriage-return.path b/mutt-1.5.23-carriage-return.path index fe6ee13..e0571fc 100644 --- a/mutt-1.5.23-carriage-return.path +++ b/mutt-1.5.23-carriage-return.path @@ -1,24 +1,24 @@ --- - crypt-gpgme.c | 2 +- + crypt_gpgme.c | 2 +- lib.c | 12 ++++++++++++ lib.h | 1 + pager.c | 2 +- pgp.c | 24 ++++++++++++------------ 5 files changed, 27 insertions(+), 14 deletions(-) ---- crypt-gpgme.c -+++ crypt-gpgme.c 2016-11-23 10:06:56.163851435 +0000 -@@ -2313,7 +2313,7 @@ static void copy_clearsigned (gpgme_data - +--- crypt_gpgme.c ++++ crypt_gpgme.c 2017-04-28 13:37:50.216829516 +0000 +@@ -2301,7 +2301,7 @@ static void copy_clearsigned(gpgme_data_ + if (armor_header) { -- if (buf[0] == '\n') +- if (buf[0] == '\n') + if (buf[0] == '\n' || (buf[0] == '\r' && buf[1] == '\n')) - armor_header = 0; + armor_header = 0; continue; } --- lib.c -+++ lib.c 2013-05-29 09:31:53.000000000 +0000 ++++ lib.c 2017-04-28 13:36:40.198162342 +0000 @@ -880,6 +880,18 @@ int mutt_strcmp(const char *a, const cha return strcmp(NONULL(a), NONULL(b)); } @@ -39,93 +39,92 @@ { return strcasecmp(NONULL(a), NONULL(b)); --- lib.h -+++ 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 *); -+int mutt_strxcmp (const char *, const char *); - int mutt_strncasecmp (const char *, const char *, size_t); - int mutt_strncmp (const char *, const char *, size_t); - int mutt_strcoll (const char *, const char *); ++++ lib.h 2017-04-28 13:38:18.944282628 +0000 +@@ -168,6 +168,7 @@ int mutt_copy_bytes(FILE *, FILE *, size + int mutt_rx_sanitize_string(char *, size_t, const char *); + int mutt_strcasecmp(const char *, const char *); + int mutt_strcmp(const char *, const char *); ++int mutt_strxcmp(const char *, const char *); + int mutt_strncasecmp(const char *, const char *, size_t); + 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.000000000 +0000 -@@ -774,7 +774,7 @@ resolve_types (char *buf, char *raw, str - else if (check_attachment_marker ((char *) raw) == 0) ++++ pager.c 2017-04-28 13:39:16.319190287 +0000 +@@ -773,7 +773,7 @@ static void resolve_types(char *buf, cha + lineInfo[n].type = MT_COLOR_NORMAL; + else if (check_attachment_marker((char *) raw) == 0) lineInfo[n].type = MT_COLOR_ATTACHMENT; - #endif -- else if (mutt_strcmp ("-- \n", buf) == 0 || mutt_strcmp ("-- \r\n", buf) == 0) -+ else if (mutt_strxcmp ("-- \n", buf) == 0) +- else if ((mutt_strcmp("-- \n", buf) == 0) || (mutt_strcmp("-- \r\n", buf) == 0)) ++ else if (mutt_strxcmp("-- \n", buf) == 0) { i = n + 1; --- pgp.c -+++ pgp.c 2015-01-26 15:48:02.361518080 +0000 -@@ -302,7 +302,7 @@ static void pgp_copy_clearsigned (FILE * ++++ pgp.c 2017-04-28 13:40:43.301534032 +0000 +@@ -282,7 +282,7 @@ static void pgp_copy_clearsigned(FILE *f continue; } -- if (mutt_strcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) -+ if (mutt_strxcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) +- if (mutt_strcmp(buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) ++ if (mutt_strxcmp(buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) break; - + if (armor_header) -@@ -368,14 +368,14 @@ int pgp_application_pgp_handler (BODY *m +@@ -347,14 +347,14 @@ int pgp_application_pgp_handler(BODY *m, { clearsign = 0; -- if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0) -+ if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0) +- if (mutt_strcmp("MESSAGE-----\n", buf + 15) == 0) ++ if (mutt_strxcmp("MESSAGE-----\n", buf + 15) == 0) needpass = 1; -- else if (mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) -+ else if (mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) +- else if (mutt_strcmp("SIGNED MESSAGE-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp("SIGNED MESSAGE-----\n", buf + 15) == 0) { - clearsign = 1; + clearsign = 1; needpass = 0; } -- else if (!mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15)) -+ else if (!mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15)) +- else if (mutt_strcmp("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) { needpass = 0; pgp_keyblock = 1; -@@ -408,10 +408,10 @@ int pgp_application_pgp_handler (BODY *m - - fputs (buf, tmpfp); +@@ -388,9 +388,9 @@ int pgp_application_pgp_handler(BODY *m, -- if ((needpass && mutt_strcmp ("-----END PGP MESSAGE-----\n", buf) == 0) || -+ if ((needpass && mutt_strxcmp ("-----END PGP MESSAGE-----\n", buf) == 0) || - (!needpass -- && (mutt_strcmp ("-----END PGP SIGNATURE-----\n", buf) == 0 -- || mutt_strcmp ("-----END PGP PUBLIC KEY BLOCK-----\n",buf) == 0))) -+ && (mutt_strxcmp ("-----END PGP SIGNATURE-----\n", buf) == 0 -+ || mutt_strxcmp ("-----END PGP PUBLIC KEY BLOCK-----\n",buf) == 0))) - break; - /* remember optional Charset: armor header as defined by RfC4880 */ - if (mutt_strncmp ("Charset: ", buf, 9) == 0) -@@ -645,11 +645,11 @@ static int pgp_check_traditional_one_bod + fputs(buf, tmpfp); + +- if ((needpass && (mutt_strcmp("-----END PGP MESSAGE-----\n", buf) == 0)) || +- (!needpass && ((mutt_strcmp("-----END PGP SIGNATURE-----\n", buf) == 0) || +- (mutt_strcmp("-----END PGP PUBLIC KEY BLOCK-----\n", buf) == 0)))) ++ if ((needpass && (mutt_strxcmp("-----END PGP MESSAGE-----\n", buf) == 0)) || ++ (!needpass && ((mutt_strxcmp("-----END PGP SIGNATURE-----\n", buf) == 0) || ++ (mutt_strxcmp("-----END PGP PUBLIC KEY BLOCK-----\n", buf) == 0)))) + break; + /* remember optional Charset: armor header as defined by RfC4880 */ + if (mutt_strncmp("Charset: ", buf, 9) == 0) +@@ -631,11 +631,11 @@ static int pgp_check_traditional_one_bod { - if (mutt_strncmp ("-----BEGIN PGP ", buf, 15) == 0) + if (mutt_strncmp("-----BEGIN PGP ", buf, 15) == 0) { -- if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0) -+ if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0) - enc = 1; -- else if (mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) -+ else if (mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) - sgn = 1; -- else if (mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) -+ else if (mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) - key = 1; +- if (mutt_strcmp("MESSAGE-----\n", buf + 15) == 0) ++ if (mutt_strxcmp("MESSAGE-----\n", buf + 15) == 0) + enc = 1; +- else if (mutt_strcmp("SIGNED MESSAGE-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp("SIGNED MESSAGE-----\n", buf + 15) == 0) + sgn = 1; +- else if (mutt_strcmp("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) + key = 1; } } -@@ -1197,9 +1197,9 @@ BODY *pgp_sign_message (BODY *a) +@@ -1120,9 +1120,9 @@ BODY *pgp_sign_message(BODY *a) */ - while (fgets (buffer, sizeof (buffer) - 1, pgpout) != NULL) + while (fgets(buffer, sizeof(buffer) - 1, pgpout) != NULL) { -- if (mutt_strcmp ("-----BEGIN PGP MESSAGE-----\n", buffer) == 0) -+ if (mutt_strxcmp ("-----BEGIN PGP MESSAGE-----\n", buffer) == 0) - fputs ("-----BEGIN PGP SIGNATURE-----\n", fp); +- if (mutt_strcmp("-----BEGIN PGP MESSAGE-----\n", buffer) == 0) ++ if (mutt_strxcmp("-----BEGIN PGP MESSAGE-----\n", buffer) == 0) + fputs("-----BEGIN PGP SIGNATURE-----\n", fp); - else if (mutt_strcmp("-----END PGP MESSAGE-----\n", buffer) == 0) + else if (mutt_strxcmp("-----END PGP MESSAGE-----\n", buffer) == 0) - fputs ("-----END PGP SIGNATURE-----\n", fp); + fputs("-----END PGP SIGNATURE-----\n", fp); else - fputs (buffer, fp); + fputs(buffer, fp); diff --git a/mutt-1.5.9i-pgpewrap.diff b/mutt-1.5.9i-pgpewrap.diff index e5a3df5..0610cf8 100644 --- a/mutt-1.5.9i-pgpewrap.diff +++ b/mutt-1.5.9i-pgpewrap.diff @@ -1,17 +1,19 @@ --- - pgpewrap.c | 4 ++++ - 1 file changed, 4 insertions(+) + pgpewrap.c | 6 ++++++ + 1 file changed, 6 insertions(+) --- pgpewrap.c -+++ pgpewrap.c 2016-05-12 11:48:02.259503685 +0000 -@@ -58,6 +58,10 @@ int main(int argc, char **argv) { - } - *opt = NULL; ++++ pgpewrap.c 2017-04-28 12:46:25.911731441 +0000 +@@ -61,6 +61,12 @@ int main(int argc, char **argv) + } + *opt = NULL; -+ if (opts[0] == NULL) { -+ fprintf(stderr, "Command line usage: %s [flags] -- prefix [recipients]\n", argv[0]); -+ return 1; -+ } - execvp(opts[0], opts); - perror(argv[0]); - return 2; ++ if (opts[0] == NULL) ++ { ++ fprintf(stderr, "Command line usage: %s [flags] -- prefix [recipients]\n", argv[0]); ++ return 1; ++ } ++ + execvp(opts[0], opts); + perror(argv[0]); + return 2; diff --git a/mutt-1.6.1-opennfs.dif b/mutt-1.6.1-opennfs.dif index 3ebd44c..cec9abc 100644 --- a/mutt-1.6.1-opennfs.dif +++ b/mutt-1.6.1-opennfs.dif @@ -1,108 +1,44 @@ --- Makefile.am | 4 - - Makefile.in | 6 +- - lib.c | 15 ++++--- - mbox.c | 2 + lib.c | 7 ++- + mbox.c | 5 ++ mh.c | 9 +++- - mutt.h | 1 + mutt.h | 5 +- opennfs.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - sendlib.c | 2 - 8 files changed, 148 insertions(+), 13 deletions(-) + sendlib.c | 4 + + 7 files changed, 151 insertions(+), 5 deletions(-) --- Makefile.am -+++ Makefile.am 2016-09-13 09:59:28.591766504 +0000 -@@ -28,7 +28,7 @@ mutt_SOURCES = \ - edit.c enter.c flags.c init.c filter.c from.c \ - getdomain.c group.c \ - handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c \ -- main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c \ -+ main.c mbox.c menu.c mh.c mx.c opennfs.c pager.c parse.c pattern.c \ - postpone.c query.c recvattach.c recvcmd.c \ - rfc822.c rfc1524.c rfc2047.c rfc2231.c rfc3676.c \ - score.c send.c sendlib.c signal.c sort.c \ -@@ -93,7 +93,7 @@ mutt_dotlock_SOURCES = mutt_dotlock.c ++++ Makefile.am 2017-04-28 13:01:24.850494937 +0000 +@@ -43,7 +43,7 @@ mutt_SOURCES = addrbook.c alias.c ascii. + date.c edit.c editmsg.c enter.c filter.c flags.c from.c getdomain.c \ + group.c handler.c hash.c hdrline.c headers.c help.c history.c hook.c \ + init.c keymap.c lib.c main.c mbox.c mbyte.c menu.c mh.c muttlib.c \ +- mutt_idna.c mutt_sasl_plain.c mx.c pager.c parse.c pattern.c \ ++ mutt_idna.c mutt_sasl_plain.c mx.c opennfs.c pager.c parse.c pattern.c \ + postpone.c query.c recvattach.c recvcmd.c rfc1524.c rfc2047.c \ + rfc2231.c rfc3676.c rfc822.c safe_asprintf.c score.c send.c sendlib.c \ + signal.c sort.c status.c system.c thread.c url.c version.c +@@ -99,7 +99,7 @@ mutt_dotlock_SOURCES = mutt_dotlock.c mutt_dotlock_LDADD = $(LIBOBJS) mutt_dotlock_DEPENDENCIES = $(LIBOBJS) --pgpring_SOURCES = pgppubring.c pgplib.c lib.c extlib.c sha1.c md5.c pgppacket.c ascii.c -+pgpring_SOURCES = pgppubring.c pgplib.c lib.c extlib.c sha1.c opennfs.c md5.c pgppacket.c ascii.c +-pgpring_SOURCES = ascii.c extlib.c lib.c md5.c pgplib.c pgppacket.c \ ++pgpring_SOURCES = ascii.c extlib.c lib.c opennfs.c md5.c pgplib.c pgppacket.c \ + pgppubring.c sha1.c pgpring_LDADD = $(LIBOBJS) $(INTLLIBS) pgpring_DEPENDENCIES = $(LIBOBJS) $(INTLDEPS) - ---- Makefile.in -+++ Makefile.in 2016-09-13 09:59:28.591766504 +0000 -@@ -125,7 +125,7 @@ am_mutt_OBJECTS = addrbook.$(OBJEXT) ali - hash.$(OBJEXT) hdrline.$(OBJEXT) headers.$(OBJEXT) \ - help.$(OBJEXT) hook.$(OBJEXT) keymap.$(OBJEXT) main.$(OBJEXT) \ - mbox.$(OBJEXT) menu.$(OBJEXT) mh.$(OBJEXT) mx.$(OBJEXT) \ -- pager.$(OBJEXT) parse.$(OBJEXT) pattern.$(OBJEXT) \ -+ opennfs.$(OBJEXT) pager.$(OBJEXT) parse.$(OBJEXT) pattern.$(OBJEXT) \ - postpone.$(OBJEXT) query.$(OBJEXT) recvattach.$(OBJEXT) \ - recvcmd.$(OBJEXT) rfc822.$(OBJEXT) rfc1524.$(OBJEXT) \ - rfc2047.$(OBJEXT) rfc2231.$(OBJEXT) rfc3676.$(OBJEXT) \ -@@ -154,7 +154,7 @@ pgpewrap_LDADD = $(LDADD) - pgpewrap_DEPENDENCIES = $(LIBOBJS) $(am__DEPENDENCIES_1) - am_pgpring_OBJECTS = pgppubring.$(OBJEXT) pgplib.$(OBJEXT) \ - lib.$(OBJEXT) extlib.$(OBJEXT) sha1.$(OBJEXT) md5.$(OBJEXT) \ -- pgppacket.$(OBJEXT) ascii.$(OBJEXT) -+ pgppacket.$(OBJEXT) ascii.$(OBJEXT) opennfs.$(OBJEXT) - pgpring_OBJECTS = $(am_pgpring_OBJECTS) - am_txt2c_OBJECTS = txt2c.$(OBJEXT) - txt2c_OBJECTS = $(am_txt2c_OBJECTS) -@@ -481,7 +481,7 @@ mutt_SOURCES = \ - edit.c enter.c flags.c init.c filter.c from.c \ - getdomain.c group.c \ - handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c \ -- main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c \ -+ main.c mbox.c menu.c mh.c mx.c opennfs.c pager.c parse.c pattern.c \ - postpone.c query.c recvattach.c recvcmd.c \ - rfc822.c rfc1524.c rfc2047.c rfc2231.c rfc3676.c \ - score.c send.c sendlib.c signal.c sort.c \ --- lib.c -+++ lib.c 2016-09-13 09:59:28.591766504 +0000 -@@ -50,6 +50,7 @@ - #define EX_OK 0 - #endif - ++++ lib.c 2017-04-28 13:06:30.924636428 +0000 +@@ -34,6 +34,7 @@ + #include + #include + #include +#include "mutt.h" #include "lib.h" - -@@ -545,7 +546,7 @@ int safe_rename (const char *src, const - - - /* Create a temporary directory next to a file name */ -- -+#if defined(__linux__) - static int mutt_mkwrapdir (const char *path, char *newfile, size_t nflen, - char *newdir, size_t ndlen) - { -@@ -581,7 +582,7 @@ static int mutt_mkwrapdir (const char *p - } - return 0; - } -- -+#endif - /* remove a directory and everything under it */ - int mutt_rmtree (const char* path) - { -@@ -621,7 +622,7 @@ int mutt_rmtree (const char* path) - - return rc; - } -- -+#if defined(__linux__) - static int mutt_put_file_in_place (const char *path, const char *safe_file, const char *safe_dir) - { - int rv; -@@ -631,12 +632,16 @@ static int mutt_put_file_in_place (const - rmdir (safe_dir); - return rv; - } -- -+#endif - int safe_open (const char *path, int flags) - { + #ifdef HAVE_SYSEXITS_H +@@ -640,6 +641,10 @@ int safe_open(const char *path, int flag struct stat osb, nsb; int fd; @@ -110,66 +46,74 @@ + if ((fd = opennfs (path, flags, 0600)) < 0) + return fd; +#else - if (flags & O_EXCL) + if (flags & O_EXCL) { char safe_file[_POSIX_PATH_MAX]; -@@ -660,7 +665,7 @@ int safe_open (const char *path, int fla +@@ -662,7 +667,7 @@ int safe_open(const char *path, int flag - if ((fd = open (path, flags & ~O_EXCL, 0600)) < 0) + if ((fd = open(path, flags & ~O_EXCL, 0600)) < 0) return fd; -- +- +#endif /* make sure the file is not symlink */ - if (lstat (path, &osb) < 0 || fstat (fd, &nsb) < 0 || - compare_stat(&osb, &nsb) == -1) + if (lstat(path, &osb) < 0 || fstat(fd, &nsb) < 0 || !compare_stat(&osb, &nsb)) + { --- mbox.c -+++ mbox.c 2016-09-13 09:59:28.591766504 +0000 -@@ -781,7 +781,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int ++++ mbox.c 2017-04-28 13:09:43.360964197 +0000 +@@ -1055,8 +1055,13 @@ static int mbox_sync_mailbox(CONTEXT *ct /* Create a temporary file to write the new version of the mailbox in. */ - mutt_mktemp (tempfile, sizeof (tempfile)); -- if ((i = open (tempfile, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 || -+ if ((i = opennfs (tempfile, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 || - (fp = fdopen (i, "w")) == NULL) + mutt_mktemp(tempfile, sizeof(tempfile)); ++#if defined(__linux__) ++ if ((i = opennfs(tempfile, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 || ++ (fp = fdopen(i, "w")) == NULL) ++#else + if ((i = open(tempfile, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 || + (fp = fdopen(i, "w")) == NULL) ++#endif { if (-1 != i) + { --- mh.c -+++ mh.c 2016-09-13 09:59:28.591766504 +0000 -@@ -358,7 +358,11 @@ static int mh_mkstemp (CONTEXT * dest, F ++++ mh.c 2017-04-28 13:11:02.323457092 +0000 +@@ -353,7 +353,11 @@ static int mh_mkstemp(CONTEXT *dest, FIL { - snprintf (path, _POSIX_PATH_MAX, "%s/.mutt-%s-%d-%" PRIu64, - dest->path, NONULL (Hostname), (int) getpid (), mutt_rand64()); + snprintf(path, _POSIX_PATH_MAX, "%s/.mutt-%s-%d-%" PRIu64, dest->path, + NONULL(Hostname), (int) getpid(), mutt_rand64()); +#if defined(__linux__) -+ if ((fd = opennfs (path, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1) ++ if ((fd = opennfs(path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) +#else - if ((fd = open (path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) + if ((fd = open(path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) +#endif { if (errno != EEXIST) { -@@ -1382,8 +1386,11 @@ int maildir_open_new_message (MESSAGE * +@@ -1492,8 +1496,11 @@ static int maildir_open_new_message(MESS + subdir, (long long) time(NULL), mutt_rand64(), NONULL(Hostname), suffix); - dprint (2, (debugfile, "maildir_open_new_message (): Trying %s.\n", - path)); + mutt_debug(2, "maildir_open_new_message (): Trying %s.\n", path); - +#if defined(__linux__) -+ if ((fd = opennfs (path, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1) ++ if ((fd = opennfs(path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) +#else - if ((fd = open (path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) + if ((fd = open(path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) +#endif { if (errno != EEXIST) { --- mutt.h -+++ mutt.h 2016-09-13 09:59:28.591766504 +0000 -@@ -1076,4 +1076,5 @@ typedef struct ++++ mutt.h 2017-04-28 13:13:38.944467312 +0000 +@@ -1150,4 +1150,7 @@ typedef struct #include "lib.h" - #include "globals.h" + #include "protos.h" +-#endif /* _MUTT_H */ ++#if defined(__linux__) +extern int opennfs(const char *, int, int); - #endif /*MUTT_H*/ ++#endif ++#endif /* _MUTT_H */ --- opennfs.c -+++ opennfs.c 2016-09-13 09:59:28.595766429 +0000 ++++ opennfs.c 2017-04-28 12:56:59.243588127 +0000 @@ -0,0 +1,122 @@ +#include +#include @@ -294,13 +238,16 @@ + return open(path, flags, mode); +} --- sendlib.c -+++ sendlib.c 2016-09-13 09:59:28.595766429 +0000 -@@ -2260,7 +2260,7 @@ send_msg (const char *path, char **args, ++++ sendlib.c 2017-04-28 13:13:54.220175677 +0000 +@@ -2230,7 +2230,11 @@ static int send_msg(const char *path, ch if (SendmailWait >= 0 && tempfile && *tempfile) { - /* *tempfile will be opened as stdout */ -- if (open (*tempfile, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0600) < 0) -+ if (opennfs (*tempfile, O_WRONLY | O_CREAT | O_EXCL, 0600) < 0) - _exit (S_ERR); - /* redirect stderr to *tempfile too */ - if (dup (1) < 0) + /* *tempfile will be opened as stdout */ ++#if defined(__linux__) ++ if (opennfs(*tempfile, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0600) < 0) ++#else + if (open(*tempfile, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0600) < 0) ++#endif + _exit(S_ERR); + /* redirect stderr to *tempfile too */ + if (dup(1) < 0) diff --git a/mutt-1.6.2-gpgme_set_sender.patch b/mutt-1.6.2-gpgme_set_sender.patch deleted file mode 100644 index d3708df..0000000 --- a/mutt-1.6.2-gpgme_set_sender.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- - crypt-gpgme.c | 2 +- - crypt-gpgme.h | 2 +- - crypt-mod-pgp-gpgme.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - ---- crypt-gpgme.c -+++ crypt-gpgme.c 2016-11-23 10:35:10.336974209 +0000 -@@ -4946,7 +4946,7 @@ int smime_gpgme_verify_sender (HEADER *h - return verify_sender (h, GPGME_PROTOCOL_CMS); - } - --void gpgme_set_sender (const char *sender) -+void mutt_gpgme_set_sender (const char *sender) - { - mutt_error ("[setting sender] mailbox: %s\n", sender); - FREE (¤t_sender); ---- crypt-gpgme.h -+++ crypt-gpgme.h 2016-11-23 10:34:54.745294760 +0000 -@@ -53,6 +53,6 @@ int smime_gpgme_send_menu (HEADER *msg, - - int smime_gpgme_verify_sender (HEADER *h); - --void gpgme_set_sender (const char *sender); -+void mutt_gpgme_set_sender (const char *sender); - - #endif ---- crypt-mod-pgp-gpgme.c -+++ crypt-mod-pgp-gpgme.c 2016-11-23 10:35:45.700247187 +0000 -@@ -104,7 +104,7 @@ static BODY *crypt_mod_pgp_make_key_atta - - static void crypt_mod_pgp_set_sender (const char *sender) - { -- gpgme_set_sender (sender); -+ mutt_gpgme_set_sender (sender); - } - - struct crypt_module_specs crypt_mod_pgp_gpgme = diff --git a/mutt-1.6.2.dif b/mutt-1.6.2.dif deleted file mode 100644 index 14a1f40..0000000 --- a/mutt-1.6.2.dif +++ /dev/null @@ -1,320 +0,0 @@ ---- - configure.ac | 10 ++++- - doc/Makefile.in | 2 - - doc/Muttrc | 102 +++++++++++++++++++++++++++++++++++++++++--------------- - doc/Muttrc.head | 2 - - imap/auth.c | 20 ++++++++++ - init.h | 3 + - mx.c | 3 + - 7 files changed, 112 insertions(+), 30 deletions(-) - ---- configure.ac -+++ configure.ac 2016-09-13 09:57:13.810291522 +0000 -@@ -280,7 +280,7 @@ main () - mutt_cv_slang=$withval - if test -d $withval/include/slang; then - CPPFLAGS="$CPPFLAGS -I${withval}/include/slang" -- elif test -d $withval/include; then -+ elif test -d $withval/include && test $withval != /usr ; then - CPPFLAGS="$CPPFLAGS -I${withval}/include" - fi - LDFLAGS="$LDFLAGS -L${withval}/lib" -@@ -721,8 +721,12 @@ AC_ARG_WITH(ssl, AS_HELP_STRING([--with- - else - if test "$with_ssl" != "yes" - then -+ case $withval in /usr|/usr/local) ;; -+ *) - LDFLAGS="$LDFLAGS -L$withval/lib" - CPPFLAGS="$CPPFLAGS -I$withval/include" -+ ;; -+ esac - fi - saved_LIBS="$LIBS" - -@@ -801,8 +805,12 @@ AC_ARG_WITH(sasl, AS_HELP_STRING([--with - - if test "$with_sasl" != "yes" - then -+ case $with_sasl in /usr|/usr/local) ;; -+ *) - CPPFLAGS="$CPPFLAGS -I$with_sasl/include" - LDFLAGS="$LDFLAGS -L$with_sasl/lib" -+ ;; -+ esac - fi - - saved_LIBS="$LIBS" ---- doc/Makefile.in -+++ doc/Makefile.in 2016-09-13 09:57:13.810291522 +0000 -@@ -697,7 +697,7 @@ uninstall-local: - - check: - manual.txt: manual.html -- -LC_ALL=C lynx -dump -nolist -with_backspaces -display_charset=us-ascii manual.html > $@ || \ -+ -LC_ALL=C lynx -dont_wrap_pre -center -dump -nolist -with_backspaces -display_charset=us-ascii manual.html > $@ || \ - LC_ALL=C w3m -dump manual.html > $@ || \ - LC_ALL=C elinks -dump -no-numbering -no-references manual.html | sed -e 's,\\001, ,g' > $@ - ---- doc/Muttrc.head -+++ doc/Muttrc.head 2016-09-13 09:57:13.810291522 +0000 -@@ -23,7 +23,7 @@ macro index,pager,attach,compose \cb "\ - "call urlview to extract URLs out of a message" - - # Show documentation when pressing F1 --macro generic,pager " less @docdir@/manual.txt" "show Mutt documentation" -+macro generic,index,pager " less -iM @docdir@/manual.txt" "show Mutt documentation" - - # show the incoming mailboxes list (just like "mutt -y") and back when pressing "y" - macro index,pager y "?" "show incoming mailboxes list" ---- doc/Muttrc -+++ doc/Muttrc 2016-09-13 09:57:13.810291522 +0000 -@@ -23,7 +23,7 @@ macro index,pager,attach,compose \cb "\ - "call urlview to extract URLs out of a message" - - # Show documentation when pressing F1 --macro generic,pager " less /usr/local/share/doc/mutt/manual.txt" "show Mutt documentation" -+macro generic,index,pager " less -iM /usr/share/doc/packages/mutt/manual.txt.gz" "show Mutt documentation" - - # show the incoming mailboxes list (just like "mutt -y") and back when pressing "y" - macro index,pager y "?" "show incoming mailboxes list" -@@ -364,9 +364,9 @@ attachments -I message/external-body - # unset, you must first use the function (bound to ``;'' - # by default) to make the next function apply to all tagged messages. - # --# --# set autoedit=no --# -+ -+set autoedit=yes -+ - # Name: autoedit - # Type: boolean - # Default: no -@@ -482,9 +482,9 @@ attachments -I message/external-body - # Note: It should only be set in case Mutt isn't able to determine the - # character set used correctly. - # --# --# set check_mbox_size=no --# -+ -+set check_mbox_size=yes -+ - # Name: check_mbox_size - # Type: boolean - # Default: no -@@ -912,11 +912,11 @@ attachments -I message/external-body - # filtered message is read from the standard output. - # - # --# set dotlock_program="/usr/local/bin/mutt_dotlock" -+# set dotlock_program="/usr/bin/mutt_dotlock" - # - # Name: dotlock_program - # Type: path --# Default: "/usr/local/bin/mutt_dotlock" -+# Default: "/usr/bin/mutt_dotlock" - # - # - # Contains the path of the mutt_dotlock(8) binary to be used by -@@ -2380,9 +2380,9 @@ attachments -I message/external-body - # directly from the pager, and screen resizes cause lines longer than - # the screen width to be badly formatted in the help menu. - # --# --# set pager_context=0 --# -+ -+set pager_context=4 -+ - # Name: pager_context - # Type: number - # Default: 0 -@@ -2410,9 +2410,9 @@ attachments -I message/external-body - # pager. The valid sequences are listed in the $index_format - # section. - # --# --# set pager_index_lines=0 --# -+ -+set pager_index_lines=10 -+ - # Name: pager_index_lines - # Type: number - # Default: 0 -@@ -2430,9 +2430,9 @@ attachments -I message/external-body - # is less than $pager_index_lines, then the index will only use as - # many lines as it needs. - # --# --# set pager_stop=no --# -+ -+set pager_stop=yes -+ - # Name: pager_stop - # Type: boolean - # Default: no -@@ -3538,9 +3538,9 @@ attachments -I message/external-body - # user-defined headers, and other processing effects from being - # made multiple times to the draft file. - # --# --# set reverse_alias=no --# -+ -+set reverse_alias=yes -+ - # Name: reverse_alias - # Type: boolean - # Default: no -@@ -3672,6 +3672,18 @@ attachments -I message/external-body - # Also see the $force_name variable. - # - # -+# set send_group_reply_to=no -+# -+# Name: send_group_reply_to -+# Type: boolean -+# Default: no -+# -+# -+# This variable controls how group replies are done. -+# When set, all recepients listet in "To:" are set in the -+# "To:" header again, else in the "CC", which is the default. -+# -+# - # set score=yes - # - # Name: score -@@ -4255,9 +4267,9 @@ attachments -I message/external-body - # Setting this variable overrides the value of the $sendmail - # variable. - # --# --# set sort=date --# -+ -+set sort=reverse-date-sent -+ - # Name: sort - # Type: sort order - # Default: date -@@ -4741,9 +4753,9 @@ attachments -I message/external-body - # When set, mutt uses the date received rather than the date sent - # to thread messages by subject. - # --# --# set tilde=no --# -+ -+set tilde=yes -+ - # Name: tilde - # Type: boolean - # Default: no -@@ -5079,6 +5091,42 @@ attachments -I message/external-body - # in this case. - # - # -+# set xterm_icon="M%?n?AIL&ail?" -+# -+# Name: xterm_icon -+# Type: string -+# Default: "M%?n?AIL&ail?" -+# -+# -+# Controls the format of the icon title, as long as xterm_set_titles -+# is enabled. This string is identical in formatting to the one used by -+# ``$status_format''. -+# -+# -+# set xterm_set_titles=no -+# -+# Name: xterm_set_titles -+# Type: boolean -+# Default: no -+# -+# -+# 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. -+# -+# -+# set xterm_title="Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?" -+# -+# Name: xterm_title -+# Type: string -+# Default: "Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?" -+# -+# -+# Controls the format of the title bar of the xterm provided that -+# xterm_set_titles has been set. This string is identical in formatting -+# to the one used by ``$status_format''. -+# -+# - # set write_inc=10 - # - # Name: write_inc ---- imap/auth.c -+++ imap/auth.c 2016-09-13 09:57:13.810291522 +0000 -@@ -72,6 +72,23 @@ int imap_authenticate (IMAP_DATA* idata) - dprint (2, (debugfile, "imap_authenticate: Trying method %s\n", method)); - authenticator = imap_authenticators; - -+#ifdef USE_SASL -+ /* "login" not supported by SASL */ -+ if (!ascii_strcasecmp ("login", method)) -+ { -+ while (authenticator->authenticate) -+ { -+ const char *identify = authenticator->method; -+ if (identify && !ascii_strcasecmp(identify, method)) -+ if ((r = authenticator->authenticate(idata, method)) != IMAP_AUTH_UNAVAIL) -+ { -+ FREE(&methods); -+ return r; -+ } -+ authenticator++; -+ } -+ } else { -+#endif - while (authenticator->authenticate) - { - if (!authenticator->method || -@@ -85,6 +102,9 @@ int imap_authenticate (IMAP_DATA* idata) - - authenticator++; - } -+#ifdef USE_SASL -+ } -+#endif - } - - FREE (&methods); ---- init.h -+++ init.h 2016-09-13 09:57:13.814291447 +0000 -@@ -3596,6 +3596,9 @@ struct option_t MuttVars[] = { - ** the default from the GNUTLS library. - */ - # endif /* USE_SSL_GNUTLS */ -+#if defined(USE_IMAP) && defined(SUSE_IMAP_FORCE_SSL) -+ { "imap_force_ssl", DT_SYN, R_NONE, UL "ssl_force_tls", 0 }, -+#endif - { "ssl_starttls", DT_QUAD, R_NONE, OPT_SSLSTARTTLS, M_YES }, - /* - ** .pp ---- mx.c -+++ mx.c 2016-09-13 09:57:13.814291447 +0000 -@@ -1829,6 +1829,9 @@ void mx_update_context (CONTEXT *ctx, in - { - h = ctx->hdrs[msgno]; - -+ if (!h) -+ continue; -+ - if (WithCrypto) - { - /* NOTE: this _must_ be done before the check for mailcap! */ diff --git a/mutt-1.6.2.tar.gz b/mutt-1.6.2.tar.gz deleted file mode 100644 index 7bf11bf..0000000 --- a/mutt-1.6.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c5d02ef06486cdf04f9eeb9e9d7994890d8dfa7f47e7bfeb53a2a67da2ac1d8e -size 3956745 diff --git a/mutt-1.8.2.dif b/mutt-1.8.2.dif new file mode 100644 index 0000000..3c882ab --- /dev/null +++ b/mutt-1.8.2.dif @@ -0,0 +1,116 @@ +--- + configure.ac | 10 +++++++++- + doc/Muttrc.head | 2 +- + imap/auth.c | 20 ++++++++++++++++++++ + init.h | 3 +++ + mx.c | 3 +++ + 5 files changed, 36 insertions(+), 2 deletions(-) + +--- configure.ac ++++ configure.ac 2017-04-28 12:37:53.765552498 +0000 +@@ -393,7 +393,7 @@ main () + mutt_cv_slang=$withval + if test -d $withval/include/slang; then + CPPFLAGS="$CPPFLAGS -I${withval}/include/slang" +- elif test -d $withval/include; then ++ elif test -d $withval/include && test $withval != /usr ; then + CPPFLAGS="$CPPFLAGS -I${withval}/include" + fi + LDFLAGS="$LDFLAGS -L${withval}/lib" +@@ -744,8 +744,12 @@ AC_ARG_WITH(ssl, AS_HELP_STRING([--with- + AC_MSG_WARN([SSL support is only useful with POP, IMAP or SMTP support]) + else + if test "$with_ssl" != "yes"; then ++ case $withval in /usr|/usr/local) ;; ++ *) + LDFLAGS="$LDFLAGS -L$withval/lib" + CPPFLAGS="$CPPFLAGS -I$withval/include" ++ ;; ++ esac + fi + saved_LIBS="$LIBS" + +@@ -825,8 +829,12 @@ AC_ARG_WITH(sasl, AS_HELP_STRING([--with + fi + + if test "$with_sasl" != "yes"; then ++ case $with_sasl in /usr|/usr/local) ;; ++ *) + CPPFLAGS="$CPPFLAGS -I$with_sasl/include" + LDFLAGS="$LDFLAGS -L$with_sasl/lib" ++ ;; ++ esac + fi + + saved_LIBS="$LIBS" +--- doc/Muttrc.head ++++ doc/Muttrc.head 2017-04-28 12:25:19.528026960 +0000 +@@ -23,7 +23,7 @@ macro index,pager,attach,compose \cb "\ + "call urlview to extract URLs out of a message" + + # Show documentation when pressing F1 +-macro generic,pager " less @docdir@/manual.txt" "show Mutt documentation" ++macro generic,index,pager " less -iM @docdir@/manual.txt.gz" "show Mutt documentation" + + # show the incoming mailboxes list (just like "mutt -y") and back when pressing "y" + macro index,pager y "?" "show incoming mailboxes list" +--- imap/auth.c ++++ imap/auth.c 2017-04-28 12:30:38.789900091 +0000 +@@ -68,6 +68,23 @@ int imap_authenticate(IMAP_DATA *idata) + mutt_debug(2, "imap_authenticate: Trying method %s\n", method); + authenticator = imap_authenticators; + ++#ifdef USE_SASL ++ /* "login" not supported by SASL */ ++ if (!ascii_strcasecmp ("login", method)) ++ { ++ while (authenticator->authenticate) ++ { ++ const char *identify = authenticator->method; ++ if (identify && !ascii_strcasecmp(identify, method)) ++ if ((r = authenticator->authenticate(idata, method)) != IMAP_AUTH_UNAVAIL) ++ { ++ FREE(&methods); ++ return r; ++ } ++ authenticator++; ++ } ++ } else { ++#endif + while (authenticator->authenticate) + { + if (!authenticator->method || (ascii_strcasecmp(authenticator->method, method) == 0)) +@@ -79,6 +96,9 @@ int imap_authenticate(IMAP_DATA *idata) + + authenticator++; + } ++#ifdef USE_SASL ++ } ++#endif + } + + FREE(&methods); +--- init.h ++++ init.h 2017-04-28 12:33:39.178438277 +0000 +@@ -3735,6 +3735,9 @@ struct option_t MuttVars[] = { + ** the default from the GNUTLS library. + */ + # endif /* USE_SSL_GNUTLS */ ++#if defined(USE_IMAP) && defined(SUSE_IMAP_FORCE_SSL) ++ { "imap_force_ssl", DT_SYN, R_NONE, UL "ssl_force_tls", 0 }, ++#endif + { "ssl_starttls", DT_QUAD, R_NONE, OPT_SSLSTARTTLS, MUTT_YES }, + /* + ** .pp +--- mx.c ++++ mx.c 2017-04-28 12:25:20.772003088 +0000 +@@ -1444,6 +1444,9 @@ void mx_update_context(CONTEXT *ctx, int + { + h = ctx->hdrs[msgno]; + ++ if (!h) ++ continue; ++ + if (WithCrypto) + { + /* NOTE: this _must_ be done before the check for mailcap! */ diff --git a/mutt.changes b/mutt.changes index e410256..fd61517 100644 --- a/mutt.changes +++ b/mutt.changes @@ -1,3 +1,98 @@ +------------------------------------------------------------------- +Fri Apr 28 14:37:01 UTC 2017 - werner@suse.de + +- Update to neomutt 20170421 which updates to mutt 1.8.2 + 1.8.2 Bug fix release. + 1.8.1 Bug fix release. + 1.8.0 + - $locale has been removed. Mutt now respects the LC_TIME setting + instead. See also $attribution_locale. + + $attribution_locale can be used to override the date formatting in + attribution strings. When unset, Mutt will use the locale + environment, but note the default value of $date_format has a + leading '!' which says to use the C-locale. + ! Message-id and mail-followup-to headers are now preserved for recalled + messages. + + added to complement . + ! The pager position is reset to the top when toggling header-weed. + ! IMAP messages moved to $trash via server-side copy are marked as read. + + jumps to the root message of a thread. + ! Piped text attachments are charset converted. + + Added %F to $attach_format, to show the content-disposition filename. + %d will fall back to %F which will fall back to %f. + + allows an attachment name to be changed, without + modifying the underlying file's name. + ! Mutt will look for the user's muttrc additionally in + $XDG_CONFIG_HOME/mutt/. + + Compressed mbox and mmdf files are now supported via open-hook, + close-hook, and append-hook. See contrib/sample.muttrc-compress + for suggested settings. Note this is a compile-time option: + --enable-compressed. + + When $flag_safe is set, flagged messages cannot be deleted. + + The '@' pattern modifier can be used to limit matches to known aliases. + + creates a hotkey binding to a specific message. The hotkey + prefix is specified via $mark_macro_prefix. + + and can be used to add/remove environment variables + passed to children. + ! Mutt will now use the built-in OpenSSL SSL_set_verify() callback + to verify certificates. This allows better support for verifying + chains, including alternative chain support. + + $uncollapse_new controls whether a thread will be uncollapsed when a new + message arrives. + ! $to_chars and $status_chars now accept multibyte characters. + + allows replacing matching subjects with something else. + This can be used to declutter subject lines in the index. + + can be used to add, change, or delete a message's X-Label. + ! Pattern expressions with ~y support label tab completion. + + The header cache now also supports Kyoto Cabinet and LMDB as + backend databases. + 1.7.2 (2016-12-04): + ! Bug fix release. No features were modified or added. + ! Fixes for OpenSSL 1.1. Versions less than 0.9.6 are no longer supported. + 1.7.1 (2016-10-08): + ! Bug fix release. No features were modified or added. + 1.7.0 (2016-08-18): + ! Improved alignment when using multi-column characters with + soft-fill (%*X) and right-justified (%>X) format strings. + + The COLUMNS environment variable will be set to the width of the + pager when invoking display filters. This can be used in + copiousoutput mailcap entries to allow their output to match the + pager width. + + The sidebar patch has been merged. Please watch for airborne + bovine. See the documentation for all the options, or simply + enable it with 'set sidebar_visible'. + + $mail_check_stats and $mail_check_stats_interval control whether, + and how often, to scan for unread, flagged, and total message + counts when checking for new mail in mailboxes. These statistics + can be displayed in the sidebar and browser. + + $trash, when set, specifies the path of the folder where mails + marked for deletion will be moved, instead of being irremediably + purged. + + The function can be used to delete an entry and + bypass the trash folder. + + $folder_format has new format strings %m and %n, to display + total and unread message counts for mailboxes. Note that + $mail_check_stats should be enabled to use these. + ! When browsing IMAP, %N will now display 'N', instead of the unread + message count. Please use %n to display unread messages. +- Removed obsolete patches + * COLS-workaround.dif + * mutt-1.6.2-gpgme_set_sender.patch +- Modifyed and ported patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.5.9i-pgpewrap.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Renamed patch + * mutt-1.6.2.dif becomes mutt-1.8.2.dif + ------------------------------------------------------------------- Mon Mar 6 10:37:24 UTC 2017 - werner@suse.de diff --git a/mutt.spec b/mutt.spec index 7cfd66b..540bafd 100644 --- a/mutt.spec +++ b/mutt.spec @@ -41,6 +41,7 @@ BuildRequires: libidn-devel BuildRequires: libopenssl-devel BuildRequires: libxml2 BuildRequires: libxslt +BuildRequires: lua-devel BuildRequires: lynx BuildRequires: ncurses-devel %if 0%{?is_opensuse} @@ -72,14 +73,18 @@ Requires: perl(Expect) # NOTE: We don't want this dependency and desktop-data-SuSE is in all # desktop selections. #Requires: desktop-data-SuSE -%global neo 20160826 -Version: 1.6.2 +%global neo 20170421 +Version: 1.8.2 Release: 0 Summary: Mail Program License: GPL-2.0+ Group: Productivity/Networking/Email/Clients # ftp://ftp.mutt.org/mutt/devel/ -Source0: https://bitbucket.org/mutt/mutt/downloads/%name-%version.tar.gz +# Source0: https://bitbucket.org/mutt/mutt/downloads/%name-%version.tar.gz +# Switch over to neomutt tar ball which is based on original mutt +# http://www.neomutt.org/ +### https://github.com/neomutt/neomutt/archive/neomutt-20170421.tar.gz +Source0: neomutt-%neo.tar.gz Source1: Signature_conversion Source2: README.alternates Source3: mutt.png @@ -88,8 +93,6 @@ Source5: skel.muttrc Source6: krb5-config Source7: mutt-1.5.21.de.po Source9: mutt.mailcap -# http://www.neomutt.org/ -Source10: neomutt-distro-%neo.tar.gz Patch: %name-%version.dif # http://www.spinnaker.de/mutt/compressed/ Patch2: %name-1.5.9i-pgpewrap.diff @@ -108,10 +111,6 @@ Patch16: mutt-1.5.23-carriage-return.path Patch18: mutt-1.5.21-mailcap.diff # PATCH-FIX-SUSE: bsc#907453 - CVE-2014-9116: mutt: heap-based buffer overflow in mutt_substrdup() Patch19: bsc907453-CVE-2014-9116-jessie.patch -# PATCH-FIX-OPENSUSE boo#980830 ... remove if fixed upstream -Patch20: COLS-workaround.dif -# PATCH-FIX-OPENSUSE avoid name space trouble with latest libgppme -Patch21: mutt-1.6.2-gpgme_set_sender.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %global _sysconfdir %{_sysconfdir} @@ -121,23 +120,8 @@ highlighting, threading, and PGP. It takes some time to get used to, however. %prep -%setup -q -n mutt-%version -a 10 -for p in neomutt-distro-%neo/bugs-common/*.patch -do - patch -s -p1 --fuzz=%_default_patch_fuzz < $p -done -for p in neomutt-distro-%neo/features-common/*.patch -do - patch -s -p1 --fuzz=%_default_patch_fuzz < $p -done -for p in neomutt-distro-%neo/features-extra/*.patch -do - patch -s -p1 --fuzz=%_default_patch_fuzz < $p -done -for p in neomutt-distro-%neo/bugs-neomutt/*.patch -do - patch -s -p1 --fuzz=%_default_patch_fuzz < $p -done +ln -sf neomutt-neomutt-%neo mutt-%version +%setup -q -D -n mutt-%version %patch -p0 -b .p0 %patch2 -p0 -b .pgpewrap %patch3 -p0 -b .sendgroupreplyto @@ -150,12 +134,9 @@ done %patch16 -p0 -b .crlf %patch18 -p0 -b .mailcap %patch19 -p0 -b .cvw2014.9116 -%patch20 -p0 -b .cols -%patch21 -p0 -b .ssend rm -vf README*.orig rm -vf PATCHES*.orig -cp doc/Muttrc Muttrc.SuSE cp %{S:2} . %build @@ -228,17 +209,17 @@ chmod 755 $KRB5CFGPATH --with-curses=%{_prefix} \ --with-regex \ --enable-smtp \ - --enable-hcache \ + --enable-lua \ + --enable-nntp \ --with-idn make -C doc clean -make -C po update-po -cp %{S:7} po/de.po +#make -C po update-po +#cp %{S:7} po/de.po make make -C doc %install make install DESTDIR=%{buildroot} -mv Muttrc.SuSE %{buildroot}%{_sysconfdir}/Muttrc install -m 755 %{S:1} %{buildroot}%{_bindir} gzip -9 doc/manu*.txt rm -f contrib/Makefile* @@ -280,7 +261,6 @@ rm -vf %{buildroot}%{_docdir}/%name/manual.txt %files -f %name.lang %defattr(-,root,root) %doc doc/manual.txt.gz COPYRIGHT README* NEWS TODO -%doc doc/PGP-Notes.txt doc/applying-patches.txt doc/devel-notes.txt %config(noreplace) %{_sysconfdir}/skel/.muttrc %config(noreplace) %{_sysconfdir}/Muttrc %{_bindir}/mutt @@ -299,9 +279,14 @@ rm -vf %{buildroot}%{_docdir}/%name/manual.txt %dir %{_datadir}/mutt/ %{_datadir}/mutt/mailcap %doc %{_docdir}/%name/ChangeLog -%doc %{_docdir}/%name/GPL +%doc %{_docdir}/%name/ChangeLog.neomutt +%doc %{_docdir}/%name/LICENSE.md %doc %{_docdir}/%name/*.html -%doc %{_docdir}/%name/patch-notes.txt +%doc %{_docdir}/%name/*.txt +%dir %doc %{_docdir}/%name/keybase/ +%doc %{_docdir}/%name/keybase/* +%doc %{_docdir}/%name/muttrc.* +%doc %{_docdir}/%name/neomutt-syntax.vim %dir %doc %{_docdir}/%name/samples/ %doc %{_docdir}/%name/samples/*.rc %doc %{_docdir}/%name/samples/ca-bundle.crt @@ -311,6 +296,7 @@ rm -vf %{buildroot}%{_docdir}/%name/manual.txt %doc %{_docdir}/%name/samples/mutt_xtitle %doc %{_docdir}/%name/samples/sample.* %doc %{_docdir}/%name/samples/smime_keys_test.pl -%doc %{_docdir}/%name/smime-notes.txt +%dir %doc %{_docdir}/%name/vim-keys/ +%doc %{_docdir}/%name/vim-keys/* %changelog diff --git a/neomutt-20170421.tar.gz b/neomutt-20170421.tar.gz new file mode 100644 index 0000000..b50101a --- /dev/null +++ b/neomutt-20170421.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2033ab18f2b05b45e22475ee98a5decdb2b19934d41803a02b66dd0d452c125 +size 2733547 diff --git a/patch-1.5.24.vk.pgp_verbose_mime b/patch-1.5.24.vk.pgp_verbose_mime index fbc012f..50dc738 100644 --- a/patch-1.5.24.vk.pgp_verbose_mime +++ b/patch-1.5.24.vk.pgp_verbose_mime @@ -6,15 +6,15 @@ 4 files changed, 17 insertions(+), 1 deletion(-) --- PATCHES -+++ PATCHES 2016-09-13 10:02:27.260419491 +0000 ++++ PATCHES 2017-04-28 13:24:26.336119973 +0000 @@ -1,3 +1,4 @@ +patch-1.5.3.vk.pgp_verbose_mime patch-1.5.9.aw.listreply.1 - patch-compress-neo-git - patch-cond-date-neo-git + patch-attach-headers-color-neomutt + patch-compose-to-sender-neomutt --- globals.h -+++ globals.h 2016-09-13 10:02:12.156702439 +0000 -@@ -271,6 +271,8 @@ WHERE REGEXP PgpDecryptionOkay; ++++ globals.h 2017-04-28 13:23:52.912755124 +0000 +@@ -280,6 +280,8 @@ WHERE REGEXP PgpDecryptionOkay; WHERE char *PgpSignAs; WHERE short PgpTimeout; WHERE char *PgpEntryFormat; @@ -24,8 +24,8 @@ WHERE char *PgpDecodeCommand; WHERE char *PgpVerifyCommand; --- init.h -+++ init.h 2016-09-13 10:02:12.156702439 +0000 -@@ -3205,6 +3205,18 @@ struct option_t MuttVars[] = { ++++ init.h 2017-04-28 13:25:47.026586390 +0000 +@@ -3342,6 +3342,18 @@ struct option_t MuttVars[] = { ** a line quoted text if it also matches $$smileys. This mostly ** happens at the beginning of a line. */ @@ -41,18 +41,18 @@ + ** This option sets the Content-Description used for signature parts in + ** PGP/MIME signed messages. + */ - - - + { "smime_ask_cert_label", DT_BOOL, R_NONE, OPTASKCERTLABEL, 1 }, + /* + ** .pp --- pgp.c -+++ pgp.c 2016-09-13 10:02:12.156702439 +0000 -@@ -1261,7 +1261,8 @@ BODY *pgp_sign_message (BODY *a) ++++ pgp.c 2017-04-28 13:27:03.109140122 +0000 +@@ -1184,7 +1184,8 @@ BODY *pgp_sign_message(BODY *a) t->disposition = DISPNONE; t->encoding = ENC7BIT; - t->unlink = 1; /* ok to remove this file after sending. */ -- mutt_set_parameter ("name", "signature.asc", &t->parameter); + t->unlink = true; /* ok to remove this file after sending. */ +- mutt_set_parameter("name", "signature.asc", &t->parameter); + mutt_set_parameter ("name", PgpMimeSignatureFilename, &t->parameter); + t->description = safe_strdup (PgpMimeSignatureDescription); - return (a); + return a; } diff --git a/widechar.sidebar.dif b/widechar.sidebar.dif index a6cd9e2..65a0cac 100644 --- a/widechar.sidebar.dif +++ b/widechar.sidebar.dif @@ -1,53 +1,52 @@ --- - handler.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) + handler.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) --- handler.c -+++ handler.c 2016-07-26 12:01:48.801608572 +0000 -@@ -780,7 +780,7 @@ static void enriched_set_flags (const wc - static int text_enriched_handler (BODY *a, STATE *s) - { - enum { -- TEXT, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE -+ TEXT, TEXT_GOTWC, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE - } state = TEXT; - - long bytes = a->length; -@@ -809,7 +809,7 @@ static int text_enriched_handler (BODY * ++++ handler.c 2017-04-28 13:34:40.080448389 +0000 +@@ -816,6 +816,7 @@ static int text_enriched_handler(BODY *a + enum + { + TEXT, ++ TEXT_GOTWC, + LANGLE, + TAG, + BOGUS_TAG, +@@ -853,7 +854,7 @@ static int text_enriched_handler(BODY *a { if (state != ST_EOF) { -- if (!bytes || (wc = fgetwc (s->fpin)) == WEOF) +- if (!bytes || (wc = fgetwc(s->fpin)) == WEOF) + if (state != TEXT_GOTWC && (!bytes || (fscanf (s->fpin, "%lc", &wc)) == EOF)) - state = ST_EOF; + state = ST_EOF; else - bytes--; -@@ -817,6 +817,8 @@ static int text_enriched_handler (BODY * + bytes--; +@@ -861,6 +862,8 @@ static int text_enriched_handler(BODY *a switch (state) { + case TEXT_GOTWC: -+ state = TEXT; - case TEXT : - switch (wc) - { -@@ -877,9 +879,8 @@ static int text_enriched_handler (BODY * - enriched_flush (&stte, 1); - else - { -- ungetwc (wc, s->fpin); - bytes++; -- state = TEXT; -+ state = TEXT_GOTWC; - } - break; ++ state = TEXT; + case TEXT: + switch (wc) + { +@@ -921,9 +924,8 @@ static int text_enriched_handler(BODY *a + enriched_flush(&stte, 1); + else + { +- ungetwc(wc, s->fpin); + bytes++; +- state = TEXT; ++ state = TEXT_GOTWC; + } + break; -@@ -1567,7 +1568,7 @@ void mutt_decode_attachment (BODY *b, ST +@@ -1638,7 +1640,7 @@ void mutt_decode_attachment(BODY *b, STA * strip all trailing spaces to improve interoperability; * if $text_flowed is unset, simply verbatim copy input */ --static int text_plain_handler (BODY *b, STATE *s) -+static int text_plain_handler (BODY *b __attribute__((unused)), STATE *s) +-static int text_plain_handler(BODY *b, STATE *s) ++static int text_plain_handler(BODY *b __attribute__((unused)), STATE *s) { char *buf = NULL; size_t l = 0, sz = 0;