X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fmm-extern.el;h=2f75139497e95978707180410c02ebe7a2dcfc19;hb=6c5918c1b3e51941c22e4acebc9b3ddef2c513bd;hp=2fb535bf81335277d045f44c0633f3dea71ed50c;hpb=475477c32fe17168798de0e980f5945f958a120b;p=gnus diff --git a/lisp/mm-extern.el b/lisp/mm-extern.el index 2fb535bf8..2f7513949 100644 --- a/lisp/mm-extern.el +++ b/lisp/mm-extern.el @@ -1,5 +1,7 @@ ;;; mm-extern.el --- showing message/external-body -;; Copyright (C) 2000 Free Software Foundation, Inc. + +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: message external-body @@ -18,18 +20,20 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: -(eval-when-compile - (require 'cl)) +(eval-when-compile (require 'cl)) (require 'mm-util) (require 'mm-decode) +(require 'mm-url) + +(defvar gnus-article-mime-handles) (defvar mm-extern-function-alist '((local-file . mm-extern-local-file) @@ -48,23 +52,22 @@ (let ((name (cdr (assq 'name (cdr (mm-handle-type handle))))) (coding-system-for-read mm-binary-coding-system)) (unless name - (error "The filename is not specified.")) - (mm-disable-multibyte-mule4) + (error "The filename is not specified")) + (mm-disable-multibyte) (if (file-exists-p name) (mm-insert-file-contents name nil nil nil nil t) - (error "The file is gone.")))) + (error "File %s is gone" name)))) (defun mm-extern-url (handle) (erase-buffer) - (require 'url) (let ((url (cdr (assq 'url (cdr (mm-handle-type handle))))) (name buffer-file-name) (coding-system-for-read mm-binary-coding-system)) (unless url - (error "URL is not specified.")) - (mm-with-unibyte-current-buffer-mule4 - (url-insert-file-contents url)) - (mm-disable-multibyte-mule4) + (error "URL is not specified")) + (mm-with-unibyte-current-buffer + (mm-url-insert-file-contents url)) + (mm-disable-multibyte) (setq buffer-file-name name))) (defun mm-extern-anon-ftp (handle) @@ -79,8 +82,8 @@ "@" site ":" directory "/" name)) (coding-system-for-read mm-binary-coding-system)) (unless name - (error "The filename is not specified.")) - (mm-disable-multibyte-mule4) + (error "The filename is not specified")) + (mm-disable-multibyte) (mm-insert-file-contents path nil nil nil nil t))) (defun mm-extern-ftp (handle) @@ -99,7 +102,7 @@ (message-mail server subject) (message-goto-body) (delete-region (point) (point-max)) - (insert-buffer buf) + (insert-buffer-substring buf) (message "Requesting external body...") (message-send-and-exit) (setq info "Request is sent.") @@ -111,18 +114,21 @@ ;;;###autoload (defun mm-inline-external-body (handle &optional no-display) "Show the external-body part of HANDLE. -This function replaces the buffer of HANDLE with a buffer contains +This function replaces the buffer of HANDLE with a buffer contains the entire message. If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." - (let* ((access-type (cdr (assq 'access-type + (let* ((access-type (cdr (assq 'access-type (cdr (mm-handle-type handle))))) - (func (cdr (assq (intern (downcase access-type)) + (func (cdr (assq (intern + (downcase + (or access-type + (error "Couldn't find access type")))) mm-extern-function-alist))) gnus-displaying-mime buf handles) (unless (mm-handle-cache handle) (unless func - (error (format "Access type (%s) is not supported." access-type))) + (error "Access type (%s) is not supported" access-type)) (with-temp-buffer (mm-insert-part handle) (goto-char (point-max)) @@ -130,7 +136,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." (setq handles (mm-dissect-buffer t))) (unless (bufferp (car handles)) (mm-destroy-parts handles) - (error "Multipart external body is not supported.")) + (error "Multipart external body is not supported")) (save-excursion ;; single part (set-buffer (setq buf (mm-handle-buffer handles))) (let (good) @@ -141,7 +147,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." (unless good (mm-destroy-parts handles)))) (mm-handle-set-cache handle handles)) - (push handles gnus-article-mime-handles)) + (setq gnus-article-mime-handles + (mm-merge-handles gnus-article-mime-handles handles))) (unless no-display (save-excursion (save-restriction @@ -160,4 +167,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." (error nil)) (delete-region ,(point-min-marker) ,(point-max-marker)))))))))) -;; mm-extern.el ends here +(provide 'mm-extern) + +;;; arch-tag: 9653808e-14d9-4172-86e6-adceaa05378e +;;; mm-extern.el ends here