Fix my last change.
[gnus] / lisp / parse-time.el
index 2871623..06e35d3 100644 (file)
@@ -1,6 +1,6 @@
 ;;; parse-time.el --- Parsing time strings
 
-;; Copyright (C) 1996 by Free Software Foundation, Inc.
+;; Copyright (C) 1996,2000 by Free Software Foundation, Inc.
 
 ;; Author: Erik Naggum <erik@arcana.naggum.no>
 ;; Keywords: util
@@ -36,7 +36,7 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl))              ;and ah ain't kiddin' 'bout it
+(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))
 
 (unless (aref parse-time-digits ?0)
   (loop for i from ?0 to ?9
-       do (aset parse-time-digits i (- i ?0))))
+    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))
+    do (aset parse-time-syntax i ?0))
   (loop for i from ?A to ?Z
-       do (aset parse-time-syntax i ?A))
+    do (aset parse-time-syntax i ?A))
   (loop for i from ?a to ?z
-       do (aset parse-time-syntax i ?a))
+    do (aset parse-time-syntax i ?a))
   (aset parse-time-syntax ?+ 1)
   (aset parse-time-syntax ?- -1)
   (aset parse-time-syntax ?: ?d)
   `(((6) parse-time-weekdays)
     ((3) (1 31))
     ((4) parse-time-months)
-    ((5) (1970 2038))
+    ((5) (100 4038))
     ((2 1 0)
      ,#'(lambda () (and (stringp elt)
                        (= (length elt) 8)
     ((2 1 0)
      ,#'(lambda () (and (stringp elt) (= (length elt) 5) (= (aref elt 2) ?:)))
      [0 2] [3 5] ,#'(lambda () 0))
-    ((5) (70 99) ,#'(lambda () (+ 1900 elt))))
+    ((2 1 0)
+     ,#'(lambda () (and (stringp elt)
+                       (= (length elt) 4)
+                       (= (aref elt 1) ?:)))
+     [0 1] [2 4] ,#'(lambda () 0))
+    ((2 1 0)
+     ,#'(lambda () (and (stringp elt)
+                       (= (length elt) 7)
+                       (= (aref elt 1) ?:)))
+     [0 1] [2 4] [5 7])
+    ((5) (50 110) ,#'(lambda () (+ 1900 elt)))
+    ((5) (0 49) ,#'(lambda () (+ 2000 elt))))
   "(slots predicate extractor...)")
 
 (defun parse-time-string (string)
   "Parse the time-string STRING into (SEC MIN HOUR DAY MON YEAR DOW DST TZ).
 The values are identical to those of `decode-time', but any values that are
 unknown are returned as nil."
-  (let ((time (list nil nil nil nil nil nil nil nil nil nil))
+  (let ((time (list nil nil nil nil nil nil nil nil nil))
        (temp (parse-time-tokenize (downcase string))))
     (while temp
       (let ((elt (pop temp))