* 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 <eblake@redhat.com>
+2011-09-19 Eric Blake <eblake@redhat.com>
+
+ 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 <meyering@redhat.com>
getcwd: don't fail in a deep directory on a system without openat
relative_time rel;
}
-%token tAGO tDST
+%token <intval> tAGO
+%token tDST
%token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT
%token <intval> tDAY_UNIT tDAY_SHIFT
rel:
relunit tAGO
- { apply_relative_time (pc, $1, -1); }
+ { apply_relative_time (pc, $1, $2); }
| relunit
{ apply_relative_time (pc, $1, 1); }
| dayshift
{ "TENTH", tORDINAL, 10 },
{ "ELEVENTH", tORDINAL, 11 },
{ "TWELFTH", tORDINAL, 12 },
- { "AGO", tAGO, 1 },
+ { "AGO", tAGO, -1 },
+ { "HENCE", tAGO, 1 },
{ NULL, 0, 0 }
};
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";
p = "UTC+400 +1 day";
ASSERT (parse_datetime (&result2, p, &now));
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;