From 644ce3bff82097a49f0c517e67e53f9405b444c0 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Fri, 3 Feb 2006 08:05:59 +0000 Subject: [PATCH] Synch to No Gnus 200602030805. --- lisp/ChangeLog | 8 ++++++++ lisp/rfc2231.el | 31 +++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 10ad511..8ec181b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2006-02-03 Katsumi Yamaoka + + * rfc2231.el (rfc2231-parse-string): Add missing semicolons to + segmented lines of parameter value to cope with Thunderbird 1.5 + bug (cf. https://bugzilla.mozilla.org/show_bug.cgi?id=323318). + Suggested by ARISAWA Akihiro . + (rfc2231-encode-string): Don't make lines exceeding 76 column. + 2006-02-01 Max Froumentin (tiny change) * mml.el (mml-generate-mime-1): Correct the order of inline signed diff --git a/lisp/rfc2231.el b/lisp/rfc2231.el index ca12c10..85fdae8 100644 --- a/lisp/rfc2231.el +++ b/lisp/rfc2231.el @@ -1,7 +1,7 @@ ;;; rfc2231.el --- Functions for decoding rfc2231 headers -;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005 -;; Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, +;; 2006 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -53,6 +53,10 @@ The list will be on the form display-name mailbox c display-string parameters attribute value type subtype number encoded prev-attribute prev-encoded) + ;; Some mailer (e.g. Thunderbird 1.5) doesn't terminate each + ;; line with semicolon when folding a long parameter value. + (while (string-match "\\([^\t\n\r ;]\\)[\t ]*\r?\n[\t ]+" string) + (setq string (replace-match "\\1;\n " nil nil string))) (ietf-drums-init (mail-header-remove-whitespace (mail-header-remove-comments string))) (let ((table (copy-syntax-table ietf-drums-syntax-table))) @@ -191,6 +195,7 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (special (ietf-drums-token-to-list "*'%\n\t")) (ascii (ietf-drums-token-to-list ietf-drums-text-token)) (num -1) + (limit (- 74 (length param))) spacep encodep charsetp charset broken) (with-temp-buffer (insert value) @@ -209,24 +214,30 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (when charsetp (setq charset (mm-encode-body))) (cond - ((or encodep charsetp) + ((or encodep charsetp + (progn + (end-of-line) + (> (current-column) (if spacep (- limit 2) limit)))) + (setq limit (- limit 6)) (goto-char (point-min)) + (insert (symbol-name (or charset 'us-ascii)) "''") (while (not (eobp)) - (when (> (current-column) 60) - (insert ";\n") - (setq broken t)) (if (or (not (memq (following-char) ascii)) (memq (following-char) control) (memq (following-char) tspecial) (memq (following-char) special) (eq (following-char) ? )) (progn + (when (>= (current-column) (1- limit)) + (insert ";\n") + (setq broken t)) (insert "%" (format "%02x" (following-char))) (delete-char 1)) + (when (> (current-column) limit) + (insert ";\n") + (setq broken t)) (forward-char 1))) (goto-char (point-min)) - (insert (symbol-name (or charset 'us-ascii)) "''") - (goto-char (point-min)) (if (not broken) (insert param "*=") (while (not (eobp)) @@ -235,12 +246,12 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (forward-line 1)))) (spacep (goto-char (point-min)) - (insert param "=\"") + (insert "\n " param "=\"") (goto-char (point-max)) (insert "\"")) (t (goto-char (point-min)) - (insert param "="))) + (insert "\n " param "="))) (buffer-string)))) (provide 'rfc2231) -- 1.7.10.4