From 51bf1b81f3c4c7c02d8101f8ab6eb5609892e728 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 20 Nov 2015 18:03:05 +0100 Subject: [PATCH] Make match function globally available to stdlib functions. * libc/stdlib/strtod.c (match): Move from here... * libc/stdlib/gdtoa-hexnan.c (match): ...to here. * libc/stdlib/mprec.h (match): Declare and add __match define. Signed-off-by: Corinna Vinschen --- newlib/ChangeLog | 6 ++++++ newlib/libc/stdlib/gdtoa-hexnan.c | 18 ++++++++++++++++++ newlib/libc/stdlib/mprec.h | 2 ++ newlib/libc/stdlib/strtod.c | 21 --------------------- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index d37a378c8..27e19a1ab 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,9 @@ +2015-11-20 Corinna Vinschen + + * libc/stdlib/strtod.c (match): Move from here... + * libc/stdlib/gdtoa-hexnan.c (match): ...to here. + * libc/stdlib/mprec.h (match): Declare and add __match define. + 2015-11-20 Corinna Vinschen * libc/stdlib/wcstold.c (_strtold): Drop unused declaration. diff --git a/newlib/libc/stdlib/gdtoa-hexnan.c b/newlib/libc/stdlib/gdtoa-hexnan.c index 463000528..24e3783be 100644 --- a/newlib/libc/stdlib/gdtoa-hexnan.c +++ b/newlib/libc/stdlib/gdtoa-hexnan.c @@ -44,6 +44,24 @@ THIS SOFTWARE. #include "gdtoa.h" #ifdef INFNAN_CHECK +int +_DEFUN (match, (sp, t), + _CONST char **sp _AND + char *t) +{ + int c, d; + _CONST char *s = *sp; + + while( (d = *t++) !=0) { + if ((c = *++s) >= 'A' && c <= 'Z') + c += 'a' - 'A'; + if (c != d) + return 0; + } + *sp = s + 1; + return 1; +} + static void _DEFUN (L_shift, (x, x1, i), __ULong *x _AND diff --git a/newlib/libc/stdlib/mprec.h b/newlib/libc/stdlib/mprec.h index d4732ca8c..8472e7db0 100644 --- a/newlib/libc/stdlib/mprec.h +++ b/newlib/libc/stdlib/mprec.h @@ -360,6 +360,7 @@ typedef struct _Bigint _Bigint; #define mult __multiply #define pow5mult __pow5mult #define lshift __lshift +#define match __match #define cmp __mcmp #define diff __mdiff #define ulp __ulp @@ -396,6 +397,7 @@ int _EXFUN(hi0bits,(__ULong)); int _EXFUN(lo0bits,(__ULong *)); _Bigint * _EXFUN(d2b,(struct _reent *p, double d, int *e, int *bits)); _Bigint * _EXFUN(lshift,(struct _reent *p, _Bigint *b, int k)); +int _EXFUN(match,(const char**, char*)); _Bigint * _EXFUN(diff,(struct _reent *p, _Bigint *a, _Bigint *b)); int _EXFUN(cmp,(_Bigint *a, _Bigint *b)); int _EXFUN(gethex,(struct _reent *p, _CONST char **sp, _CONST struct FPI *fpi, Long *exp, _Bigint **bp, int sign)); diff --git a/newlib/libc/stdlib/strtod.c b/newlib/libc/stdlib/strtod.c index 9b064f4a8..433dc7f32 100644 --- a/newlib/libc/stdlib/strtod.c +++ b/newlib/libc/stdlib/strtod.c @@ -212,27 +212,6 @@ _DEFUN (ULtod, (L, bits, exp, k), } #endif /* !NO_HEX_FP */ -#ifdef INFNAN_CHECK -static int -_DEFUN (match, (sp, t), - _CONST char **sp _AND - char *t) -{ - int c, d; - _CONST char *s = *sp; - - while( (d = *t++) !=0) { - if ((c = *++s) >= 'A' && c <= 'Z') - c += 'a' - 'A'; - if (c != d) - return 0; - } - *sp = s + 1; - return 1; -} -#endif /* INFNAN_CHECK */ - - double _DEFUN (_strtod_r, (ptr, s00, se), struct _reent *ptr _AND