From 9331b3f125ee0bd41c8195e2c76c2f3a7991657b Mon Sep 17 00:00:00 2001 From: yamaoka Date: Thu, 8 Feb 2001 09:59:03 +0000 Subject: [PATCH] Synch with Oort Gnus. --- lisp/ChangeLog | 9 ++++++ lisp/mm-encode.el | 3 +- lisp/qp.el | 87 ++++++++++++++++++++++++++--------------------------- lisp/rfc2047.el | 4 ++- 4 files changed, 56 insertions(+), 47 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index dd278b9..d8e468c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2001-02-07 23:00:00 ShengHuo ZHU + + * qp.el (quoted-printable-encode-region): Make sure characters are + between 00 and FF. Don't check charset. + + * mm-encode.el (mm-encode-content-transfer-encoding): Use unibyte + in Emacs 20. + * rfc2047.el (rfc2047-q-encode-region): Ditto. + 2001-02-07 11:00:00 ShengHuo ZHU * message.el (message-make-forward-subject): Argument decoded. diff --git a/lisp/mm-encode.el b/lisp/mm-encode.el index 6baa7b7..f9acf6e 100644 --- a/lisp/mm-encode.el +++ b/lisp/mm-encode.el @@ -85,7 +85,8 @@ This variable should never be set directly, but bound before a call to (defun mm-encode-content-transfer-encoding (encoding &optional type) (cond ((eq encoding 'quoted-printable) - (quoted-printable-encode-region (point-min) (point-max) t)) + (mm-with-unibyte-current-buffer-mule4 + (quoted-printable-encode-region (point-min) (point-max) t))) ((eq encoding 'base64) (when (equal type "text/plain") (goto-char (point-min)) diff --git a/lisp/qp.el b/lisp/qp.el index 0e0f960..697de6c 100644 --- a/lisp/qp.el +++ b/lisp/qp.el @@ -99,55 +99,52 @@ encode lines starting with \"From\"." (save-excursion (save-restriction (narrow-to-region from to) - (mm-with-unibyte-current-buffer-mule4 - (if (and (not (featurep 'xemacs)) ;; Don't check XEmacs Mule. - (fboundp 'find-charset-region)) - (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))) + ;; We can live with characters between 00-FF. + (goto-char (point-min)) + (while (not (eobp)) + (if (>= (char-after) 256) + (error "Multibyte character in QP encoding region")) + (forward-char)) + ;; 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)) - (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)) - (delete-char 1))))) - (let ((mm-use-ultra-safe-encoding - (and (boundp 'mm-use-ultra-safe-encoding) - mm-use-ultra-safe-encoding))) - (when (or fold mm-use-ultra-safe-encoding) - (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 - (if (looking-at "From ") - (replace-match "From=20" nil t) - (if (looking-at "-") + (delete-char 1))))) + (let ((mm-use-ultra-safe-encoding + (and (boundp 'mm-use-ultra-safe-encoding) + mm-use-ultra-safe-encoding))) + (when (or fold mm-use-ultra-safe-encoding) + (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 + (if (looking-at "From ") + (replace-match "From=20" nil t) + (if (looking-at "-") (replace-match "=2D" nil t)))) - (end-of-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))))))))) + (end-of-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." diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el index 3aa36fd..8214e20 100644 --- a/lisp/rfc2047.el +++ b/lisp/rfc2047.el @@ -413,7 +413,9 @@ The buffer may be narrowed." (gnus-point-at-bol)))) (while alist (when (looking-at (caar alist)) - (quoted-printable-encode-region b e nil (cdar alist)) + (mm-with-unibyte-current-buffer-mule4 + (quoted-printable-encode-region + (point-min) (point-max) nil (cdar alist))) (subst-char-in-region (point-min) (point-max) ? ?_) (setq alist nil)) (pop alist)) -- 1.7.10.4