# HG changeset patch # User Chong Yidong # Date 1250433223 0 # Node ID 81498fb7b017fa7f952dc39c4643637466ab0279 # Parent 75f3a35d516efeee38082772eb0f264f0f6d9267 * calendar/parse-time.el (parse-time-string-chars): Compute using character classes (Bug#3190). diff -r 75f3a35d516e -r 81498fb7b017 lisp/ChangeLog --- a/lisp/ChangeLog Sun Aug 16 14:04:25 2009 +0000 +++ b/lisp/ChangeLog Sun Aug 16 14:33:43 2009 +0000 @@ -1,5 +1,8 @@ 2009-08-16 Chong Yidong + * calendar/parse-time.el (parse-time-string-chars): Compute using + character classes (Bug#3190). + * progmodes/sh-script.el (sh-maybe-here-document): Avoid inserting another heredoc if the user adds another < (Bug#3226). diff -r 75f3a35d516e -r 81498fb7b017 lisp/calendar/parse-time.el --- a/lisp/calendar/parse-time.el Sun Aug 16 14:04:25 2009 +0000 +++ b/lisp/calendar/parse-time.el Sun Aug 16 14:33:43 2009 +0000 @@ -37,7 +37,6 @@ (eval-when-compile (require 'cl)) ;and ah ain't kiddin' 'bout it -(defvar parse-time-syntax (make-vector 256 nil)) (defvar parse-time-digits (make-vector 256 nil)) ;; Byte-compiler warnings @@ -48,24 +47,17 @@ (loop for i from ?0 to ?9 do (aset parse-time-digits i (- i ?0)))) -(unless (aref parse-time-syntax ?0) - (loop for i from ?0 to ?9 - do (aset parse-time-syntax i ?0)) - (loop for i from ?A to ?Z - do (aset parse-time-syntax i ?A)) - (loop for i from ?a to ?z - do (aset parse-time-syntax i ?a)) - (aset parse-time-syntax ?+ 1) - (aset parse-time-syntax ?- -1) - (aset parse-time-syntax ?: ?d) - ) - (defsubst digit-char-p (char) (aref parse-time-digits char)) (defsubst parse-time-string-chars (char) - (and (< char (length parse-time-syntax)) - (aref parse-time-syntax char))) + (let (case-fold-search str) + (cond ((eq char ?+) 1) + ((eq char ?-) -1) + ((eq char ?:) ?d) + ((string-match "[[:upper:]]" (setq str (string char))) ?A) + ((string-match "[[:lower:]]" str) ?a) + ((string-match "[[:digit:]]" str) ?0)))) (put 'parse-error 'error-conditions '(parse-error error)) (put 'parse-error 'error-message "Parsing error")