aboutsummaryrefslogtreecommitdiff
path: root/bin/timeout
diff options
context:
space:
mode:
authorAaron LI <aly@aaronly.me>2025-04-02 11:20:02 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2025-04-16 19:45:37 +0000
commite7bf1e5f1d62c2e735d343c462275e7e2aaf0286 (patch)
tree8f20be88efa02e64629b1f8f580db4cdad12de74 /bin/timeout
parent435e9214478cdc120fff555e51e6b334dbc64857 (diff)
Diffstat (limited to 'bin/timeout')
-rw-r--r--bin/timeout/timeout.c20
1 files 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);
}