OSDN Git Service

Implement __strto* __wcsto* and hide _stdlib_wcsto*
authorPeter S. Mazinger <ps.m@gmx.net>
Thu, 8 Dec 2005 14:54:57 +0000 (14:54 -0000)
committerPeter S. Mazinger <ps.m@gmx.net>
Thu, 8 Dec 2005 14:54:57 +0000 (14:54 -0000)
libc/stdlib/stdlib.c

index 3bfdcfe..b1dd980 100644 (file)
 #include <stdlib.h>
 #include <locale.h>
 
+extern long int __strtol (__const char *__restrict __nptr,
+                       char **__restrict __endptr, int __base)
+     __THROW __nonnull ((1)) __wur attribute_hidden;
+__extension__
+extern long long int __strtoll (__const char *__restrict __nptr,
+                             char **__restrict __endptr, int __base)
+     __THROW __nonnull ((1)) __wur attribute_hidden;
+
 #ifdef __UCLIBC_HAS_WCHAR__
 
 #include <wchar.h>
@@ -255,10 +263,11 @@ strong_alias(llabs,imaxabs)
 
 #if INT_MAX < LONG_MAX 
 
-int atoi(const char *nptr)
+int attribute_hidden __atoi(const char *nptr)
 {
-       return (int) strtol(nptr, (char **) NULL, 10);
+       return (int) __strtol(nptr, (char **) NULL, 10);
 }
+strong_alias(__atoi,atoi)
 
 #endif /* INT_MAX < LONG_MAX  */
 
@@ -266,17 +275,19 @@ int atoi(const char *nptr)
 /**********************************************************************/
 #ifdef L_atol
 
-long atol(const char *nptr)
+long attribute_hidden __atol(const char *nptr)
 {
-       return strtol(nptr, (char **) NULL, 10);
+       return __strtol(nptr, (char **) NULL, 10);
 }
+strong_alias(__atol,atol)
 
 #if UINT_MAX == ULONG_MAX
-strong_alias(atol,atoi)
+hidden_strong_alias(__atol,__atoi)
+strong_alias(__atol,atoi)
 #endif
 
 #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
-strong_alias(atol,atoll)
+strong_alias(__atol,atoll)
 #endif
 
 #endif
@@ -287,7 +298,7 @@ strong_alias(atol,atoll)
 
 long long atoll(const char *nptr)
 {
-       return strtoll(nptr, (char **) NULL, 10);
+       return __strtoll(nptr, (char **) NULL, 10);
 }
 
 #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
@@ -296,12 +307,14 @@ long long atoll(const char *nptr)
 /**********************************************************************/
 #if defined(L_strtol) || defined(L_strtol_l)
 
-long __XL(strtol)(const char * __restrict str, char ** __restrict endptr,
+long attribute_hidden __UCXL(strtol)(const char * __restrict str, char ** __restrict endptr,
                                  int base   __LOCALE_PARAM )
 {
     return __XL_NPP(_stdlib_strto_l)(str, endptr, base, 1   __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(strtol)
+
 #if (ULONG_MAX == UINTMAX_MAX) && !defined(L_strtol_l)
 strong_alias(strtol,strtoimax)
 #endif
@@ -310,15 +323,13 @@ strong_alias(strtol,strtoimax)
 strong_alias(__XL(strtol),__XL(strtoll))
 #endif
 
-__XL_ALIAS(strtol)
-
 #endif
 /**********************************************************************/
 #if defined(L_strtoll) || defined(L_strtoll_l)
 
 #if defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX)
 
-long long __XL(strtoll)(const char * __restrict str,
+long long attribute_hidden __UCXL(strtoll)(const char * __restrict str,
                                                char ** __restrict endptr, int base
                                                __LOCALE_PARAM )
 {
@@ -326,6 +337,8 @@ long long __XL(strtoll)(const char * __restrict str,
                                                                                                  __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(strtoll)
+
 #if !defined(L_strtoll_l)
 #if (ULLONG_MAX == UINTMAX_MAX)
 strong_alias(strtoll,strtoimax)
@@ -333,21 +346,21 @@ strong_alias(strtoll,strtoimax)
 strong_alias(strtoll,strtoq)
 #endif
 
-__XL_ALIAS(strtoll)
-
 #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
 
 #endif
 /**********************************************************************/
 #if defined(L_strtoul) || defined(L_strtoul_l)
 
-unsigned long __XL(strtoul)(const char * __restrict str,
+unsigned long attribute_hidden __UCXL(strtoul)(const char * __restrict str,
                                                        char ** __restrict endptr, int base
                                                        __LOCALE_PARAM )
 {
     return __XL_NPP(_stdlib_strto_l)(str, endptr, base, 0   __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(strtoul)
+
 #if (ULONG_MAX == UINTMAX_MAX) && !defined(L_strtoul_l)
 strong_alias(strtoul,strtoumax)
 #endif
@@ -356,7 +369,6 @@ strong_alias(strtoul,strtoumax)
 strong_alias(__XL(strtoul),__XL(strtoull))
 #endif
 
-__XL_ALIAS(strtoul)
 
 #endif
 /**********************************************************************/
@@ -364,13 +376,15 @@ __XL_ALIAS(strtoul)
 
 #if defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX)
 
-unsigned long long __XL(strtoull)(const char * __restrict str,
+unsigned long long attribute_hidden __UCXL(strtoull)(const char * __restrict str,
                                                                  char ** __restrict endptr, int base
                                                                  __LOCALE_PARAM )
 {
     return __XL_NPP(_stdlib_strto_ll)(str, endptr, base, 0   __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(strtoull)
+
 #if !defined(L_strtoull_l)
 #if (ULLONG_MAX == UINTMAX_MAX)
 strong_alias(strtoull,strtoumax)
@@ -378,8 +392,6 @@ strong_alias(strtoull,strtoumax)
 strong_alias(strtoull,strtouq)
 #endif
 
-__XL_ALIAS(strtoull)
-
 #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
 
 #endif
@@ -437,7 +449,7 @@ __XL_ALIAS(strtoull)
 
 #if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)
 
-unsigned long _stdlib_strto_l(register const Wchar * __restrict str,
+unsigned long attribute_hidden _stdlib_strto_l(register const Wchar * __restrict str,
                                                          Wchar ** __restrict endptr, int base,
                                                          int sflag)
 {
@@ -450,7 +462,7 @@ unsigned long _stdlib_strto_l(register const Wchar * __restrict str,
 /* This is the main work fuction which handles both strtol (sflag = 1) and
  * strtoul (sflag = 0). */
 
-unsigned long __XL_NPP(_stdlib_strto_l)(register const Wchar * __restrict str,
+unsigned long attribute_hidden __XL_NPP(_stdlib_strto_l)(register const Wchar * __restrict str,
                                                                                Wchar ** __restrict endptr, int base,
                                                                                int sflag   __LOCALE_PARAM )
 {
@@ -582,7 +594,7 @@ unsigned long __XL_NPP(_stdlib_strto_l)(register const Wchar * __restrict str,
 
 #if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)
 
-unsigned long long _stdlib_strto_ll(register const Wchar * __restrict str,
+unsigned long long attribute_hidden _stdlib_strto_ll(register const Wchar * __restrict str,
                                                                        Wchar ** __restrict endptr, int base,
                                                                        int sflag)
 {
@@ -595,7 +607,7 @@ unsigned long long _stdlib_strto_ll(register const Wchar * __restrict str,
 /* This is the main work fuction which handles both strtoll (sflag = 1) and
  * strtoull (sflag = 0). */
 
-unsigned long long __XL_NPP(_stdlib_strto_ll)(register const Wchar * __restrict str,
+unsigned long long attribute_hidden __XL_NPP(_stdlib_strto_ll)(register const Wchar * __restrict str,
                                                                                          Wchar ** __restrict endptr, int base,
                                                                                          int sflag   __LOCALE_PARAM )
 {
@@ -966,12 +978,14 @@ size_t wcstombs(char * __restrict s, const wchar_t * __restrict pwcs, size_t n)
 /**********************************************************************/
 #if defined(L_wcstol) || defined(L_wcstol_l)
 
-long __XL(wcstol)(const wchar_t * __restrict str,
+long __UCXL(wcstol)(const wchar_t * __restrict str,
                                  wchar_t ** __restrict endptr, int base   __LOCALE_PARAM )
 {
     return __XL_NPP(_stdlib_wcsto_l)(str, endptr, base, 1   __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(wcstol)
+
 #if (ULONG_MAX == UINTMAX_MAX) && !defined(L_wcstol_l)
 strong_alias(wcstol,wcstoimax)
 #endif
@@ -980,15 +994,13 @@ strong_alias(wcstol,wcstoimax)
 strong_alias(__XL(wcstol),__XL(wcstoll))
 #endif
 
-__XL_ALIAS(wcstol)
-
 #endif
 /**********************************************************************/
 #if defined(L_wcstoll) || defined(L_wcstoll_l)
 
 #if defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX)
 
-long long __XL(wcstoll)(const wchar_t * __restrict str,
+long long attribute_hidden __UCXL(wcstoll)(const wchar_t * __restrict str,
                                                wchar_t ** __restrict endptr, int base
                                                __LOCALE_PARAM )
 {
@@ -996,6 +1008,8 @@ long long __XL(wcstoll)(const wchar_t * __restrict str,
                                                                                                  __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(wcstoll)
+
 #if !defined(L_wcstoll_l)
 #if (ULLONG_MAX == UINTMAX_MAX)
 strong_alias(wcstoll,wcstoimax)
@@ -1003,21 +1017,21 @@ strong_alias(wcstoll,wcstoimax)
 strong_alias(wcstoll,wcstoq)
 #endif
 
-__XL_ALIAS(wcstoll)
-
 #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
 
 #endif
 /**********************************************************************/
 #if defined(L_wcstoul) || defined(L_wcstoul_l)
 
-unsigned long __XL(wcstoul)(const wchar_t * __restrict str,
+unsigned long attribute_hidden __UCXL(wcstoul)(const wchar_t * __restrict str,
                                                        wchar_t ** __restrict endptr, int base
                                                        __LOCALE_PARAM )
 {
     return __XL_NPP(_stdlib_wcsto_l)(str, endptr, base, 0   __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(wcstoul)
+
 #if (ULONG_MAX == UINTMAX_MAX) && !defined(L_wcstoul_l)
 strong_alias(wcstoul,wcstoumax)
 #endif
@@ -1026,21 +1040,21 @@ strong_alias(wcstoul,wcstoumax)
 strong_alias(__XL(wcstoul),__XL(wcstoull))
 #endif
 
-__XL_ALIAS(wcstoul)
-
 #endif
 /**********************************************************************/
 #if defined(L_wcstoull) || defined(L_wcstoull_l)
 
 #if defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX)
 
-unsigned long long __XL(wcstoull)(const wchar_t * __restrict str,
+unsigned long long attribute_hidden __UCXL(wcstoull)(const wchar_t * __restrict str,
                                                                  wchar_t ** __restrict endptr, int base
                                                                  __LOCALE_PARAM )
 {
     return __XL_NPP(_stdlib_wcsto_ll)(str, endptr, base, 0   __LOCALE_ARG );
 }
 
+__UCXL_ALIAS(wcstoull)
+
 #if !defined(L_wcstoull_l)
 #if (ULLONG_MAX == UINTMAX_MAX)
 strong_alias(wcstoull,wcstoumax)
@@ -1048,10 +1062,7 @@ strong_alias(wcstoull,wcstoumax)
 strong_alias(wcstoull,wcstouq)
 #endif
 
-__XL_ALIAS(wcstoull)
-
 #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
 
 #endif
 /**********************************************************************/
-