# HG changeset patch # User Katsumi Yamaoka # Date 1269921898 0 # Node ID 52cc880eaf3aea2df71a8dec811705e937d0e216 # Parent dbd787c249c5494c6912b98b6120617ae5683b95# Parent 3ca642fe505fb6b330e7a64399f848d64dfdc5c3 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 -r dbd787c249c5 -r 52cc880eaf3a lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Mar 29 19:47:23 2010 -0700 +++ b/lisp/gnus/ChangeLog Tue Mar 30 04:04:58 2010 +0000 @@ -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 -r dbd787c249c5 -r 52cc880eaf3a lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Mar 29 19:47:23 2010 -0700 +++ b/lisp/gnus/gnus-art.el Tue Mar 30 04:04:58 2010 +0000 @@ -2819,12 +2819,43 @@ ;; `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 @@ ;; 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 @@ (re-search-forward "]+\\|\\s-*\\)>\\s-*" nil t)) (insert eheader) + ;; resolve cid images + (while (re-search-forward + "