fb4d930
Index: shadow-4.5/lib/getdate.y
41955fa
===================================================================
fb4d930
--- shadow-4.5.orig/lib/getdate.y
fb4d930
+++ shadow-4.5/lib/getdate.y
4c1ef1c
@@ -152,6 +152,7 @@ static int	yyHaveDay;
4c1ef1c
 static int	yyHaveRel;
4c1ef1c
 static int	yyHaveTime;
4c1ef1c
 static int	yyHaveZone;
4c1ef1c
+static int      yyHaveYear;
4c1ef1c
 static int	yyTimezone;
4c1ef1c
 static int	yyDay;
4c1ef1c
 static int	yyHour;
4c1ef1c
@@ -293,18 +294,21 @@ date	: tUNUMBER '/' tUNUMBER {
4c1ef1c
 	      yyDay = $3;
4c1ef1c
 	      yyYear = $5;
4c1ef1c
 	    }
4c1ef1c
+	    yyHaveYear++;
4c1ef1c
 	}
4c1ef1c
 	| tUNUMBER tSNUMBER tSNUMBER {
4c1ef1c
 	    /* ISO 8601 format.  yyyy-mm-dd.  */
4c1ef1c
 	    yyYear = $1;
4c1ef1c
 	    yyMonth = -$2;
4c1ef1c
 	    yyDay = -$3;
4c1ef1c
+	    yyHaveYear++;
4c1ef1c
 	}
4c1ef1c
 	| tUNUMBER tMONTH tSNUMBER {
4c1ef1c
 	    /* e.g. 17-JUN-1992.  */
4c1ef1c
 	    yyDay = $1;
4c1ef1c
 	    yyMonth = $2;
4c1ef1c
 	    yyYear = -$3;
4c1ef1c
+	    yyHaveYear++;
4c1ef1c
 	}
4c1ef1c
 	| tMONTH tUNUMBER {
4c1ef1c
 	    yyMonth = $1;
4c1ef1c
@@ -314,6 +318,7 @@ date	: tUNUMBER '/' tUNUMBER {
4c1ef1c
 	    yyMonth = $1;
4c1ef1c
 	    yyDay = $2;
4c1ef1c
 	    yyYear = $4;
4c1ef1c
+	    yyHaveYear++;
4c1ef1c
 	}
4c1ef1c
 	| tUNUMBER tMONTH {
4c1ef1c
 	    yyMonth = $2;
4c1ef1c
@@ -323,6 +328,7 @@ date	: tUNUMBER '/' tUNUMBER {
4c1ef1c
 	    yyMonth = $2;
4c1ef1c
 	    yyDay = $1;
4c1ef1c
 	    yyYear = $3;
4c1ef1c
+	    yyHaveYear++;
4c1ef1c
 	}
4c1ef1c
 	;
4c1ef1c
 
4c1ef1c
@@ -395,7 +401,8 @@ relunit	: tUNUMBER tYEAR_UNIT {
4c1ef1c
 
4c1ef1c
 number	: tUNUMBER
4c1ef1c
           {
4c1ef1c
-	    if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0))
4c1ef1c
+	    if ((yyHaveTime != 0 || $1 >= 100) && !yyHaveYear
4c1ef1c
+		&& (yyHaveDate != 0) && (yyHaveRel == 0))
4c1ef1c
 	      yyYear = $1;
4c1ef1c
 	    else
4c1ef1c
 	      {
4c1ef1c
@@ -802,7 +809,7 @@ yylex (void)
4c1ef1c
 	  return LookupWord (buff);
4c1ef1c
 	}
4c1ef1c
       if (c != '(')
4c1ef1c
-	return *yyInput++;
4c1ef1c
+	return (unsigned char)*yyInput++;
4c1ef1c
       Count = 0;
4c1ef1c
       do
4c1ef1c
 	{