From f0b3b904c7972374e8b9a280164508e356e9b5be Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 1 May 2016 23:56:05 +0100 Subject: scriptreplay: avoid re-implementing strtod_or_err() And use isnan() to detect NaN. Signed-off-by: Sami Kerola --- term-utils/scriptreplay.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'term-utils/scriptreplay.c') diff --git a/term-utils/scriptreplay.c b/term-utils/scriptreplay.c index 51985cda8..146133518 100644 --- a/term-utils/scriptreplay.c +++ b/term-utils/scriptreplay.c @@ -30,6 +30,7 @@ #include "closestream.h" #include "nls.h" +#include "strutils.h" #include "c.h" #define SCRIPT_MIN_DELAY 0.0001 /* from original sripreplay.pl */ @@ -60,21 +61,11 @@ usage(FILE *out) static double getnum(const char *s) { - double d; - char *end; + const double d = strtod_or_err(s, _("failed to parse number")); - errno = 0; - d = strtod(s, &end); - - if (end && *end != '\0') - errx(EXIT_FAILURE, _("expected a number, but got '%s'"), s); - - if ((d == HUGE_VAL || d == -HUGE_VAL) && ERANGE == errno) - err(EXIT_FAILURE, _("divisor '%s'"), s); - - if (!(d==d)) { /* did they specify "nan"? */ + if (isnan(d)) { errno = EINVAL; - err(EXIT_FAILURE, _("divisor '%s'"), s); + err(EXIT_FAILURE, "%s: %s", _("failed to parse number"), s); } return d; } -- cgit v1.2.3-55-g7522