chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
time: support @ syntax for denoting times since the UNIX epoch 1970-1-1
[elogind.git]
/
src
/
shared
/
time-util.c
diff --git
a/src/shared/time-util.c
b/src/shared/time-util.c
index faa3418819e81dfe4e526966bac34554425cad68..eb5c1ae790475da829ce3bd59d719d763b9a707a 100644
(file)
--- a/
src/shared/time-util.c
+++ b/
src/shared/time-util.c
@@
-432,6
+432,7
@@
int parse_timestamp(const char *t, usec_t *usec) {
* tomorrow (time is set to 00:00:00)
* +5min
* -5days
* tomorrow (time is set to 00:00:00)
* +5min
* -5days
+ * @2147483647 (seconds since epoch)
*
*/
*
*/
@@
-460,21
+461,23
@@
int parse_timestamp(const char *t, usec_t *usec) {
goto finish;
} else if (t[0] == '+') {
goto finish;
} else if (t[0] == '+') {
-
r = parse_sec(t+1, &plus);
if (r < 0)
return r;
goto finish;
r = parse_sec(t+1, &plus);
if (r < 0)
return r;
goto finish;
- } else if (t[0] == '-') {
+ } else if (t[0] == '-') {
r = parse_sec(t+1, &minus);
if (r < 0)
return r;
goto finish;
r = parse_sec(t+1, &minus);
if (r < 0)
return r;
goto finish;
- } else if (endswith(t, " ago")) {
+ } else if (t[0] == '@')
+ return parse_sec(t + 1, usec);
+
+ else if (endswith(t, " ago")) {
_cleanup_free_ char *z;
z = strndup(t, strlen(t) - 4);
_cleanup_free_ char *z;
z = strndup(t, strlen(t) - 4);