changeset 562:71ef25276c57

Merge changes from FSF.
author Jim Meyering <jim@meyering.net>
date Sun, 10 Mar 1996 05:00:20 +0000
parents 4b31356e49f4
children f4ed4c5ce59d
files lib/getdate.y
diffstat 1 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lib/getdate.y
+++ b/lib/getdate.y
@@ -15,6 +15,10 @@
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
+
+#ifdef FORCE_ALLOCA_H
+#include <alloca.h>
+#endif
 #endif
 
 /* Since the code of getdate.y is not included in the Emacs executable
@@ -90,6 +94,7 @@
 static int yyerror ();
 
 #define EPOCH		1970
+#define DOOMSDAY	2038
 #define HOUR(x)		((time_t)(x) * 60)
 #define SECSPERDAY	(24L * 60L * 60L)
 
@@ -242,7 +247,7 @@
 	    yyDayOrdinal = 1;
 	    yyDayNumber = $1;
 	}
-	| tUNUMBER tDAY { /* FIXME */
+	| tUNUMBER tDAY {
 	    yyDayOrdinal = $1;
 	    yyDayNumber = $2;
 	}
@@ -279,7 +284,6 @@
 	    yyYear = $4;
 	}
 	| tUNUMBER tMONTH {
-	    /* FIXME: `date -d 'next october'' is interpreted as 2 october.  */
 	    yyMonth = $2;
 	    yyDay = $1;
 	}
@@ -315,10 +319,10 @@
 	| tSEC_UNIT {
 	    yyRelSeconds++;
 	}
-	| tSNUMBER tMONTH_UNIT { /* FIXME */
+	| tSNUMBER tMONTH_UNIT {
 	    yyRelMonth += $1 * $2;
 	}
-	| tUNUMBER tMONTH_UNIT { /* FIXME */
+	| tUNUMBER tMONTH_UNIT {
 	    yyRelMonth += $1 * $2;
 	}
 	| tMONTH_UNIT {
@@ -613,11 +617,13 @@
 
   if (Year < 0)
     Year = -Year;
-  if (Year < 100)
+  if (Year < DOOMSDAY-2000)
+    Year += 2000;
+  else if (Year < 100)
     Year += 1900;
   DaysInMonth[1] = Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0)
     ? 29 : 28;
-  if (Year < EPOCH || Year > 2037
+  if (Year < EPOCH || Year >= DOOMSDAY
       || Month < 1 || Month > 12
       /* Lint fluff:  "conversion from long may lose accuracy" */
       || Day < 1 || Day > DaysInMonth[(int)--Month])