From def34f63fe066c964764733242b332774070bac6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Oct 2018 22:21:28 +0200 Subject: [PATCH] time-util: change parse_sec_fix_0() to accept "0s" for infinity too (#10501) This function is about compatibility, nothing else, hence we should make it properly compatible. Fixes: #9556 --- src/basic/time-util.c | 19 ++++++++++--------- src/test/test-time-util.c | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/basic/time-util.c b/src/basic/time-util.c index 4d297394e2a..c192389584f 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -1074,18 +1074,19 @@ int parse_sec(const char *t, usec_t *usec) { return parse_time(t, usec, USEC_PER_SEC); } -int parse_sec_fix_0(const char *t, usec_t *usec) { +int parse_sec_fix_0(const char *t, usec_t *ret) { + usec_t k; + int r; + assert(t); - assert(usec); + assert(ret); - t += strspn(t, WHITESPACE); + r = parse_sec(t, &k); + if (r < 0) + return r; - if (streq(t, "0")) { - *usec = USEC_INFINITY; - return 0; - } - - return parse_sec(t, usec); + *ret = k == 0 ? USEC_INFINITY : k; + return r; } int parse_nsec(const char *t, nsec_t *nsec) { diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c index 82a71d04788..abb174b7a6a 100644 --- a/src/test/test-time-util.c +++ b/src/test/test-time-util.c @@ -65,7 +65,7 @@ static void test_parse_sec_fix_0(void) { assert_se(parse_sec_fix_0("5s", &u) >= 0); assert_se(u == 5 * USEC_PER_SEC); assert_se(parse_sec_fix_0("0s", &u) >= 0); - assert_se(u == 0 * USEC_PER_SEC); + assert_se(u == USEC_INFINITY); assert_se(parse_sec_fix_0("0", &u) >= 0); assert_se(u == USEC_INFINITY); assert_se(parse_sec_fix_0(" 0", &u) >= 0);