summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authormillert <>2006-01-10 02:23:02 +0000
committermillert <>2006-01-10 02:23:02 +0000
commit1fdb8b1f0e4af24cd5666eb62466dd2c91fe0353 (patch)
treedef3d28d782f33a64d960f427012acba3151ab9f /src/lib
parentf04f970dc1c3a580d4e8264cea6e3ec0159cba66 (diff)
downloadopenbsd-1fdb8b1f0e4af24cd5666eb62466dd2c91fe0353.tar.gz
openbsd-1fdb8b1f0e4af24cd5666eb62466dd2c91fe0353.tar.bz2
openbsd-1fdb8b1f0e4af24cd5666eb62466dd2c91fe0353.zip
Use localeconv() to get the locale-specific radix char like printf does.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libc/stdlib/gcvt.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/libc/stdlib/gcvt.c b/src/lib/libc/stdlib/gcvt.c
index 87bd843307..9ba932e123 100644
--- a/src/lib/libc/stdlib/gcvt.c
+++ b/src/lib/libc/stdlib/gcvt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gcvt.c,v 1.7 2006/01/10 02:08:28 millert Exp $ */ 1/* $OpenBSD: gcvt.c,v 1.8 2006/01/10 02:23:02 millert Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2002, 2003 Todd C. Miller <Todd.Miller@courtesan.com> 4 * Copyright (c) 2002, 2003 Todd C. Miller <Todd.Miller@courtesan.com>
@@ -20,6 +20,7 @@
20 * Materiel Command, USAF, under agreement number F39502-99-1-0512. 20 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
21 */ 21 */
22 22
23#include <locale.h>
23#include <stdio.h> 24#include <stdio.h>
24#include <stdlib.h> 25#include <stdlib.h>
25#include <string.h> 26#include <string.h>
@@ -31,7 +32,9 @@ gcvt(double value, int ndigit, char *buf)
31{ 32{
32 char *digits, *dst, *src; 33 char *digits, *dst, *src;
33 int i, decpt, sign; 34 int i, decpt, sign;
35 struct lconv *lconv;
34 36
37 lconv = localeconv();
35 if (ndigit == 0) { 38 if (ndigit == 0) {
36 buf[0] = '\0'; 39 buf[0] = '\0';
37 return (buf); 40 return (buf);
@@ -57,7 +60,7 @@ gcvt(double value, int ndigit, char *buf)
57 sign = 0; 60 sign = 0;
58 src = digits; 61 src = digits;
59 *dst++ = *src++; 62 *dst++ = *src++;
60 *dst++ = '.'; /* XXX - locale-specific */ 63 *dst++ = *lconv->decimal_point;
61 while (*src != '\0') 64 while (*src != '\0')
62 *dst++ = *src++; 65 *dst++ = *src++;
63 *dst++ = 'e'; 66 *dst++ = 'e';
@@ -90,7 +93,7 @@ gcvt(double value, int ndigit, char *buf)
90 if (*src != '\0') { 93 if (*src != '\0') {
91 if (src == digits) 94 if (src == digits)
92 *dst++ = '0'; /* zero before decimal point */ 95 *dst++ = '0'; /* zero before decimal point */
93 *dst++ = '.'; /* XXX - locale-specific */ 96 *dst++ = *lconv->decimal_point;
94 for (i = decpt; digits[i] != '\0'; i++) { 97 for (i = decpt; digits[i] != '\0'; i++) {
95 *dst++ = digits[i]; 98 *dst++ = digits[i];
96 } 99 }