]> code.delx.au - gnu-emacs/commitdiff
Remove un-logged bogus changes from 2000-12-20.
authorDave Love <fx@gnu.org>
Fri, 26 Jan 2001 19:08:15 +0000 (19:08 +0000)
committerDave Love <fx@gnu.org>
Fri, 26 Jan 2001 19:08:15 +0000 (19:08 +0000)
(quoted-printable-encode-region): Doc fix.  Don't call
string-as-multibyte on class.  Clarify line-folding.
(quoted-printable-encode-string): Make temp buffer inherit
string's multibyteness.

lisp/gnus/qp.el

index a5993de136f06ec3fcd0276db95ef432ba033d0a..28938fd78efaf349e5417a9a265eb2a5f1ff088d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; qp.el --- Quoted-Printable functions
 
-;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: mail, extensions
@@ -53,7 +53,7 @@ coding-system."
        (if coding-system
            (mm-encode-coding-region (point-min) (point-max) coding-system))
        (goto-char (point-min))
-       (while (and (skip-chars-forward "^=" to)
+       (while (and (skip-chars-forward "^=")
                    (not (eobp)))
          (cond ((eq (char-after (1+ (point))) ?\n)
                 (delete-char 2))
@@ -83,34 +83,40 @@ If CODING-SYSTEM is non-nil, decode the region with coding-system."
   "Quoted-printable encode the region between FROM and TO per RFC 2045.
 
 If FOLD, fold long lines at 76 characters (as required by the RFC).
-If CLASS is non-nil, translate the characters matched by that class in
-the form expected by `skip-chars-forward'.
+If CLASS is non-nil, translate the characters not matched by that
+regexp class, which is in the form expected by `skip-chars-forward'.
+You should probably avoid non-ASCII characters in this arg.
 
 If `mm-use-ultra-safe-encoding' is set, fold lines unconditionally and
 encode lines starting with \"From\"."
   (interactive "r")
+  ;; Fixme: what should this do in XEmacs/Mule?
+  (if (fboundp 'find-charset-region)   ; else XEmacs, non-Mule
+      (if (delq 'unknown               ; Emacs 20 unibyte
+               (delq 'eight-bit-graphic ; Emacs 21
+                     (delq 'eight-bit-control
+                           (delq 'ascii (find-charset-region from to)))))
+         (error "Multibyte character in QP encoding region")))
   (unless class
     ;; Avoid using 8bit characters. = is \075.
     ;; Equivalent to "^\000-\007\013\015-\037\200-\377="
     (setq class "\010-\012\014\040-\074\076-\177"))
-  (if (fboundp 'string-as-multibyte)
-      (setq class (string-as-multibyte class)))
   (save-excursion
     (save-restriction
       (narrow-to-region from to)
-      (mm-with-unibyte-current-buffer-mule4
-       ;; Fixme: what should this do in XEmacs/Mule?
-       (if (fboundp 'find-charset-region)      ; else XEmacs, non-Mule
-           (if (delq 'unknown          ; Emacs 20 unibyte
-                     (delq 'eight-bit-graphic ; Emacs 21
-                           (delq 'eight-bit-control
-                                 (delq 'ascii 
-                                       (find-charset-region from to)))))
-               (error "Multibyte character in QP encoding region")))
-       ;; Encode all the non-ascii and control characters.
-       (goto-char (point-min))
-       (while (and (skip-chars-forward class)
-                   (not (eobp)))
+      ;; Encode all the non-ascii and control characters.
+      (goto-char (point-min))
+      (while (and (skip-chars-forward class)
+                 (not (eobp)))
+       (insert
+        (prog1
+            (format "=%02X" (char-after))
+          (delete-char 1))))
+      ;; Encode white space at the end of lines.
+      (goto-char (point-min))
+      (while (re-search-forward "[ \t]+$" nil t)
+       (goto-char (match-beginning 0))
+       (while (not (eolp))
          (insert
           (prog1
               (format "=%02X" (char-after))
@@ -128,34 +134,33 @@ encode lines starting with \"From\"."
               (and (boundp 'mm-use-ultra-safe-encoding)
                    mm-use-ultra-safe-encoding)))
          (when (or fold mm-use-ultra-safe-encoding)
-           ;; Fold long lines.
-           (let ((tab-width 1))                ; HTAB is one character.
+           (let ((tab-width 1))        ; HTAB is one character.
              (goto-char (point-min))
              (while (not (eobp))
                ;; In ultra-safe mode, encode "From " at the beginning
                ;; of a line.
                (when mm-use-ultra-safe-encoding
-                 (beginning-of-line)
                  (if (looking-at "From ")
                      (replace-match "From=20" nil t)
                    (if (looking-at "-")
                        (replace-match "=2D" nil t))))
                (end-of-line)
-             (while (> (current-column) 76) ; tab-width must be 1.
-               (beginning-of-line)
-               (forward-char 75)       ; 75 chars plus an "="
-               (search-backward "=" (- (point) 2) t)
-               (insert "=\n")
-               (end-of-line))
-             (unless (eobp)
-               (forward-line))))))))))
+               ;; Fold long lines.
+               (while (> (current-column) 76) ; tab-width must be 1.
+                 (beginning-of-line)
+                 (forward-char 75)     ; 75 chars plus an "="
+                 (search-backward "=" (- (point) 2) t)
+                 (insert "=\n")
+                 (end-of-line))
+               (forward-line)))))))))
 
 (defun quoted-printable-encode-string (string)
   "Encode the STRING as quoted-printable and return the result."
-  (with-temp-buffer
-    (insert string)
-    (quoted-printable-encode-region (point-min) (point-max))
-    (buffer-string)))
+  (let ((default-enable-multibyte-characters (mm-multibyte-string-p string)))
+    (with-temp-buffer
+      (insert string)
+      (quoted-printable-encode-region (point-min) (point-max))
+      (buffer-string))))
 
 (provide 'qp)