changeset 35619:a670d2680870

Remove un-logged bogus changes from 2000-12-20. (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.
author Dave Love <fx@gnu.org>
date Fri, 26 Jan 2001 19:08:15 +0000
parents 04f8ee49a6db
children 654bde0f95a6
files lisp/gnus/qp.el
diffstat 1 files changed, 39 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/qp.el	Fri Jan 26 18:56:08 2001 +0000
+++ b/lisp/gnus/qp.el	Fri Jan 26 19:08:15 2001 +0000
@@ -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 @@
 	(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 @@
   "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 @@
 	       (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)