From 8bfd590069540f3fa8500bb496502ad675fdc148 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 16 Sep 2011 14:52:54 -0600 Subject: [PATCH] date: accept 'hence' as opposite of 'ago' * lib/parse-datetime.y (relative_time_table): Add 'hence'. * tests/test-parse-datetime.c (main): Enhance test. Suggested by Jesse Wilson. Signed-off-by: Eric Blake --- ChangeLog | 7 +++++++ lib/parse-datetime.y | 8 +++++--- tests/test-parse-datetime.c | 7 +++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 50a43e896..ddbbe0e65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-09-19 Eric Blake + + date: accept 'hence' as opposite of 'ago' + * lib/parse-datetime.y (relative_time_table): Add 'hence'. + * tests/test-parse-datetime.c (main): Enhance test. + Suggested by Jesse Wilson. + 2011-09-19 Jim Meyering getcwd: don't fail in a deep directory on a system without openat diff --git a/lib/parse-datetime.y b/lib/parse-datetime.y index 33ef01a34..d99c9558e 100644 --- a/lib/parse-datetime.y +++ b/lib/parse-datetime.y @@ -296,7 +296,8 @@ set_hhmmss (parser_control *pc, long int hour, long int minutes, relative_time rel; } -%token tAGO tDST +%token tAGO +%token tDST %token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT %token tDAY_UNIT tDAY_SHIFT @@ -544,7 +545,7 @@ iso_8601_date: rel: relunit tAGO - { apply_relative_time (pc, $1, -1); } + { apply_relative_time (pc, $1, $2); } | relunit { apply_relative_time (pc, $1, 1); } | dayshift @@ -733,7 +734,8 @@ static table const relative_time_table[] = { "TENTH", tORDINAL, 10 }, { "ELEVENTH", tORDINAL, 11 }, { "TWELFTH", tORDINAL, 12 }, - { "AGO", tAGO, 1 }, + { "AGO", tAGO, -1 }, + { "HENCE", tAGO, 1 }, { NULL, 0, 0 } }; diff --git a/tests/test-parse-datetime.c b/tests/test-parse-datetime.c index ac408ccbb..b9d08a63f 100644 --- a/tests/test-parse-datetime.c +++ b/tests/test-parse-datetime.c @@ -327,6 +327,8 @@ main (int argc _GL_UNUSED, char **argv) ASSERT (!parse_datetime (&result, p, &now)); p = "UTC+4:00 tomorrow ago"; ASSERT (!parse_datetime (&result, p, &now)); + p = "UTC+4:00 tomorrow hence"; + ASSERT (!parse_datetime (&result, p, &now)); p = "UTC+4:00 40 now ago"; ASSERT (!parse_datetime (&result, p, &now)); p = "UTC+4:00 last tomorrow"; @@ -345,6 +347,11 @@ main (int argc _GL_UNUSED, char **argv) LOG (p, now, result2); ASSERT (result.tv_sec == result2.tv_sec && result.tv_nsec == result2.tv_nsec); + p = "UTC+400 1 day hence"; + ASSERT (parse_datetime (&result2, p, &now)); + LOG (p, now, result2); + ASSERT (result.tv_sec == result2.tv_sec + && result.tv_nsec == result2.tv_nsec); now.tv_sec = 4711; now.tv_nsec = 1267; p = "UTC+400 yesterday"; -- 2.11.0