From c6bb003b8882e9a16941f5803d072ec1cb728318 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 4 Jun 2024 12:52:39 -0400 Subject: xtime: Add support for @epochseconds timestamps --- src/xtime.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/xtime.c b/src/xtime.c index 2808455..186651b 100644 --- a/src/xtime.c +++ b/src/xtime.c @@ -206,6 +206,23 @@ static int xgetpart(const char **str, size_t n, int *result) { } int xgetdate(const char *str, struct timespec *result) { + // Handle @epochseconds + if (str[0] == '@') { + long long value; + if (xstrtoll(str + 1, NULL, 10, &value) != 0) { + goto error; + } + + time_t time = (time_t)value; + if ((long long)time != value) { + errno = ERANGE; + goto error; + } + + result->tv_sec = time; + goto done; + } + struct tm tm = { .tm_isdst = -1, }; @@ -324,6 +341,7 @@ end: } } +done: result->tv_nsec = 0; return 0; -- cgit v1.2.3