aboutsummaryrefslogtreecommitdiff
path: root/modules/benchmark.c
diff options
context:
space:
mode:
authorBurt P <pburt0@gmail.com>2019-12-28 01:14:35 -0600
committerLeandro A. F. Pereira <leandro@hardinfo.org>2019-12-28 08:08:05 -0800
commitc32ab03ffbc46b177f5578b980b0d3a269b9e5b5 (patch)
treef0fcd25307ae0071b86d6d076f448cbf195fd9bf /modules/benchmark.c
parent79d8b3c8b4f54e17b35cf82fc97af9d8be73d7dc (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.c11
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) {