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 /modules/benchmark.c | |
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>
Diffstat (limited to 'modules/benchmark.c')
-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) { |