Add arch taglines
[gnus] / lisp / mm-bodies.el
index 219c903..727688f 100644 (file)
 
 ;;; Code:
 
-(eval-and-compile
-  (or (fboundp  'base64-decode-region)
-      (require 'base64)))
-
 (eval-when-compile
   (defvar mm-uu-decode-function)
   (defvar mm-uu-binhex-decode-function))
 (require 'rfc2047)
 (require 'mm-encode)
 
-;; 8bit treatment gets any char except: 0x32 - 0x7f, CR, LF, TAB, BEL,
+;; 8bit treatment gets any char except: 0x32 - 0x7f, LF, TAB, BEL,
 ;; BS, vertical TAB, form feed, and ^_
-(defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f")
+;;
+;; Note that CR is *not* included, as that would allow a non-paired CR
+;; in the body contrary to RFC 2822:
+;;
+;;   - CR and LF MUST only occur together as CRLF; they MUST NOT
+;;     appear independently in the body.
+
+(defvar mm-7bit-chars "\x20-\x7f\n\t\x7\x8\xb\xc\x1f")
 
 (defcustom mm-body-charset-encoding-alist
   '((iso-2022-jp . 7bit)
@@ -49,6 +52,8 @@
     ;; known to break servers.
     ;; Note: UTF-16 variants are invalid for text parts [RFC 2781],
     ;; so this can't happen :-/.
+    ;; PPS: Yes, it can happen if the user specifies UTF-16 in the MML
+    ;; markup. - jh.
     (utf-16 . base64)
     (utf-16be . base64)
     (utf-16le . base64))
@@ -109,7 +114,7 @@ If no encoding was done, nil is returned."
           ))))))
 
 (defun mm-long-lines-p (length)
-  "Say whether any of the lines in the buffer is longer than LINES."
+  "Say whether any of the lines in the buffer is longer than LENGTH."
   (save-excursion
     (goto-char (point-min))
     (end-of-line)
@@ -130,8 +135,9 @@ If no encoding was done, nil is returned."
        (longp (mm-long-lines-p 1000)))
     (require 'message)
     (cond
-     ((and (not mm-use-ultra-safe-encoding)
-          (not longp)
+     ((and (not longp)
+          (not (and mm-use-ultra-safe-encoding
+                    (save-excursion (re-search-forward "^From " nil t))))
           (eq bits '7bit))
       bits)
      ((and (not mm-use-ultra-safe-encoding)
@@ -286,4 +292,5 @@ decoding.  If it is nil, default to `mail-parse-charset'."
 
 (provide 'mm-bodies)
 
+;;; arch-tag: 41104bb6-4443-4ca9-8d5c-ff87ecf27d8d
 ;;; mm-bodies.el ends here