| author | Stefan Monnier <monnier@iro.umontreal.ca> | 2012-09-10 05:00:20 (GMT) |
|---|---|---|
| committer | Katsumi Yamaoka <yamaoka@jpl.org> | 2012-09-10 05:00:20 (GMT) |
| commit | d1a9bfb4363aceb094957e8d94cfca73be3e2c13 (patch) (side-by-side diff) | |
| tree | 377946bb2f3e93829e0ef99d5e8bf14db0638cad | |
| parent | 2df323a009ddd334ef992f32b7a8441daa6b6256 (diff) | |
| download | gnus-d1a9bfb4363aceb094957e8d94cfca73be3e2c13.zip | |
qp.el (quoted-printable-decode-region): Inline+CSE+strength-reduction
| -rw-r--r-- | lisp/ChangeLog | 4 | ||||
| -rw-r--r-- | lisp/qp.el | 20 |
2 files changed, 14 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1f9de72..90e1db7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-09-10 Stefan Monnier <monnier@iro.umontreal.ca> + + * qp.el (quoted-printable-decode-region): Inline+CSE+strength-reduction. + 2012-09-07 Chong Yidong <cyd@gnu.org> * gnus-util.el @@ -53,14 +53,7 @@ them into characters should be done separately." ;; or both of which are lowercase letters in "abcdef", is ;; formally illegal. A robust implementation might choose to ;; recognize them as the corresponding uppercase letters.'' - (let ((case-fold-search t) - (decode-hex #'(lambda (n1 n2) - (+ (* (if (<= n1 ?9) (- n1 ?0) - (if (<= n1 ?F) (+ (- n1 ?A) 10) - (+ (- n1 ?a) 10))) 16) - (if (<= n2 ?9) (- n2 ?0) - (if (<= n2 ?F) (+ (- n2 ?A) 10) - (+ (- n2 ?a) 10))))))) + (let ((case-fold-search t)) (narrow-to-region from to) ;; Do this in case we're called from Gnus, say, in a buffer ;; which already contains non-ASCII characters which would @@ -78,8 +71,15 @@ them into characters should be done separately." (let* ((n (/ (- (match-end 0) (point)) 3)) (str (make-string n 0))) (dotimes (i n) - (aset str i (funcall decode-hex (char-after (1+ (point))) - (char-after (+ 2 (point))))) + (let ((n1 (char-after (1+ (point)))) + (n2 (char-after (+ 2 (point))))) + (aset str i + (+ (* 16 (- n1 (if (<= n1 ?9) ?0 + (if (<= n1 ?F) (- ?A 10) + (- ?a 10))))) + (- n2 (if (<= n2 ?9) ?0 + (if (<= n2 ?F) (- ?A 10) + (- ?a 10))))))) (forward-char 3)) (delete-region (match-beginning 0) (match-end 0)) (insert str))) |
