git: b57a0597fc1a - stable/14 - timeout(1): Improve duration parsing and error messages
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 16 Jun 2025 08:53:53 UTC
The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b57a0597fc1adc207cd5c4298288916c65699908 commit b57a0597fc1adc207cd5c4298288916c65699908 Author: Aaron LI <aly@aaronly.me> AuthorDate: 2025-04-02 11:20:02 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2025-06-16 08:51:51 +0000 timeout(1): Improve duration parsing and error messages (cherry picked from commit e7bf1e5f1d62c2e735d343c462275e7e2aaf0286) --- bin/timeout/timeout.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/timeout/timeout.c b/bin/timeout/timeout.c index 429ca64349e3..83893ba0a601 100644 --- a/bin/timeout/timeout.c +++ b/bin/timeout/timeout.c @@ -68,19 +68,19 @@ static double parse_duration(const char *duration) { double ret; - char *end; + char *suffix; - ret = strtod(duration, &end); - if (ret == 0 && end == duration) - errx(EXIT_INVALID, "invalid duration"); + ret = strtod(duration, &suffix); + if (suffix == duration) + errx(EXIT_INVALID, "duration is not a number"); - if (end == NULL || *end == '\0') + if (*suffix == '\0') return (ret); - if (end != NULL && *(end + 1) != '\0') - errx(EXIT_INVALID, "invalid duration"); + if (suffix[1] != '\0') + errx(EXIT_INVALID, "duration unit suffix too long"); - switch (*end) { + switch (*suffix) { case 's': break; case 'm': @@ -93,11 +93,11 @@ parse_duration(const char *duration) ret *= 60 * 60 * 24; break; default: - errx(EXIT_INVALID, "invalid duration"); + errx(EXIT_INVALID, "duration unit suffix invalid"); } if (ret < 0 || ret >= 100000000UL) - errx(EXIT_INVALID, "invalid duration"); + errx(EXIT_INVALID, "duration out of range"); return (ret); }