From f80065b3b45192ccbca5c15bf8015b709876ed43 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 21 Oct 2018 21:48:29 -0500 Subject: Make ./top -d .1234567890m work. --- lib/xwrap.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/xwrap.c b/lib/xwrap.c index fba262b9..2027069d 100644 --- a/lib/xwrap.c +++ b/lib/xwrap.c @@ -791,20 +791,20 @@ double xstrtod(char *s) // parse fractional seconds with optional s/m/h/d suffix long xparsetime(char *arg, long zeroes, long *fraction) { - long l, fr; + long l, fr = 0, mask = 1; char *end; if (*arg != '.' && !isdigit(*arg)) error_exit("Not a number '%s'", arg); l = strtoul(arg, &end, 10); - fr = 0; if (*end == '.') { end++; while (zeroes--) { fr *= 10; + mask *= 10; if (isdigit(*end)) fr += *end++-'0'; } + while (isdigit(*end)) end++; } - if (fraction) *fraction = fr; // Parse suffix if (*end) { @@ -812,7 +812,11 @@ long xparsetime(char *arg, long zeroes, long *fraction) if (i == -1 || *(end+1)) error_exit("Unknown suffix '%s'", end); l *= ismhd[i]; + fr *= ismhd[i]; + l += fr/mask; + fr %= mask; } + if (fraction) *fraction = fr; return l; } -- cgit v1.2.3