X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Frfc2231.el;h=20e1d7cf397b395520fcfa100be4af7d27e6482a;hb=cf85cd945add46ce6477643a1f9c4f413723eb41;hp=dd391b122bc6453b9896de11e57515e0f1bee95b;hpb=a707b63af25b91cb730c12e65156ca364bf49a44;p=elisp%2Fgnus.git- diff --git a/lisp/rfc2231.el b/lisp/rfc2231.el index dd391b1..20e1d7c 100644 --- a/lisp/rfc2231.el +++ b/lisp/rfc2231.el @@ -1,6 +1,7 @@ ;;; rfc2231.el --- Functions for decoding rfc2231 headers -;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -27,6 +28,9 @@ (eval-when-compile (require 'cl)) (require 'ietf-drums) (require 'rfc2047) +(autoload 'mm-encode-body "mm-bodies") +(autoload 'mail-header-remove-whitespace "mail-parse") +(autoload 'mail-header-remove-comments "mail-parse") (defun rfc2231-get-value (ct attribute) "Return the value of ATTRIBUTE from CT." @@ -53,6 +57,9 @@ The list will be on the form (mail-header-remove-comments string))) (let ((table (copy-syntax-table ietf-drums-syntax-table))) (modify-syntax-entry ?\' "w" table) + (modify-syntax-entry ?* " " table) + (modify-syntax-entry ?\; " " table) + (modify-syntax-entry ?= " " table) ;; The following isn't valid, but one should be liberal ;; in what one receives. (modify-syntax-entry ?\: "w" table) @@ -112,10 +119,11 @@ The list will be on the form (setq value (buffer-substring (1+ (point)) (progn (forward-sexp 1) (1- (point)))))) - ((and (memq c ttoken) + ((and (or (memq c ttoken) + (> c ?\177)) ;; EXTENSION: Support non-ascii chars. (not (memq c stoken))) (setq value (buffer-substring - (point) (progn (forward-sexp 1) (point))))) + (point) (progn (forward-sexp) (point))))) (t (error "Invalid header: %s" string))) (when encoded @@ -150,9 +158,9 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." ;; Encode using the charset, if any. (when (and (mm-multibyte-p) (> (length elems) 1) - (not (equal (intern (car elems)) 'us-ascii))) + (not (equal (intern (downcase (car elems))) 'us-ascii))) (mm-decode-coding-region (point-min) (point-max) - (intern (car elems)))) + (intern (downcase (car elems))))) (buffer-string)))) (defun rfc2231-encode-string (param value)