projects
/
gnus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
message.el (message-hide-headers): Bind inhibit-modification-hooks to t rather than...
[gnus]
/
lisp
/
rfc2231.el
diff --git
a/lisp/rfc2231.el
b/lisp/rfc2231.el
index
7cb1740
..
2bc2333
100644
(file)
--- a/
lisp/rfc2231.el
+++ b/
lisp/rfc2231.el
@@
-1,7
+1,6
@@
;;; rfc2231.el --- Functions for decoding rfc2231 headers
;;; rfc2231.el --- Functions for decoding rfc2231 headers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 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.
;; 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
;; 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 pars
e
able. Let's try...
+ ;; make it parsable. Let's try...
(error
(let (mod)
(when (and (string-match "\\\\\"" string)
(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))))
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)
;; Finally decode encoded values.
(cons type (mapcar
(lambda (elem)
@@
-202,13
+209,14
@@
must never cause a Lisp error."
(defun rfc2231-decode-encoded-string (string)
"Decode an RFC2231-encoded string.
These look like:
(defun rfc2231-decode-encoded-string (string)
"Decode an RFC2231-encoded string.
These look like:
- \"us-ascii
'en-us
'This%20is%20%2A%2A%2Afun%2A%2A%2A\",
- \"us-ascii
'
'This%20is%20%2A%2A%2Afun%2A%2A%2A\",
- \"
'en-us
'This%20is%20%2A%2A%2Afun%2A%2A%2A\",
- \"
'
'This%20is%20%2A%2A%2Afun%2A%2A%2A\", or
+ \"us-ascii
\\='en-us\\=
'This%20is%20%2A%2A%2Afun%2A%2A%2A\",
+ \"us-ascii
\\='\\=
'This%20is%20%2A%2A%2Afun%2A%2A%2A\",
+ \"
\\='en-us\\=
'This%20is%20%2A%2A%2Afun%2A%2A%2A\",
+ \"
\\='\\=
'This%20is%20%2A%2A%2Afun%2A%2A%2A\", or
\"This is ***fun***\"."
(string-match "\\`\\(?:\\([^']+\\)?'\\([^']+\\)?'\\)?\\(.+\\)" string)
\"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
;;(language (match-string 2 string))
(value (match-string 3 string)))
(mm-with-unibyte-buffer