diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2017-07-03 08:29:32 -0400 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-07-03 14:29:32 +0200 |
commit | 0004f698df1410ef8b6ab3fb5f4b41a60c91182c (patch) | |
tree | 602a66a4117fe4563c9a489aed4488c6b20000c8 /src/basic | |
parent | 131d5e148e9ed883b3c5a3de7aca9a4f97b2774e (diff) | |
download | systemd-0004f698df1410ef8b6ab3fb5f4b41a60c91182c.tar.gz systemd-0004f698df1410ef8b6ab3fb5f4b41a60c91182c.tar.bz2 systemd-0004f698df1410ef8b6ab3fb5f4b41a60c91182c.zip |
Parse "timeout=0" as infinity in various generators (#6264)
This extends 2d79a0bbb9f651656384a0a86ed814e6306fb5dd to the kernel
command line parsing.
The parsing is changed a bit to only understand "0" as infinity. If units are
specified, parse normally, e.g. "0s" is just 0. This makes it possible to
provide a zero timeout if necessary.
Simple test is added.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1462378.
Diffstat (limited to 'src/basic')
-rw-r--r-- | src/basic/time-util.c | 10 | ||||
-rw-r--r-- | src/basic/time-util.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/basic/time-util.c b/src/basic/time-util.c index b0b181120a..3b44985c69 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -1009,6 +1009,16 @@ 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) { + t += strspn(t, WHITESPACE); + if (streq(t, "0")) { + *usec = USEC_INFINITY; + return 0; + } + + return parse_sec(t, usec); +} + int parse_nsec(const char *t, nsec_t *nsec) { static const struct { const char *suffix; diff --git a/src/basic/time-util.h b/src/basic/time-util.h index 414995e6af..3b7f0e99c0 100644 --- a/src/basic/time-util.h +++ b/src/basic/time-util.h @@ -133,6 +133,7 @@ int timestamp_deserialize(const char *value, usec_t *timestamp); int parse_timestamp(const char *t, usec_t *usec); int parse_sec(const char *t, usec_t *usec); +int parse_sec_fix_0(const char *t, usec_t *usec); int parse_time(const char *t, usec_t *usec, usec_t default_unit); int parse_nsec(const char *t, nsec_t *nsec); |