summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/misc/intl/Makefile3
-rw-r--r--libc/misc/intl/intl.c54
-rw-r--r--libintl/intl.c29
3 files changed, 70 insertions, 16 deletions
diff --git a/libc/misc/intl/Makefile b/libc/misc/intl/Makefile
index 9975e5eb1..140ae31f3 100644
--- a/libc/misc/intl/Makefile
+++ b/libc/misc/intl/Makefile
@@ -25,7 +25,8 @@ TOPDIR=../../../
include $(TOPDIR)Rules.mak
MSRC= intl.c
-MOBJ= __uClibc_dgettext.o __uClibc_dcgettext.o
+MOBJ= __uClibc_dgettext.o __uClibc_dcgettext.o \
+ __uClibc_textdomain.o __uClibc_bindtextdomain.o # for libstd++
OBJS=$(MOBJ)
diff --git a/libc/misc/intl/intl.c b/libc/misc/intl/intl.c
index eca6fa96a..f3255828c 100644
--- a/libc/misc/intl/intl.c
+++ b/libc/misc/intl/intl.c
@@ -17,6 +17,9 @@
/*
* Supply some weaks for use by strerror*(), etc.
+ *
+ * Aug 30, 2003
+ * Add some hidden names to support locale-enabled libstd++.
*/
#include <stdlib.h>
@@ -35,19 +38,62 @@ char *__uClibc_dgettext(const char *domainname,
return (char *) msgid;
}
-weak_alias (__uClibc_dgettext, __dgettext)
+weak_alias(__uClibc_dgettext, __dgettext)
#endif
/**********************************************************************/
#ifdef L___uClibc_dcgettext
-char * __uClibc_dcgettext(const char *domainname,
- const char *msgid, int category)
+char *__uClibc_dcgettext(const char *domainname,
+ const char *msgid, int category)
{
return (char *) msgid;
}
-weak_alias (__uClibc_dcgettext, __dcgettext)
+weak_alias(__uClibc_dcgettext, __dcgettext)
+
+#endif
+/**********************************************************************/
+#ifdef L___uClibc_textdomain
+
+char *__uClibc_textdomain(const char *domainname)
+{
+ static const char default_str[] = "messages";
+
+ if (domainname && *domainname && strcmp(domainname, default_str)) {
+ __set_errno(EINVAL);
+ return NULL;
+ }
+ return (char *) default_str;
+}
+
+weak_alias(__uClibc_textdomain, __textdomain)
+
+#endif
+/**********************************************************************/
+#ifdef L___uClibc_bindtextdomain
+
+char *__uClibc_bindtextdomain(const char *domainname, const char *dirname)
+{
+ static const char dir[] = "/";
+
+ if (!domainname || !*domainname
+ || (dirname
+#if 1
+ && ((dirname[0] != '/') || dirname[1])
+#else
+ && strcmp(dirname, dir)
+#endif
+ )
+ ) {
+ __set_errno(EINVAL);
+ return NULL;
+ }
+
+ return (char *) dir;
+}
+
+weak_alias(__uClibc_bindtextdomain, __bindtextdomain)
#endif
/**********************************************************************/
diff --git a/libintl/intl.c b/libintl/intl.c
index 4c79aaa5f..51765a99e 100644
--- a/libintl/intl.c
+++ b/libintl/intl.c
@@ -17,6 +17,9 @@
/*
* Stub version of libintl.
+ *
+ * Aug 30, 2003
+ * Add some hidden names to support locale-enabled libstd++.
*/
#include <stdlib.h>
@@ -44,26 +47,26 @@ char *__dgettext(const char *domainname,
return (char *) msgid;
}
-weak_alias (__dgettext, dgettext)
+strong_alias(__dgettext, dgettext)
#endif
/**********************************************************************/
#ifdef L_dcgettext
-char * __dcgettext(const char *domainname,
- const char *msgid, int category)
+char *__dcgettext(const char *domainname,
+ const char *msgid, int category)
{
return (char *) msgid;
}
-weak_alias (__dcgettext, dcgettext)
+strong_alias(__dcgettext, dcgettext)
#endif
/**********************************************************************/
#ifdef L_ngettext
char *ngettext(const char *msgid1, const char *msgid2,
- unsigned long int n)
+ unsigned long int n)
{
return (char *) ((n == 1) ? msgid1 : msgid2);
}
@@ -73,7 +76,7 @@ char *ngettext(const char *msgid1, const char *msgid2,
#ifdef L_dngettext
char *dngettext(const char *domainname, const char *msgid1,
- const char *msgid2, unsigned long int n)
+ const char *msgid2, unsigned long int n)
{
return (char *) ((n == 1) ? msgid1 : msgid2);
}
@@ -83,8 +86,8 @@ char *dngettext(const char *domainname, const char *msgid1,
#ifdef L_dcngettext
char *dcngettext(const char *domainname, const char *msgid1,
- const char *msgid2, unsigned long int n,
- int category)
+ const char *msgid2, unsigned long int n,
+ int category)
{
return (char *) ((n == 1) ? msgid1 : msgid2);
}
@@ -93,7 +96,7 @@ char *dcngettext(const char *domainname, const char *msgid1,
/**********************************************************************/
#ifdef L_textdomain
-char *textdomain(const char *domainname)
+char *__textdomain(const char *domainname)
{
static const char default_str[] = "messages";
@@ -104,11 +107,13 @@ char *textdomain(const char *domainname)
return (char *) default_str;
}
+strong_alias(__textdomain, textdomain)
+
#endif
/**********************************************************************/
#ifdef L_bindtextdomain
-char *bindtextdomain(const char *domainname, const char *dirname)
+char *__bindtextdomain(const char *domainname, const char *dirname)
{
static const char dir[] = "/";
@@ -128,6 +133,8 @@ char *bindtextdomain(const char *domainname, const char *dirname)
return (char *) dir;
}
+strong_alias(__bindtextdomain, bindtextdomain)
+
#endif
/**********************************************************************/
#ifdef L_bind_textdomain_codeset
@@ -151,7 +158,7 @@ char *bind_textdomain_codeset(const char *domainname,
const char *_nl_expand_alias(const char * name)
{
- return NULL; /* uClibc does not support locale aliases. */
+ return NULL; /* uClibc does not support locale aliases. */
}
#endif