diff options
author | Bruce Korb <bkorb@gnu.org> | 2008-12-29 22:00:19 +0100 |
---|---|---|
committer | Ralf Wildenhues <Ralf.Wildenhues@gmx.de> | 2008-12-29 22:00:19 +0100 |
commit | 2363a9f8faa3abfdfde6adec5c1dc0c816016731 (patch) | |
tree | 78294889ef92c06a6123da3cd929d2edb6960c51 /lib/parse-duration.c | |
parent | 3cb753d3f0109c172d5c5e9c595b287b034bd577 (diff) | |
download | gnulib-2363a9f8faa3abfdfde6adec5c1dc0c816016731.tar.gz |
parse-duration: small doc tweak and coding aesthetics issue.
* lib/parse-duration.h: non-iso form accepts years, months weeks, too
* lib/parse-duration.c: use a switch instead of cascading if's.
Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Diffstat (limited to 'lib/parse-duration.c')
-rw-r--r-- | lib/parse-duration.c | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/lib/parse-duration.c b/lib/parse-duration.c index 91f5291c5b..561bd98adb 100644 --- a/lib/parse-duration.c +++ b/lib/parse-duration.c @@ -566,38 +566,24 @@ parse_non_iso8601(cch_t * pz) time_t parse_duration (char const * pz) { - time_t res = 0; - while (isspace ((unsigned char)*pz)) pz++; - do { - if (*pz == 'P') - { - res = parse_period (pz + 1); - if (res == BAD_TIME) - break; - return res; - } - - if (*pz == 'T') - { - res = parse_time (pz + 1); - if (res == BAD_TIME) - break; - return res; - } - - if (! isdigit ((unsigned char)*pz)) - break; + switch (*pz) + { + case 'P': + return parse_period (pz + 1); - res = parse_non_iso8601 (pz); - if (res != BAD_TIME) - return res; + case 'T': + return parse_time (pz + 1); - } while (0); + default: + if (isdigit ((unsigned char)*pz)) + return parse_non_iso8601 (pz); - return BAD_TIME; + errno = EINVAL; + return BAD_TIME; + } } /* |