diff options
author | millert <> | 2006-01-10 02:23:02 +0000 |
---|---|---|
committer | millert <> | 2006-01-10 02:23:02 +0000 |
commit | 1fdb8b1f0e4af24cd5666eb62466dd2c91fe0353 (patch) | |
tree | def3d28d782f33a64d960f427012acba3151ab9f /src/lib | |
parent | f04f970dc1c3a580d4e8264cea6e3ec0159cba66 (diff) | |
download | openbsd-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.c | 9 |
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 | } |