APPROVE COMMIT
NOTE: This patch has been committed.
xemacs-packages/pgg/ChangeLog addition:
2011-03-12 Aidan Kehoe <kehoea(a)parhasard.net>
* pgg-parse.el (pgg-parse-crc24, pgg-parse-crc24-string):
Call #'define-ccl-program at compile time, if available, not at
runtime. Addresses Marcus Crestani's problem of
http://mid.gmane.org/vpdhcif81o9.fsf@informatik.uni-tuebingen.de .
XEmacs Packages source patch:
Diff command: cvs -q diff -Nu
Files affected: xemacs-packages/pgg/pgg-parse.el
Index: xemacs-packages/pgg/pgg-parse.el
===================================================================
RCS file: /cvsroot/xemacs/XEmacs/packages/xemacs-packages/pgg/pgg-parse.el,v
retrieving revision 1.7
diff -u -u -r1.7 pgg-parse.el
--- xemacs-packages/pgg/pgg-parse.el 26 Jan 2009 09:28:16 -0000 1.7
+++ xemacs-packages/pgg/pgg-parse.el 12 Mar 2011 16:46:44 -0000
@@ -35,7 +35,7 @@
;;; Code:
-(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl) (when (featurep 'mule) (require 'ccl)))
(defgroup pgg-parse ()
"OpenPGP packet parsing."
@@ -159,25 +159,43 @@
(defmacro pgg-set-alist (alist key value)
`(setq ,alist (nconc ,alist (list (cons ,key ,value)))))
-(when (fboundp 'define-ccl-program)
+(defconst pgg-parse-crc24
+ (eval-when-compile
+ (let ((pre-existing
+ [1 30 14 114744 114775 0 161 131127 1 148217 15 82167 1 1848
+ 131159 1 1595 5 256 114743 390 114775 19707 1467 16 7 183 1 -5628
+ -7164 22]))
+ (when (fboundp 'ccl-compile)
+ (assert
+ (equal
+ pre-existing
+ (ccl-compile
+ '(1
+ ((loop
+ (read r0) (r1 ^= r0) (r2 ^= 0)
+ (r5 = 0)
+ (loop
+ (r1 <<= 1)
+ (r1 += ((r2 >> 15) & 1))
+ (r2 <<= 1)
+ (if (r1 & 256)
+ ((r1 ^= 390) (r2 ^= 19707)))
+ (if (r5 < 7)
+ ((r5 += 1)
+ (repeat))))
+ (repeat))))))
+ nil
+ "The pre-compiled CCL program appears broken, or the implementation
+of `ccl-compile' has changed compared to when this code was written. "))
+ pre-existing))
+ "A CCL program to parse CRC 24 checksums. See `define-ccl-program'.")
+
+(if (fboundp 'register-ccl-program)
+ (put 'pgg-parse-crc24 'ccl-program-idx
+ (register-ccl-program 'pgg-parse-crc24 pgg-parse-crc24)))
- (define-ccl-program pgg-parse-crc24
- '(1
- ((loop
- (read r0) (r1 ^= r0) (r2 ^= 0)
- (r5 = 0)
- (loop
- (r1 <<= 1)
- (r1 += ((r2 >> 15) & 1))
- (r2 <<= 1)
- (if (r1 & 256)
- ((r1 ^= 390) (r2 ^= 19707)))
- (if (r5 < 7)
- ((r5 += 1)
- (repeat))))
- (repeat)))))
-
- (defun pgg-parse-crc24-string (string)
+(defun pgg-parse-crc24-string (string)
+ (when (fboundp 'ccl-execute-on-string)
(let ((h (vector nil 183 1230 nil nil nil nil nil nil)))
(ccl-execute-on-string pgg-parse-crc24 h string)
(format "%c%c%c"
--
“Apart from the nine-banded armadillo, man is the only natural host of
Mycobacterium leprae, although it can be grown in the footpads of mice.”
-- Kumar & Clark, Clinical Medicine, summarising improbable leprosy research
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches