;;; mm-decode.el --- Functions for decoding MIME things
-;; Copyright (C) 1998-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2012 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
(require 'mail-parse)
(require 'mm-bodies)
-(require 'mm-archive)
(eval-when-compile (require 'cl)
(require 'term))
(autoload 'mm-extern-cache-contents "mm-extern")
(autoload 'mm-insert-inline "mm-view")
+(autoload 'mm-archive-decoders "mm-archive")
+(autoload 'mm-archive-dissect-and-inline "mm-archive")
+(autoload 'mm-dissect-archive "mm-archive")
+
(defvar gnus-current-window-configuration)
(add-hook 'gnus-exit-gnus-hook 'mm-destroy-postponed-undisplay-list)
(ignore-errors
(if (fboundp 'create-image)
(create-image (buffer-string) 'imagemagick 'data-p)
- (mm-create-image-xemacs (mm-handle-media-subtype handle))))))
+ (mm-create-image-xemacs
+ (mm-handle-media-subtype handle))))))
(when image
(setcar (cdr handle) (list "image/imagemagick"))
(mm-image-fit-p handle)))))))
(defvar mm-last-shell-command "")
(defvar mm-content-id-alist nil)
(defvar mm-postponed-undisplay-list nil)
+(defvar mm-inhibit-auto-detect-attachment nil)
;; According to RFC2046, in particular, in a digest, the default
;; Content-Type value for a body part is changed from "text/plain" to
(autoload 'message-fetch-field "message")
(defun mm-dissect-buffer (&optional no-strict-mime loose-mime from)
- "Dissect the current buffer and return a list of MIME handles."
+ "Dissect the current buffer and return a list of MIME handles.
+If NO-STRICT-MIME, don't require the message to have a
+MIME-Version header before proceeding."
(save-excursion
(let (ct ctl type subtype cte cd description id result)
(save-restriction
;; Guess what the type of application/octet-stream parts should
;; really be.
(let ((filename (cdr (assq 'filename (cdr cdl)))))
- (when (and (equal (car ctl) "application/octet-stream")
+ (when (and (not mm-inhibit-auto-detect-attachment)
+ (equal (car ctl) "application/octet-stream")
filename
(string-match "\\.\\([^.]+\\)$" filename))
(let ((new-type (mailcap-extension-to-mime (match-string 1 filename))))
(let ((handle
(mm-make-handle
(mm-copy-to-buffer) ctl cte nil cdl description nil id))
- (decoder (assoc (car ctl) mm-archive-decoders)))
+ (decoder (assoc (car ctl) (mm-archive-decoders))))
(if (and decoder
;; Do automatic decoding
(cadr decoder)
(goto-char (point-max))
(if (re-search-backward close-delimiter nil t)
(match-beginning 0)
- (point-max)))))
+ (point-max))))
+ (mm-inhibit-auto-detect-attachment
+ (equal (car ctl) "multipart/encrypted")))
(setq boundary (concat (regexp-quote boundary) "[ \t]*$"))
(while (and (< (point) end) (re-search-forward boundary end t))
(goto-char (match-beginning 0))
(let ((image (mm-get-image handle)))
(or (not image)
(if (featurep 'xemacs)
- ;; XEmacs' glyphs can actually tell us about their width, so
+ ;; XEmacs's glyphs can actually tell us about their width, so
;; let's be nice and smart about them.
(or mm-inline-large-images
(and (<= (glyph-width image) (window-pixel-width))