From: Ben Pfaff Date: Fri, 28 Dec 2012 05:17:43 +0000 (-0800) Subject: csv-file-writer: Fix implementation of decimal point option. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fbuilds%2F20121230030503%2Fpspp;p=pspp 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. --- 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: