[PATCH] Check CCL available at run time, not compile time, in PGG.
Aidan Kehoe
kehoea at parhasard.net
Sun Dec 23 09:46:16 EST 2007
Simon, this came up on xemacs-beta recently; see
http://mid.gmane.org/vpdhcif81o9.fsf@informatik.uni-tuebingen.de and the
associated thread for details. If you’re not actively maintaining the XEmacs
PGG package, please say so, and I’ll see can I fight with the CVS
infrastructure to let me commit the patch.
2007-12-23 Aidan Kehoe <kehoea at parhasard.net>
* pgg-parse.el (pgg-parse-crc24):
Provide the CCL program, independent of whether
#'define-ccl-program was available at compile time.
* pgg-parse.el (pgg-parse-crc24-string):
Only call the CCL program if #'ccl-execute-on-string is available,
which it will be, if the current emacs has CCL support.
--- pgg-parse.el~ Fri Sep 23 15:31:43 2005
+++ pgg-parse.el Wed Dec 19 11:42:59 2007
@@ -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,42 @@
(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 versus to when this code was written. "))
+ pre-existing))
+ "A CCL program to parse CRC 24 checksums. See `define-ccl-program'.")
- (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)))))
+(put 'pgg-parse-crc24 'ccl-program-idx
+ (register-ccl-program 'pgg-parse-crc24 pgg-parse-crc24))
- (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"
> --- pgg-parse.el~ Fri Sep 23 15:31:43 2005
> +++ pgg-parse.el Wed Dec 19 11:42:59 2007
> @@ -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,42 @@
> (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 versus to when this code was written. "))
> + pre-existing))
> + "A CCL program to parse CRC 24 checksums. See `define-ccl-program'.")
>
> - (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)))))
> +(put 'pgg-parse-crc24 'ccl-program-idx
> + (register-ccl-program 'pgg-parse-crc24 pgg-parse-crc24))
>
> - (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"
>
>
> --
> ¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
> precipitadamente de la aldea por culpa de la escasez de rinocerontes?
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
More information about the XEmacs-Beta
mailing list