(defun): Remove debug.
[gnus] / lisp / rfc2047.el
index e3eb8f4..fdce08d 100644 (file)
@@ -27,7 +27,9 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl))
+(eval-when-compile
+  (require 'cl)
+  (defvar message-posting-charset))
 
 (require 'qp)
 (require 'mm-util)
@@ -65,8 +67,8 @@ The values can be:
     (iso-8859-4 . Q)
     (iso-8859-5 . B)
     (koi8-r . B)
-    (iso-8859-7 . Q)
-    (iso-8859-8 . Q)
+    (iso-8859-7 . B)
+    (iso-8859-8 . B)
     (iso-8859-9 . Q)
     (iso-8859-14 . Q)
     (iso-8859-15 . Q)
@@ -81,7 +83,8 @@ The values can be:
     (iso-2022-jp-2 . B)
     (iso-2022-int-1 . B))
   "Alist of MIME charsets to RFC2047 encodings.
-Valid encodings are nil, `Q' and `B'.")
+Valid encodings are nil, `Q' and `B'.  These indicate binary (no) encoding,
+quoted-printable and base64 respectively.")
 
 (defvar rfc2047-encoding-function-alist
   '((Q . rfc2047-q-encode-region)
@@ -184,7 +187,7 @@ Should be called narrowed to the head of the message."
             ;; left the old code commented out below.
             ;; -- Per Abrahamsen <abraham@dina.kvl.dk> Date: 2001-10-07.
             ((null method)
-             (when (delq 'ascii 
+             (when (delq 'ascii
                          (mm-find-charset-region (point-min) (point-max)))
                (rfc2047-encode-region (point-min) (point-max))))
 ;;;         ((null method)
@@ -433,18 +436,15 @@ The buffer may be narrowed."
     (let ((bol (save-restriction
                 (widen)
                 (gnus-point-at-bol)))
-         (eol (gnus-point-at-eol))
-         leading)
+         (eol (gnus-point-at-eol)))
       (forward-line 1)
       (while (not (eobp))
-       (looking-at "[ \t]*")
-       (setq leading (- (match-end 0) (match-beginning 0)))
-       (if (< (- (gnus-point-at-eol) bol leading) 76)
-           (progn
-             (goto-char eol)
-             (delete-region eol (progn
-                                  (skip-chars-forward " \t\n\r")
-                                  (1- (point)))))
+       (if (and (looking-at "[ \t]")
+                (< (- (gnus-point-at-eol) bol) 76))
+           (delete-region eol (progn
+                                (goto-char eol)
+                                (skip-chars-forward "\r\n")
+                                (point)))
          (setq bol (gnus-point-at-bol)))
        (setq eol (gnus-point-at-eol))
        (forward-line 1)))))
@@ -520,8 +520,17 @@ The buffer may be narrowed."
                   (prog1
                       (match-string 0)
                     (delete-region (match-beginning 0) (match-end 0)))))
+         ;; Remove newlines between decoded words.  Though such things
+         ;; must not be essentially there.
+         (save-restriction
+           (narrow-to-region e (point))
+           (goto-char e)
+           (while (re-search-forward "[\n\r]+" nil t)
+             (replace-match " "))
+           (goto-char (point-max)))
          (when (and (mm-multibyte-p)
                     mail-parse-charset
+                    (not (eq mail-parse-charset 'us-ascii))
                     (not (eq mail-parse-charset 'gnus-decoded)))
            (mm-decode-coding-region b e mail-parse-charset))
          (setq b (point)))
@@ -529,21 +538,25 @@ The buffer may be narrowed."
                   mail-parse-charset
                   (not (eq mail-parse-charset 'us-ascii))
                   (not (eq mail-parse-charset 'gnus-decoded)))
-         (mm-decode-coding-region b (point-max) mail-parse-charset))
-       (rfc2047-unfold-region (point-min) (point-max))))))
+         (mm-decode-coding-region b (point-max) mail-parse-charset))))))
 
 (defun rfc2047-decode-string (string)
   "Decode the quoted-printable-encoded STRING and return the results."
-  (if (string-match "=\\?" string)
-      (let ((m (mm-multibyte-p)))
+  (let ((m (mm-multibyte-p)))
+    (if (string-match "=\\?" string)
        (with-temp-buffer
          (when m
            (mm-enable-multibyte))
          (insert string)
          (inline
            (rfc2047-decode-region (point-min) (point-max)))
-         (buffer-string)))
-    string))
+         (buffer-string))
+      (if (and m
+              mail-parse-charset
+              (not (eq mail-parse-charset 'us-ascii))
+              (not (eq mail-parse-charset 'gnus-decoded)))
+         (mm-decode-coding-string string mail-parse-charset)
+       string))))
 
 (defun rfc2047-parse-and-decode (word)
   "Decode WORD and return it if it is an encoded word.