Module Name: src
Committed By: apb
Date: Wed Oct 8 14:43:48 UTC 2014
Modified Files:
src/lib/libutil: parsedate.y
Log Message:
Add a new non-terminal "time_numericzone" for a time with
a numeric timezone. Move some productions from "time" to "time_numericzone".
Increment yyHaveZone when encountering one of these.
Previously, input of the form "HH:MM:SS +ZZZZ" would not have set the
yyhaveZone flag.
To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/lib/libutil/parsedate.y
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libutil/parsedate.y
diff -u src/lib/libutil/parsedate.y:1.18 src/lib/libutil/parsedate.y:1.19
--- src/lib/libutil/parsedate.y:1.18 Wed Oct 8 14:32:29 2014
+++ src/lib/libutil/parsedate.y Wed Oct 8 14:43:48 2014
@@ -14,7 +14,7 @@
#include <sys/cdefs.h>
#ifdef __RCSID
-__RCSID("$NetBSD: parsedate.y,v 1.18 2014/10/08 14:32:29 apb Exp $");
+__RCSID("$NetBSD: parsedate.y,v 1.19 2014/10/08 14:43:48 apb Exp $");
#endif
#include <stdio.h>
@@ -118,6 +118,10 @@ spec : /* NULL */
item : time {
param->yyHaveTime++;
}
+ | time_numericzone {
+ param->yyHaveTime++;
+ param->yyHaveZone++;
+ }
| zone {
param->yyHaveZone++;
}
@@ -197,33 +201,35 @@ time : tUNUMBER tMERIDIAN {
param->yySeconds = 0;
param->yyMeridian = $4;
}
- | tUNUMBER ':' tUNUMBER tSNUMBER {
- param->yyHour = $1;
- param->yyMinutes = $3;
- param->yyMeridian = MER24;
- param->yyDSTmode = DSToff;
- param->yyTimezone = - ($4 % 100 + ($4 / 100) * 60);
- }
| tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid {
param->yyHour = $1;
param->yyMinutes = $3;
param->yySeconds = $5;
param->yyMeridian = $6;
}
- | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER {
+ | tUNUMBER ':' tUNUMBER ':' tUNUMBER '.' tUNUMBER {
param->yyHour = $1;
param->yyMinutes = $3;
param->yySeconds = $5;
param->yyMeridian = MER24;
+/* XXX: Do nothing with millis */
+ }
+ ;
+
+time_numericzone : tUNUMBER ':' tUNUMBER tSNUMBER {
+ param->yyHour = $1;
+ param->yyMinutes = $3;
+ param->yyMeridian = MER24;
param->yyDSTmode = DSToff;
- param->yyTimezone = - ($6 % 100 + ($6 / 100) * 60);
+ param->yyTimezone = - ($4 % 100 + ($4 / 100) * 60);
}
- | tUNUMBER ':' tUNUMBER ':' tUNUMBER '.' tUNUMBER {
+ | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER {
param->yyHour = $1;
param->yyMinutes = $3;
param->yySeconds = $5;
param->yyMeridian = MER24;
-/* XXX: Do nothing with millis */
+ param->yyDSTmode = DSToff;
+ param->yyTimezone = - ($6 % 100 + ($6 / 100) * 60);
}
;