diff options
| author | Burt P <pburt0@gmail.com> | 2019-12-28 01:14:35 -0600 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2019-12-28 08:08:05 -0800 | 
| commit | c32ab03ffbc46b177f5578b980b0d3a269b9e5b5 (patch) | |
| tree | f0fcd25307ae0071b86d6d076f448cbf195fd9bf | |
| parent | 79d8b3c8b4f54e17b35cf82fc97af9d8be73d7dc (diff) | |
fix bench_value_from_str() for floats with , for decimal
Fixes https://github.com/lpereira/hardinfo/issues/497
Signed-off-by: Burt P <pburt0@gmail.com>
| -rw-r--r-- | modules/benchmark.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/modules/benchmark.c b/modules/benchmark.c index 2448db00..fe95cd47 100644 --- a/modules/benchmark.c +++ b/modules/benchmark.c @@ -60,14 +60,17 @@ char *bench_value_to_str(bench_value r) {  bench_value bench_value_from_str(const char* str) {      bench_value ret = EMPTY_BENCH_VALUE; -    double r, e; +    char rstr[32] = "", estr[32] = "", *p;      int t, c, v;      char extra[256], user_note[256];      if (str) { -        c = sscanf(str, "%lf; %lf; %d; %d; %255[^\r\n;|]; %255[^\r\n;|]", &r, &e, &t, &v, extra, user_note); +        /* try to handle floats from locales that use ',' or '.' as decimal sep */ +        c = sscanf(str, "%[-+0-9.,]; %[-+0-9.,]; %d; %d; %255[^\r\n;|]; %255[^\r\n;|]", rstr, estr, &t, &v, extra, user_note);          if (c >= 3) { -            ret.result = r; -            ret.elapsed_time = e; +            if ((p = strchr(rstr, ','))) { *p = '.'; } +            if ((p = strchr(estr, ','))) { *p = '.'; } +            ret.result = strtod(rstr, NULL); +            ret.elapsed_time = strtod(estr, NULL);              ret.threads_used = t;          }          if (c >= 4) { | 
