emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/gnus/gnus-art.el,v


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/gnus/gnus-art.el,v
Date: Thu, 06 Dec 2007 00:46:33 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Miles Bader <miles>     07/12/06 00:46:33

Index: gnus-art.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/gnus-art.el,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -b -r1.141 -r1.142
--- gnus-art.el 6 Dec 2007 00:20:59 -0000       1.141
+++ gnus-art.el 6 Dec 2007 00:46:32 -0000       1.142
@@ -2802,8 +2802,37 @@
                    (string-match "text/html" (car (mm-handle-type handle))))
               (let ((tmp-file (mm-make-temp-file
                                ;; Do we need to care for 8.3 filenames?
-                               "mm-" nil ".html")))
-                (mm-save-part-to-file handle tmp-file)
+                               "mm-" nil ".html"))
+                    (charset (mail-content-type-get (mm-handle-type handle)
+                                                    'charset)))
+                (if charset
+                    ;; Add a meta html tag to specify charset.
+                    (mm-with-unibyte-buffer
+                      (insert (with-current-buffer (mm-handle-buffer handle)
+                                (if (eq charset 'gnus-decoded)
+                                    (mm-encode-coding-string
+                                     (buffer-string)
+                                     (setq charset 'utf-8))
+                                  (buffer-string))))
+                      (setq charset (format "\
+<meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">"
+                                            charset))
+                      (goto-char (point-min))
+                      (let ((case-fold-search t))
+                        (cond (;; Don't modify existing meta tag.
+                               (re-search-forward "\
+<meta[\t\n\r ]+http-equiv=\"content-type\"[^>]+>"
+                                                  nil t))
+                              ((re-search-forward "<head>[\t\n\r ]*" nil t)
+                               (insert charset "\n"))
+                              (t
+                               (re-search-forward "\
+<html\\(?:[\t\n\r ]+[^>]+\\|[\t\n\r ]*\\)>[\t\n\r ]*"
+                                                  nil t)
+                               (insert "<head>\n" charset "\n</head>\n"))))
+                      (mm-write-region (point-min) (point-max)
+                                       tmp-file nil nil nil 'binary t))
+                  (mm-save-part-to-file handle tmp-file))
                 (add-to-list 'gnus-article-browse-html-temp-list tmp-file)
                 (add-hook 'gnus-summary-prepare-exit-hook
                           'gnus-article-browse-delete-temp-files)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]