epa.texi (Encrypting/decrypting gpg files): Fix a typo
[gnus] / lisp / rfc2231.el
index e3928ac..ef7187c 100644 (file)
@@ -1,7 +1,6 @@
 ;;; rfc2231.el --- Functions for decoding rfc2231 headers
 
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2015 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; This file is part of GNU Emacs.
@@ -59,7 +58,7 @@ must never cause a Lisp error."
         ;; The most likely cause of an error is unbalanced parentheses
         ;; or double-quotes.  If all parentheses and double-quotes are
         ;; quoted meaninglessly with backslashes, removing them might
-        ;; make it parseable.  Let's try...
+        ;; make it parsable.  Let's try...
         (error
          (let (mod)
            (when (and (string-match "\\\\\"" string)
@@ -185,11 +184,19 @@ must never cause a Lisp error."
                in (sort parameters (lambda (e1 e2)
                                      (< (or (caddr e1) 0)
                                         (or (caddr e2) 0))))
-               do (if (or (not (setq elem (assq attribute cparams)))
-                          (and (numberp part)
-                               (zerop part)))
-                      (push (list attribute value encoded) cparams)
-                    (setcar (cdr elem) (concat (cadr elem) value))))
+               do (cond
+                   ;; First part.
+                   ((or (not (setq elem (assq attribute cparams)))
+                        (and (numberp part)
+                             (zerop part)))
+                    (push (list attribute value encoded) cparams))
+                   ;; Repetition of a part; do nothing.
+                   ((and elem
+                         (null number))
+                    )
+                   ;; Concatenate continuation parts.
+                   (t
+                    (setcar (cdr elem) (concat (cadr elem) value)))))
          ;; Finally decode encoded values.
          (cons type (mapcar
                      (lambda (elem)
@@ -208,7 +215,8 @@ These look like:
  \"''This%20is%20%2A%2A%2Afun%2A%2A%2A\", or
  \"This is ***fun***\"."
   (string-match "\\`\\(?:\\([^']+\\)?'\\([^']+\\)?'\\)?\\(.+\\)" string)
-  (let ((coding-system (mm-charset-to-coding-system (match-string 1 string)))
+  (let ((coding-system (mm-charset-to-coding-system
+                       (match-string 1 string) nil t))
        ;;(language (match-string 2 string))
        (value (match-string 3 string)))
     (mm-with-unibyte-buffer
@@ -296,5 +304,4 @@ the result of this function."
 
 (provide 'rfc2231)
 
-;; arch-tag: c3ab751d-d108-406a-b301-68882ad8cd63
 ;;; rfc2231.el ends here