From 50660812be5588036a14fc85af16bccef68fac02 Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Sun, 24 Aug 2003 03:49:13 +0000 Subject: Fix a few bugs in the new extended locale functions. Move stub gettext functions to a stub libintl to make switching in gnu gettext easier. Also add a few gnu-isms. Change to using hidden names with global weak aliases for the extended locale functions, as expected by libstd++. Slightly rework the locale data generation stuff to allow pregenerated locale data to be used with buildroot. --- include/langinfo.h | 2 ++ include/locale.h | 6 ++++++ include/stdlib.h | 31 +++++++++++++++++++++++++++++++ include/string.h | 11 +++++++++++ include/time.h | 11 +++++++++++ include/wchar.h | 39 +++++++++++++++++++++++++++++++++++++++ include/wctype.h | 17 +++++++++++++++++ 7 files changed, 117 insertions(+) (limited to 'include') diff --git a/include/langinfo.h b/include/langinfo.h index a129c12ae..1852b99b0 100644 --- a/include/langinfo.h +++ b/include/langinfo.h @@ -615,6 +615,8 @@ extern char *nl_langinfo (nl_item __item) __THROW; /* Just like nl_langinfo but get the information from the locale object L. */ extern char *nl_langinfo_l (nl_item __item, __locale_t l); +extern char *__nl_langinfo_l (nl_item __item, __locale_t l); + #endif #endif diff --git a/include/locale.h b/include/locale.h index 02d33a0d4..d7f90c969 100644 --- a/include/locale.h +++ b/include/locale.h @@ -218,6 +218,12 @@ extern __locale_t uselocale (__locale_t __dataset) __THROW; Passing this value to any other function has undefined behavior. */ # define LC_GLOBAL_LOCALE ((__locale_t) -1L) +extern __locale_t __newlocale (int __category_mask, __const char *__locale, + __locale_t __base) __THROW; +extern __locale_t __duplocale (__locale_t __dataset) __THROW; +extern void __freelocale (__locale_t __dataset) __THROW; +extern __locale_t __uselocale (__locale_t __dataset) __THROW; + #endif __END_DECLS diff --git a/include/stdlib.h b/include/stdlib.h index f7589d7ea..82f1643b6 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -267,6 +267,37 @@ extern float strtof_l (__const char *__restrict __nptr, extern long double strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) __THROW; + +/* Internal names to support libstd++. */ +extern long int __strtol_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __THROW; + +extern unsigned long int __strtoul_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) __THROW; + +__extension__ +extern long long int __strtoll_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __THROW; + +__extension__ +extern unsigned long long int __strtoull_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __THROW; + +extern double __strtod_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __THROW; + +extern float __strtof_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) __THROW; + +extern long double __strtold_l (__const char *__restrict __nptr, + char **__restrict __endptr, + __locale_t __loc) __THROW; #endif /* GNU */ #endif /* __UCLIBC_HAS_XLOCALE__ */ diff --git a/include/string.h b/include/string.h index f3ef812bf..a2045eeda 100644 --- a/include/string.h +++ b/include/string.h @@ -117,9 +117,15 @@ __END_NAMESPACE_STD /* Compare the collated forms of S1 and S2 using rules from L. */ extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) __THROW __attribute_pure__; +extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) + __THROW __attribute_pure__; + /* Put a transformation of SRC into no more than N bytes of DEST. */ extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, __locale_t __l) __THROW; +extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n, + __locale_t __l) __THROW; + #endif #endif @@ -323,10 +329,15 @@ extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) of the global one. */ extern int strcasecmp_l (__const char *__s1, __const char *__s2, __locale_t __loc) __THROW __attribute_pure__; +extern int __strcasecmp_l (__const char *__s1, __const char *__s2, + __locale_t __loc) __THROW __attribute_pure__; extern int strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) __THROW __attribute_pure__; +extern int __strncasecmp_l (__const char *__s1, __const char *__s2, + size_t __n, __locale_t __loc) + __THROW __attribute_pure__; #endif #endif diff --git a/include/time.h b/include/time.h index 8dc787917..d2ae86328 100644 --- a/include/time.h +++ b/include/time.h @@ -224,6 +224,17 @@ extern size_t strftime_l (char *__restrict __s, size_t __maxsize, extern char *strptime_l (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp, __locale_t __loc) __THROW; + + +extern size_t __strftime_l (char *__restrict __s, size_t __maxsize, + __const char *__restrict __format, + __const struct tm *__restrict __tp, + __locale_t __loc) __THROW; + +extern char *__strptime_l (__const char *__restrict __s, + __const char *__restrict __fmt, struct tm *__tp, + __locale_t __loc) __THROW; + # endif #endif diff --git a/include/wchar.h b/include/wchar.h index 5fb44f418..09ab741ae 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -180,9 +180,13 @@ extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) __THROW; +extern int __wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, + __locale_t __loc) __THROW; extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) __THROW; +extern int __wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, + size_t __n, __locale_t __loc) __THROW; #endif /* __UCLIBC_HAS_XLOCALE__ */ #endif @@ -206,12 +210,17 @@ __END_NAMESPACE_C99 LC_COLLATE category of the given locale. */ extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) __THROW; +extern int __wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, + __locale_t __loc) __THROW; /* Transform S2 into array pointed to by S1 such that if wcscmp is applied to two transformed strings the result is the as applying `wcscoll' to the original strings. */ extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) __THROW; +extern size_t __wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, + size_t __n, __locale_t __loc) __THROW; + #endif /* __UCLIBC_HAS_XLOCALE__ */ /* Duplicate S, returning an identical malloc'd string. */ @@ -465,33 +474,57 @@ extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, extern long int wcstol_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; +extern long int __wcstol_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base, + __locale_t __loc) __THROW; extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; +extern unsigned long int __wcstoul_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base, __locale_t __loc) __THROW; __extension__ extern long long int wcstoll_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; +__extension__ +extern long long int __wcstoll_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base, __locale_t __loc) __THROW; __extension__ extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; +__extension__ +extern unsigned long long int __wcstoull_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base, __locale_t __loc) + __THROW; extern double wcstod_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) __THROW; +extern double __wcstod_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, __locale_t __loc) + __THROW; extern float wcstof_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) __THROW; +extern float __wcstof_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, __locale_t __loc) + __THROW; extern long double wcstold_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) __THROW; +extern long double __wcstold_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + __locale_t __loc) __THROW; #endif /* __UCLIBC_HAS_XLOCALE__ */ #endif /* GNU */ @@ -803,6 +836,7 @@ extern int fputws_unlocked (__const wchar_t *__restrict __ws, #endif +#if 0 __BEGIN_NAMESPACE_C99 /* Format TP into S according to FORMAT. Write no more than MAXSIZE wide characters and return the number @@ -822,8 +856,13 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, __const wchar_t *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) __THROW; +extern size_t __wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, + __const wchar_t *__restrict __format, + __const struct tm *__restrict __tp, + __locale_t __loc) __THROW; #endif /* __UCLIBC_HAS_XLOCALE__ */ # endif +#endif /* 0 */ /* The X/Open standard demands that most of the functions defined in the header must also appear here. This is probably diff --git a/include/wctype.h b/include/wctype.h index 86b5db44c..688c1fd46 100644 --- a/include/wctype.h +++ b/include/wctype.h @@ -322,6 +322,23 @@ extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale) extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, __locale_t __locale) __THROW; +extern int __iswalnum_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswalpha_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswblank_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswcntrl_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswdigit_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswgraph_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswlower_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswprint_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswpunct_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswspace_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswupper_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswxdigit_l(wint_t __wc, __locale_t __locale) __THROW; +extern wint_t __towlower_l(wint_t __wc, __locale_t __locale) __THROW; +extern wint_t __towupper_l(wint_t __wc, __locale_t __locale) __THROW; +extern int __iswctype_l(wint_t __wc, wctype_t __desc, __locale_t __locale) __THROW; +extern wctrans_t __wctrans_l(const char *__property, __locale_t __locale) __THROW; +extern wint_t __towctrans_l(wint_t __wc, wctrans_t __desc, __locale_t __locale) __THROW; # endif /* Use GNU. */ __END_DECLS -- cgit v1.2.3