aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/stdlib/gdtoa-gethex.c
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-03-26 10:04:40 +0000
committerCorinna Vinschen <corinna@vinschen.de>2009-03-26 10:04:40 +0000
commitf6e29e076a1e0662faff14e7fe23235f4a834ff6 (patch)
treebd691d9de38537fac2e958561cca369f446a2267 /newlib/libc/stdlib/gdtoa-gethex.c
parent7ca98b490133315b2b999c56eff604b655f062c0 (diff)
downloadnewlib-f6e29e076a1e0662faff14e7fe23235f4a834ff6.zip
newlib-f6e29e076a1e0662faff14e7fe23235f4a834ff6.tar.gz
newlib-f6e29e076a1e0662faff14e7fe23235f4a834ff6.tar.bz2
Revert erroneously checked in files.
Diffstat (limited to 'newlib/libc/stdlib/gdtoa-gethex.c')
-rw-r--r--newlib/libc/stdlib/gdtoa-gethex.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/newlib/libc/stdlib/gdtoa-gethex.c b/newlib/libc/stdlib/gdtoa-gethex.c
index 80f5695..92f30fc 100644
--- a/newlib/libc/stdlib/gdtoa-gethex.c
+++ b/newlib/libc/stdlib/gdtoa-gethex.c
@@ -35,7 +35,10 @@ THIS SOFTWARE.
#include "mprec.h"
#include "gdtoa.h"
#include "gd_qnan.h"
+
+#ifdef USE_LOCALE
#include "locale.h"
+#endif
unsigned char hexdig[256];
@@ -148,10 +151,11 @@ _DEFUN(gethex, (ptr, sp, fpi, exp, bp, sign),
int esign, havedig, irv, k, n, nbits, up, zret;
__ULong L, lostbits, *x;
Long e, e1;
- unsigned char *decimalpoint = (unsigned char *)
- localeconv()->decimal_point;
- size_t decp_len = strlen ((const char *) decimalpoint);
- unsigned char decp_end = decimalpoint[decp_len - 1];
+#ifdef USE_LOCALE
+ unsigned char decimalpoint = *localeconv()->decimal_point;
+#else
+#define decimalpoint '.'
+#endif
if (!hexdig['0'])
hexdig_init();
@@ -166,9 +170,9 @@ _DEFUN(gethex, (ptr, sp, fpi, exp, bp, sign),
e = 0;
if (!hexdig[*s]) {
zret = 1;
- if (strcmp ((const char *) s, (const char *) decimalpoint) != 0)
+ if (*s != decimalpoint)
goto pcheck;
- decpt = (s += decp_len);
+ decpt = ++s;
if (!hexdig[*s])
goto pcheck;
while(*s == '0')
@@ -180,9 +184,8 @@ _DEFUN(gethex, (ptr, sp, fpi, exp, bp, sign),
}
while(hexdig[*s])
s++;
- if (strcmp ((const char *) s, (const char *) decimalpoint) == 0
- && !decpt) {
- decpt = (s += decp_len);
+ if (*s == decimalpoint && !decpt) {
+ decpt = ++s;
while(hexdig[*s])
s++;
}
@@ -223,12 +226,8 @@ _DEFUN(gethex, (ptr, sp, fpi, exp, bp, sign),
n = 0;
L = 0;
while(s1 > s0) {
- if (*--s1 == decp_end && s1 - decp_len + 1 >= s0
- && strcmp ((const char *) s1 - decp_len + 1,
- (const char *) decimalpoint) == 0) {
- s1 -= decp_len - 1; /* Note the --s1 above! */
+ if (*--s1 == decimalpoint)
continue;
- }
if (n == 32) {
*x++ = L;
L = 0;