Commit 20c0b2ce authored by Katsumi Yamaoka's avatar Katsumi Yamaoka

2010-03-30 Katsumi Yamaoka <yamaoka@jpl.org>

 * 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  <schulte.eric@gmail.com>

 * 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.
parent 32a8894e
2010-03-30 Katsumi Yamaoka <yamaoka@jpl.org>
* 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 <schulte.eric@gmail.com>
* 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 <yamaoka@jpl.org>
* mm-decode.el (mm-add-meta-html-tag): Fix regexp matching meta tag.
......
......@@ -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
"</head\\(?:\\s-+[^>]+\\|\\s-*\\)>\\s-*" nil t))
(insert eheader)
;; resolve cid images
(while (re-search-forward
"<img src=\"\\(cid:\\([^\"]+\\)\\)\""
nil t)
(unless cid-image-dir
(setq cid-image-dir (make-temp-file "cid" t))
(add-to-list 'gnus-article-browse-html-temp-list
cid-image-dir))
(replace-match
(gnus-article-browse-html-save-cid-image
(match-string 2) cid-image-dir)
nil nil nil 1))
(mm-write-region (point-min) (point-max)
tmp-file nil nil nil 'binary t))))
(charset
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment