From 72a1a4af3c18627f59aa5ba1f753a89011b4e4f0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 08:42:36 +0400
Subject: [PATCH 05/46] uclibc-locale-no__x

Signed-off-by: Khem Raj <raj.khem@gmail.com>

Upstream-Status: Pending
---
 .../config/locale/uclibc/c++locale_internal.h      | 45 ++++++++++++++++++++++
 libstdc++-v3/config/locale/uclibc/c_locale.cc      | 14 -------
 libstdc++-v3/config/locale/uclibc/c_locale.h       |  1 +
 .../config/locale/uclibc/collate_members.cc        |  7 ----
 libstdc++-v3/config/locale/uclibc/ctype_members.cc |  7 ----
 .../config/locale/uclibc/messages_members.cc       |  7 +---
 .../config/locale/uclibc/messages_members.h        | 18 ++++-----
 .../config/locale/uclibc/monetary_members.cc       |  4 --
 .../config/locale/uclibc/numeric_members.cc        |  3 --
 libstdc++-v3/config/locale/uclibc/time_members.cc  |  3 --
 10 files changed, 55 insertions(+), 54 deletions(-)

diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
index 2ae3e4a..e74fddf 100644
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
 extern "C" __typeof(wctype_l) __wctype_l;
 #endif
 
+# define __nl_langinfo_l nl_langinfo_l
+# define __strcoll_l strcoll_l
+# define __strftime_l strftime_l
+# define __strtod_l strtod_l
+# define __strtof_l strtof_l
+# define __strtold_l strtold_l
+# define __strxfrm_l strxfrm_l
+# define __newlocale newlocale
+# define __freelocale freelocale
+# define __duplocale duplocale
+# define __uselocale uselocale
+
+# ifdef _GLIBCXX_USE_WCHAR_T
+#  define __iswctype_l iswctype_l
+#  define __towlower_l towlower_l
+#  define __towupper_l towupper_l
+#  define __wcscoll_l wcscoll_l
+#  define __wcsftime_l wcsftime_l
+#  define __wcsxfrm_l wcsxfrm_l
+#  define __wctype_l wctype_l
+# endif
+
+#else
+# define __nl_langinfo_l(N, L)       nl_langinfo((N))
+# define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
+# define __strtod_l(S, E, L)         strtod((S), (E))
+# define __strtof_l(S, E, L)         strtof((S), (E))
+# define __strtold_l(S, E, L)        strtold((S), (E))
+# define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
+# warning should dummy __newlocale check for C|POSIX ?
+# define __newlocale(a, b, c)        NULL
+# define __freelocale(a)             ((void)0)
+# define __duplocale(a)              __c_locale()
+//# define __uselocale ?
+//
+# ifdef _GLIBCXX_USE_WCHAR_T
+#  define __iswctype_l(C, M, L)       iswctype((C), (M))
+#  define __towlower_l(C, L)          towlower((C))
+#  define __towupper_l(C, L)          towupper((C))
+#  define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
+//#  define __wcsftime_l(S, M, F, T, L)  wcsftime((S), (M), (F), (T))
+#  define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
+#  define __wctype_l(S, L)            wctype((S))
+# endif
+
 #endif // GLIBC 2.3 and later
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
index 5081dc1..21430d0 100644
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
@@ -39,20 +39,6 @@
 #include <langinfo.h>
 #include <bits/c++locale_internal.h>
 
-#ifndef __UCLIBC_HAS_XLOCALE__
-#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
-#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
-#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
-#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
-#define __strtof_l(S, E, L)         strtof((S), (E))
-#define __strtod_l(S, E, L)         strtod((S), (E))
-#define __strtold_l(S, E, L)        strtold((S), (E))
-#warning should dummy __newlocale check for C|POSIX ?
-#define __newlocale(a, b, c)        NULL
-#define __freelocale(a)             ((void)0)
-#define __duplocale(a)              __c_locale()
-#endif
-
 namespace std
 {
   template<>
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
index da07c1f..4bca5f1 100644
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
@@ -68,6 +68,7 @@ namespace __gnu_cxx
 {
   extern "C" __typeof(uselocale) __uselocale;
 }
+#define __uselocale uselocale
 #endif
 
 namespace std
diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
index c2664a7..ec5c329 100644
--- a/libstdc++-v3/config/locale/uclibc/collate_members.cc
+++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
@@ -36,13 +36,6 @@
 #include <locale>
 #include <bits/c++locale_internal.h>
 
-#ifndef __UCLIBC_HAS_XLOCALE__
-#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-#endif
-
 namespace std
 {
   // These are basically extensions to char_traits, and perhaps should
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
index 7294e3a..7b12861 100644
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
@@ -38,13 +38,6 @@
 #undef _LIBC
 #include <bits/c++locale_internal.h>
 
-#ifndef __UCLIBC_HAS_XLOCALE__
-#define __wctype_l(S, L)           wctype((S))
-#define __towupper_l(C, L)         towupper((C))
-#define __towlower_l(C, L)         towlower((C))
-#define __iswctype_l(C, M, L)      iswctype((C), (M))
-#endif
-
 namespace std
 {
   // NB: The other ctype<char> specializations are in src/locale.cc and
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
index 13594d9..d7693b4 100644
--- a/libstdc++-v3/config/locale/uclibc/messages_members.cc
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
@@ -39,13 +39,10 @@
 #ifdef __UCLIBC_MJN3_ONLY__
 #warning fix gettext stuff
 #endif
-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-extern "C" char *__dcgettext(const char *domainname,
-			     const char *msgid, int category);
 #undef gettext
-#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
+#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
 #else
-#undef gettext
 #define gettext(msgid) (msgid)
 #endif
 
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
index 1424078..d89da33 100644
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
@@ -36,15 +36,11 @@
 #ifdef __UCLIBC_MJN3_ONLY__
 #warning fix prototypes for *textdomain funcs
 #endif
-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-extern "C" char *__textdomain(const char *domainname);
-extern "C" char *__bindtextdomain(const char *domainname,
-				  const char *dirname);
-#else
-#undef __textdomain
-#undef __bindtextdomain
-#define __textdomain(D)           ((void)0)
-#define __bindtextdomain(D,P)     ((void)0)
+#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
+#undef textdomain
+#undef bindtextdomain
+#define textdomain(D)           ((void)0)
+#define bindtextdomain(D,P)     ((void)0)
 #endif
 
   // Non-virtual member functions.
@@ -70,7 +66,7 @@ extern "C" char *__bindtextdomain(const char *domainname,
     messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
 			   const char* __dir) const
     {
-      __bindtextdomain(__s.c_str(), __dir);
+      bindtextdomain(__s.c_str(), __dir);
       return this->do_open(__s, __loc);
     }
 
@@ -90,7 +86,7 @@ extern "C" char *__bindtextdomain(const char *domainname,
     {
       // No error checking is done, assume the catalog exists and can
       // be used.
-      __textdomain(__s.c_str());
+      textdomain(__s.c_str());
       return 0;
     }
 
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
index aa52731..2e6f80a 100644
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
@@ -43,10 +43,6 @@
 #warning tailor for stub locale support
 #endif
 
-#ifndef __UCLIBC_HAS_XLOCALE__
-#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-#endif
-
 namespace std
 {
   // Construct and return valid pattern consisting of some combination of:
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
index 883ec1a..2c70642 100644
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
@@ -41,9 +41,6 @@
 #ifdef __UCLIBC_MJN3_ONLY__
 #warning tailor for stub locale support
 #endif
-#ifndef __UCLIBC_HAS_XLOCALE__
-#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-#endif
 
 namespace std
 {
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
index e0707d7..d848ed5 100644
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
@@ -40,9 +40,6 @@
 #ifdef __UCLIBC_MJN3_ONLY__
 #warning tailor for stub locale support
 #endif
-#ifndef __UCLIBC_HAS_XLOCALE__
-#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-#endif
 
 namespace std
 {
-- 
2.6.3