You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.5 KiB
138 lines
3.5 KiB
diff -up shadow-4.1.5.1/libmisc/getdate.c.date-parsing shadow-4.1.5.1/libmisc/getdate.c |
|
--- shadow-4.1.5.1/libmisc/getdate.c.date-parsing 2008-06-14 00:07:51.000000000 +0200 |
|
+++ shadow-4.1.5.1/libmisc/getdate.c 2014-08-29 13:41:22.553267506 +0200 |
|
@@ -261,6 +261,7 @@ static int yyHaveDay; |
|
static int yyHaveRel; |
|
static int yyHaveTime; |
|
static int yyHaveZone; |
|
+static int yyHaveYear; |
|
static int yyTimezone; |
|
static int yyDay; |
|
static int yyHour; |
|
@@ -1730,6 +1731,7 @@ yyreduce: |
|
yyDay = (yyvsp[(3) - (5)].Number); |
|
yyYear = (yyvsp[(5) - (5)].Number); |
|
} |
|
+ yyHaveYear++; |
|
} |
|
break; |
|
|
|
@@ -1740,6 +1742,7 @@ yyreduce: |
|
yyYear = (yyvsp[(1) - (3)].Number); |
|
yyMonth = -(yyvsp[(2) - (3)].Number); |
|
yyDay = -(yyvsp[(3) - (3)].Number); |
|
+ yyHaveYear++; |
|
} |
|
break; |
|
|
|
@@ -1750,6 +1753,7 @@ yyreduce: |
|
yyDay = (yyvsp[(1) - (3)].Number); |
|
yyMonth = (yyvsp[(2) - (3)].Number); |
|
yyYear = -(yyvsp[(3) - (3)].Number); |
|
+ yyHaveYear++; |
|
} |
|
break; |
|
|
|
@@ -1767,6 +1771,7 @@ yyreduce: |
|
yyMonth = (yyvsp[(1) - (4)].Number); |
|
yyDay = (yyvsp[(2) - (4)].Number); |
|
yyYear = (yyvsp[(4) - (4)].Number); |
|
+ yyHaveYear++; |
|
} |
|
break; |
|
|
|
@@ -1784,6 +1789,7 @@ yyreduce: |
|
yyMonth = (yyvsp[(2) - (3)].Number); |
|
yyDay = (yyvsp[(1) - (3)].Number); |
|
yyYear = (yyvsp[(3) - (3)].Number); |
|
+ yyHaveYear++; |
|
} |
|
break; |
|
|
|
@@ -1928,7 +1934,8 @@ yyreduce: |
|
case 49: |
|
#line 397 "getdate.y" |
|
{ |
|
- if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) |
|
+ if ((yyHaveTime != 0 || (yyvsp[(1) - (1)].Number) >= 100) && !yyHaveYear |
|
+ && (yyHaveDate != 0) && (yyHaveRel == 0)) |
|
yyYear = (yyvsp[(1) - (1)].Number); |
|
else |
|
{ |
|
@@ -2556,7 +2563,7 @@ yylex (void) |
|
return LookupWord (buff); |
|
} |
|
if (c != '(') |
|
- return *yyInput++; |
|
+ return (unsigned char)*yyInput++; |
|
Count = 0; |
|
do |
|
{ |
|
diff -up shadow-4.1.5.1/libmisc/getdate.y.date-parsing shadow-4.1.5.1/libmisc/getdate.y |
|
--- shadow-4.1.5.1/libmisc/getdate.y.date-parsing 2008-05-26 10:57:51.000000000 +0200 |
|
+++ shadow-4.1.5.1/libmisc/getdate.y 2014-08-29 13:40:37.502229879 +0200 |
|
@@ -152,6 +152,7 @@ static int yyHaveDay; |
|
static int yyHaveRel; |
|
static int yyHaveTime; |
|
static int yyHaveZone; |
|
+static int yyHaveYear; |
|
static int yyTimezone; |
|
static int yyDay; |
|
static int yyHour; |
|
@@ -293,18 +294,21 @@ date : tUNUMBER '/' tUNUMBER { |
|
yyDay = $3; |
|
yyYear = $5; |
|
} |
|
+ yyHaveYear++; |
|
} |
|
| tUNUMBER tSNUMBER tSNUMBER { |
|
/* ISO 8601 format. yyyy-mm-dd. */ |
|
yyYear = $1; |
|
yyMonth = -$2; |
|
yyDay = -$3; |
|
+ yyHaveYear++; |
|
} |
|
| tUNUMBER tMONTH tSNUMBER { |
|
/* e.g. 17-JUN-1992. */ |
|
yyDay = $1; |
|
yyMonth = $2; |
|
yyYear = -$3; |
|
+ yyHaveYear++; |
|
} |
|
| tMONTH tUNUMBER { |
|
yyMonth = $1; |
|
@@ -314,6 +318,7 @@ date : tUNUMBER '/' tUNUMBER { |
|
yyMonth = $1; |
|
yyDay = $2; |
|
yyYear = $4; |
|
+ yyHaveYear++; |
|
} |
|
| tUNUMBER tMONTH { |
|
yyMonth = $2; |
|
@@ -323,6 +328,7 @@ date : tUNUMBER '/' tUNUMBER { |
|
yyMonth = $2; |
|
yyDay = $1; |
|
yyYear = $3; |
|
+ yyHaveYear++; |
|
} |
|
; |
|
|
|
@@ -395,7 +401,8 @@ relunit : tUNUMBER tYEAR_UNIT { |
|
|
|
number : tUNUMBER |
|
{ |
|
- if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) |
|
+ if ((yyHaveTime != 0 || $1 >= 100) && !yyHaveYear |
|
+ && (yyHaveDate != 0) && (yyHaveRel == 0)) |
|
yyYear = $1; |
|
else |
|
{ |
|
@@ -802,7 +809,7 @@ yylex (void) |
|
return LookupWord (buff); |
|
} |
|
if (c != '(') |
|
- return *yyInput++; |
|
+ return (unsigned char)*yyInput++; |
|
Count = 0; |
|
do |
|
{
|
|
|