From: Katsumi Yamaoka Date: Tue, 30 Mar 2010 04:03:00 +0000 (+0000) Subject: 2010-03-30 Katsumi Yamaoka X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~637 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=20c0b2cea26e858fd8d8706f2851c73af673e677;p=emacs.git 2010-03-30 Katsumi Yamaoka * gnus-art.el (gnus-article-browse-delete-temp-files): Delete directories as well. (gnus-article-browse-html-parts): Work for images that do not specify file names; delete temp directory when quitting; insert header at the right place; use file: scheme for image files. 2010-03-30 Eric Schulte * gnus-art.el (gnus-article-browse-html-save-cid-image): New function. (gnus-article-browse-html-parts): Use it to make temporary cid image files in addition to html file so that browser may display them. --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 6786dff9b59..5fddceec0fb 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,17 @@ +2010-03-30 Katsumi Yamaoka + + * gnus-art.el (gnus-article-browse-delete-temp-files): Delete + directories as well. + (gnus-article-browse-html-parts): Work for images that do not specify + file names; delete temp directory when quitting; insert header at the + right place; use file: scheme for image files. + +2010-03-30 Eric Schulte + + * gnus-art.el (gnus-article-browse-html-save-cid-image): New function. + (gnus-article-browse-html-parts): Use it to make temporary cid image + files in addition to html file so that browser may display them. + 2010-03-29 Katsumi Yamaoka * mm-decode.el (mm-add-meta-html-tag): Fix regexp matching meta tag. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index b3b156f69dc..9288101759f 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -2819,12 +2819,43 @@ summary buffer." ;; `how' is neither `nil', `ask' nor `t' (i.e. `file'): (gnus-y-or-n-p (format "Delete temporary HTML file `%s'? " file)))) - (delete-file file))) + (if (file-directory-p file) + (gnus-delete-directory file) + (delete-file file)))) ;; Also remove file from the list when not deleted or if file doesn't ;; exist anymore. (setq gnus-article-browse-html-temp-list nil)) gnus-article-browse-html-temp-list) +(defun gnus-article-browse-html-save-cid-image (cid dir) + "Save CID contents to a file in DIR. Return file name." + (save-match-data + (gnus-with-article-buffer + (let (cid-handle cid-tmp-file cid-type) + (mapc + (lambda (handle) + (when (and (listp handle) + (stringp (car (last handle))) + (string= (format "<%s>" cid) + (car (last handle)))) + (setq cid-handle handle) + (setq cid-tmp-file + (expand-file-name + (or (mail-content-type-get + (mm-handle-disposition handle) 'filename) + (mail-content-type-get + (setq cid-type (mm-handle-type handle)) 'name) + (concat (make-temp-name "cid") + (or (car (rassoc (car cid-type) + mailcap-mime-extensions)) + ""))) + dir)))) + gnus-article-mime-handles) + (when (and cid-handle cid-tmp-file) + (mm-save-part-to-file cid-handle + cid-tmp-file) + (concat "file://" cid-tmp-file)))))) + (defun gnus-article-browse-html-parts (list &optional header) "View all \"text/html\" parts from LIST. Recurse into multiparts. The optional HEADER that should be a decoded @@ -2862,7 +2893,7 @@ message header will be added to the bodies of the \"text/html\" parts." ;; Add a meta html tag to specify charset and a header. (cond (header - (let (title eheader body hcharset coding) + (let (title eheader body hcharset coding cid-image-dir) (with-temp-buffer (mm-enable-multibyte) (setq case-fold-search t) @@ -2943,6 +2974,18 @@ message header will be added to the bodies of the \"text/html\" parts." (re-search-forward "]+\\|\\s-*\\)>\\s-*" nil t)) (insert eheader) + ;; resolve cid images + (while (re-search-forward + "