From a137c03ff005cb3e7b7b20a225e34c133b401539 Mon Sep 17 00:00:00 2001 From: dreamsource-tai Date: Fri, 26 Jul 2024 15:08:24 +0800 Subject: [PATCH] fix: CSV files use commas as decimal separators. --- libsigrok4DSL/output/csv.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/libsigrok4DSL/output/csv.c b/libsigrok4DSL/output/csv.c index 12e31d24..b1a20e5d 100644 --- a/libsigrok4DSL/output/csv.c +++ b/libsigrok4DSL/output/csv.c @@ -26,6 +26,7 @@ #include "../config.h" /* Needed for PACKAGE_STRING and others. */ #include "../log.h" #include +#include #undef LOG_PREFIX #define LOG_PREFIX "csv: " @@ -227,6 +228,21 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p double tmpv; struct sr_channel *ch; + int bDotLetter = 0; + char tmp_buffer[50]; + char *pFlagCheck = tmp_buffer; + + sprintf(tmp_buffer, "%0.15g", DBL_MAX); + + while (*pFlagCheck) + { + if (*pFlagCheck == '.'){ + bDotLetter = 1; + break; + } + pFlagCheck++; + } + *out = NULL; if (!o || !o->sdi) return SR_ERR_ARG; @@ -266,7 +282,24 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p } tmpv = (double)(ctx->index-1) / (double)ctx->samplerate; - g_string_append_printf(*out, "%0.15g", tmpv); + + if (bDotLetter){ + g_string_append_printf(*out, "%0.15g", tmpv); + } + else{ + sprintf(tmp_buffer, "%0.15g", tmpv); + pFlagCheck = tmp_buffer; + + while (*pFlagCheck){ + if (*pFlagCheck == ','){ + *pFlagCheck = '.'; + break; + } + pFlagCheck++; + } + + g_string_append_printf(*out, tmp_buffer); + } for (j = 0; j < ctx->num_enabled_channels; j++) { idx = j;