From 16a7467815d3f2413f3df0069b447bbe0865277e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 28 Aug 2024 16:49:28 +0200 Subject: [PATCH] tools: try to parse float values better First try to parse the float value as a JSON number and then fall back to atof to get the locale dependent variant. This transparently makes things work with values such as 0.5 and 0,5. Fixes #4234 --- src/tools/pw-cat.c | 3 ++- src/tools/pw-loopback.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tools/pw-cat.c b/src/tools/pw-cat.c index 8bbb91300..377be2702 100644 --- a/src/tools/pw-cat.c +++ b/src/tools/pw-cat.c @@ -1778,7 +1778,8 @@ int main(int argc, char *argv[]) break; case OPT_VOLUME: - data.volume = (float)atof(optarg); + if (!spa_atof(optarg, &data.volume)) + data.volume = (float)atof(optarg); break; default: goto error_usage; diff --git a/src/tools/pw-loopback.c b/src/tools/pw-loopback.c index 7fbebbc51..1f77f6ae6 100644 --- a/src/tools/pw-loopback.c +++ b/src/tools/pw-loopback.c @@ -163,7 +163,8 @@ int main(int argc, char *argv[]) data.latency = atoi(optarg) * DEFAULT_RATE / SPA_MSEC_PER_SEC; break; case 'd': - data.delay = (float)atof(optarg); + if (!spa_atof(optarg, &data.delay)) + data.delay = (float)atof(optarg); break; case 'C': pw_properties_set(data.capture_props, PW_KEY_TARGET_OBJECT, optarg);