summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2003-08-24 03:49:13 +0000
committerManuel Novoa III <mjn3@codepoet.org>2003-08-24 03:49:13 +0000
commit50660812be5588036a14fc85af16bccef68fac02 (patch)
tree65f25cc1dda3c7efc76efee2c61b28973465db2a /include
parent02f74937667727e32c591afe42e90e2b515ab61e (diff)
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.
Diffstat (limited to 'include')
-rw-r--r--include/langinfo.h2
-rw-r--r--include/locale.h6
-rw-r--r--include/stdlib.h31
-rw-r--r--include/string.h11
-rw-r--r--include/time.h11
-rw-r--r--include/wchar.h39
-rw-r--r--include/wctype.h17
7 files changed, 117 insertions, 0 deletions
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 <wctype.h> 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