From d49a471a1fa405dd68d51ade4a4fed35b77cc41d Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 27 Dec 2012 21:17:43 -0800 Subject: [PATCH] csv-file-writer: Fix implementation of decimal point option. Now that pspp sets LC_NUMERIC, dtoastr() might yield either '.' or ',' as the decimal point, so the CSV writer needs to check for either one and replace it by the decimal point requested by the caller. Reported by John Darrington. --- src/data/csv-file-writer.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/data/csv-file-writer.c b/src/data/csv-file-writer.c index cbc617b3d2..4ebff0bd00 100644 --- a/src/data/csv-file-writer.c +++ b/src/data/csv-file-writer.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -281,6 +281,7 @@ csv_write_var__ (struct csv_writer *w, const struct csv_var *cv, else { char s[MAX (DBL_STRLEN_BOUND, 128)]; + char *cp; switch (cv->format.type) { @@ -307,12 +308,9 @@ csv_write_var__ (struct csv_writer *w, const struct csv_var *cv, case FMT_WKDAY: case FMT_MONTH: dtoastr (s, sizeof s, 0, 0, value->f); - if (w->opts.decimal != '.') - { - char *cp = strchr (s, '.'); - if (cp != NULL) - *cp = w->opts.decimal; - } + cp = strpbrk (s, ".,"); + if (cp != NULL) + *cp = w->opts.decimal; break; case FMT_DATE: -- 2.30.2