summaryrefslogtreecommitdiff
path: root/lib/parse-datetime.y
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2019-08-09 13:47:41 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2019-08-09 13:57:07 -0700
commitf1f10d47be8762e4ca17c8957a0520b08d28abfb (patch)
treeb21c755d541d068be42d98debaa4958b4744924e /lib/parse-datetime.y
parentb5e7a0deb7f9a3fc7f0206e39f6b032b1051d0cd (diff)
downloadgnulib-f1f10d47be8762e4ca17c8957a0520b08d28abfb.tar.gz
parse-datetime: fix military timezone letters
Problem and trivial fix reported by Neil Hoggarth in: https://lists.gnu.org/r/bug-gnulib/2019-08/msg00005.html * lib/parse-datetime.y (military_table): Do it the right way, not the RFC 822 way.
Diffstat (limited to 'lib/parse-datetime.y')
-rw-r--r--lib/parse-datetime.y49
1 files changed, 26 insertions, 23 deletions
diff --git a/lib/parse-datetime.y b/lib/parse-datetime.y
index 7805759195..d371b9cb19 100644
--- a/lib/parse-datetime.y
+++ b/lib/parse-datetime.y
@@ -1160,34 +1160,37 @@ static table const time_zone_table[] =
/* Military time zone table.
+ RFC 822 got these backwards, but RFC 5322 makes the incorrect
+ treatment optional, so do them the right way here.
+
Note 'T' is a special case, as it is used as the separator in ISO
8601 date and time of day representation. */
static table const military_table[] =
{
- { "A", tZONE, -HOUR ( 1) },
- { "B", tZONE, -HOUR ( 2) },
- { "C", tZONE, -HOUR ( 3) },
- { "D", tZONE, -HOUR ( 4) },
- { "E", tZONE, -HOUR ( 5) },
- { "F", tZONE, -HOUR ( 6) },
- { "G", tZONE, -HOUR ( 7) },
- { "H", tZONE, -HOUR ( 8) },
- { "I", tZONE, -HOUR ( 9) },
- { "K", tZONE, -HOUR (10) },
- { "L", tZONE, -HOUR (11) },
- { "M", tZONE, -HOUR (12) },
- { "N", tZONE, HOUR ( 1) },
- { "O", tZONE, HOUR ( 2) },
- { "P", tZONE, HOUR ( 3) },
- { "Q", tZONE, HOUR ( 4) },
- { "R", tZONE, HOUR ( 5) },
- { "S", tZONE, HOUR ( 6) },
+ { "A", tZONE, HOUR ( 1) },
+ { "B", tZONE, HOUR ( 2) },
+ { "C", tZONE, HOUR ( 3) },
+ { "D", tZONE, HOUR ( 4) },
+ { "E", tZONE, HOUR ( 5) },
+ { "F", tZONE, HOUR ( 6) },
+ { "G", tZONE, HOUR ( 7) },
+ { "H", tZONE, HOUR ( 8) },
+ { "I", tZONE, HOUR ( 9) },
+ { "K", tZONE, HOUR (10) },
+ { "L", tZONE, HOUR (11) },
+ { "M", tZONE, HOUR (12) },
+ { "N", tZONE, -HOUR ( 1) },
+ { "O", tZONE, -HOUR ( 2) },
+ { "P", tZONE, -HOUR ( 3) },
+ { "Q", tZONE, -HOUR ( 4) },
+ { "R", tZONE, -HOUR ( 5) },
+ { "S", tZONE, -HOUR ( 6) },
{ "T", 'T', 0 },
- { "U", tZONE, HOUR ( 8) },
- { "V", tZONE, HOUR ( 9) },
- { "W", tZONE, HOUR (10) },
- { "X", tZONE, HOUR (11) },
- { "Y", tZONE, HOUR (12) },
+ { "U", tZONE, -HOUR ( 8) },
+ { "V", tZONE, -HOUR ( 9) },
+ { "W", tZONE, -HOUR (10) },
+ { "X", tZONE, -HOUR (11) },
+ { "Y", tZONE, -HOUR (12) },
{ "Z", tZONE, HOUR ( 0) },
{ NULL, 0, 0 }
};