From 25bdaa526127e0c15ca299cadf1ebd3afcf5f873 Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Wed, 23 Oct 2013 03:35:25 +0000 Subject: [PATCH] mm-decode.el (mm-dissect-buffer): Revert last change nndoc.el (nndoc-dissect-mime-parts-sub): Ditto The problem that motivated those changes was attributed to a broken mail sender, and has been fixed. --- lisp/ChangeLog | 7 ++++++ lisp/mm-decode.el | 35 ++++-------------------------- lisp/nndoc.el | 54 ++++------------------------------------------- 3 files changed, 15 insertions(+), 81 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 617191d66..cf1d4fff8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2013-10-23 Katsumi Yamaoka + + * mm-decode.el (mm-dissect-buffer): Revert last change. + * nndoc.el (nndoc-dissect-mime-parts-sub): Ditto. + The problem that motivated those changes was attributed to a broken + mail sender, and has been fixed. + 2013-10-22 Katsumi Yamaoka * mm-decode.el (mm-dissect-buffer): Guess content-type if the first diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 4a9007a06..26d18fc67 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -672,39 +672,12 @@ MIME-Version header before proceeding." description))))) (if (or (not ctl) (not (string-match "/" (car ctl)))) - (let ((cdl (and cd (mail-header-parse-content-disposition cd)))) (mm-dissect-singlepart - ;; Guess Content-Type from the file name extention. - ;; Some mailer sends a part without type like this: - ;; Content-Type: ; name="IMG_3156.JPG" - ;; Content-Disposition: attachment; filename="IMG_3156.JPG" - (list (or - (let ((tem - (or (mail-content-type-get cdl 'filename) - (and ct - (with-temp-buffer - (insert ct) - (goto-char (point-min)) - (and (re-search-forward "\ -;[\t\n ]*name=\\([\"']\\|\\([^\t\n\r ]+\\)\\)" nil t) - (or (match-string 2) - (progn - (goto-char (match-beginning 1)) - (condition-case nil - (progn - (forward-sexp 1) - (buffer-substring - (1+ (match-beginning 1)) - (1- (point)))) - (error nil)))))))))) - (and tem - (setq tem (file-name-extension tem)) - (require 'mailcap) - (cdr (assoc (concat "." (downcase tem)) - mailcap-mime-extensions)))) - mm-dissect-default-type)) + (list mm-dissect-default-type) (and cte (intern (downcase (mail-header-strip cte)))) - no-strict-mime cdl description)) + no-strict-mime + (and cd (mail-header-parse-content-disposition cd)) + description) (setq type (split-string (car ctl) "/")) (setq subtype (cadr type) type (car type)) diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 9c28cb128..b17a7a6ec 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -968,61 +968,15 @@ PARENT is the message-ID of the parent summary line, or nil for none." (goto-char head-begin) (setq content-type (message-fetch-field "Content-Type")) (when content-type - (with-temp-buffer - (insert content-type) - (goto-char (point-min)) - (when (re-search-forward ";[\t\n ]*name=\\([\"']\\|\\([^\t\n\r ]+\\)\\)" - nil t) - (setq subject (or (match-string 2) - (progn - (goto-char (match-beginning 1)) - (condition-case nil - (progn - (forward-sexp 1) - (buffer-substring - (1+ (match-beginning 1)) (1- (point)))) - (error nil))))))) - (when (or (string-match "^ *\\([^ \t\n/;]+\\)/\\([^ \t\n/;]+\\)" - content-type) - ;; Guess Content-Type from the file name extention. - ;; Some mailer sends a part without type like this: - ;; Content-Type: ; name="IMG_3156.JPG" - ;; Content-Disposition: attachment; filename="IMG_3156.JPG" - (let ((tem (message-fetch-field "Content-Disposition")) - (case-fold-search t) - len) - (when (and - (setq tem - (or (and tem - (mail-content-type-get - (mail-header-parse-content-disposition - tem) - 'filename)) - subject)) - (setq tem (file-name-extension tem)) - (require 'mailcap) - (setq content-type - (cdr (assoc (concat "." (downcase tem)) - mailcap-mime-extensions))) - (string-match "^ *\\([^ \t\n/;]+\\)/\\([^ \t\n/;]+\\)" - content-type)) - (save-match-data - (goto-char (point-min)) - (when (re-search-forward "^Content-Type:\\([^;]*\\);" - nil t) - (setq len (- (match-end 1) (match-beginning 1) - (length content-type) 1) - head-end (- head-end len) - body-begin (- body-begin len) - body-end (- body-end len)) - (replace-match (concat "Content-Type: " content-type - ";")))) - t))) + (when (string-match + "^ *\\([^ \t\n/;]+\\)/\\([^ \t\n/;]+\\)" content-type) (setq type (downcase (match-string 1 content-type)) subtype (downcase (match-string 2 content-type)) message-rfc822 (and (string= type "message") (string= subtype "rfc822")) multipart-any (string= type "multipart"))) + (when (string-match ";[ \t\n]*name=\\([^ \t\n;]+\\)" content-type) + (setq subject (match-string 1 content-type))) (when (string-match "boundary=\"?\\([^\"\n]*[^\" \t\n]\\)" content-type) (setq boundary-regexp (concat "^--" (regexp-quote -- 2.25.1