From decad9103eab4c5f24dbc55dc7d2cdabce87a302 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 23 Nov 2012 22:20:15 +0100 Subject: [PATCH] util: teach parse_timestamp() to parse results of format_timestamp_relative() --- src/shared/time-util.c | 13 +++++++++++++ src/test/test-date.c | 3 +++ 2 files changed, 16 insertions(+) diff --git a/src/shared/time-util.c b/src/shared/time-util.c index 3d00b20ee..7f477100b 100644 --- a/src/shared/time-util.c +++ b/src/shared/time-util.c @@ -344,6 +344,19 @@ int parse_timestamp(const char *t, usec_t *usec) { return r; goto finish; + + } else if (endswith(t, " ago")) { + _cleanup_free_ char *z; + + z = strndup(t, strlen(t) - 4); + if (!z) + return -ENOMEM; + + r = parse_usec(z, &minus); + if (r < 0) + return r; + + goto finish; } copy = tm; diff --git a/src/test/test-date.c b/src/test/test-date.c index 57f8b371d..7e14d196c 100644 --- a/src/test/test-date.c +++ b/src/test/test-date.c @@ -65,5 +65,8 @@ int main(int argc, char *argv[]) { assert_se(parse_timestamp("+2y 4d", &t) >= 0); log_info("%s", format_timestamp(buf, sizeof(buf), t)); + assert_se(parse_timestamp("5months ago", &t) >= 0); + log_info("%s", format_timestamp(buf, sizeof(buf), t)); + return 0; } -- 2.30.2