diff options
author | Manuel Novoa III <mjn3@codepoet.org> | 2003-08-24 03:49:13 +0000 |
---|---|---|
committer | Manuel Novoa III <mjn3@codepoet.org> | 2003-08-24 03:49:13 +0000 |
commit | 50660812be5588036a14fc85af16bccef68fac02 (patch) | |
tree | 65f25cc1dda3c7efc76efee2c61b28973465db2a /libintl/intl.c | |
parent | 02f74937667727e32c591afe42e90e2b515ab61e (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 'libintl/intl.c')
-rw-r--r-- | libintl/intl.c | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/libintl/intl.c b/libintl/intl.c new file mode 100644 index 000000000..4c79aaa5f --- /dev/null +++ b/libintl/intl.c @@ -0,0 +1,166 @@ +/* Copyright (C) 2003 Manuel Novoa III + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * Stub version of libintl. + */ + +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#undef __OPTIMIZE__ +#include <libintl.h> + +/**********************************************************************/ +#ifdef L_gettext + +char *gettext(const char *msgid) +{ + return (char *) msgid; +} + +#endif +/**********************************************************************/ +#ifdef L_dgettext + +char *__dgettext(const char *domainname, + const char *msgid) +{ + return (char *) msgid; +} + +weak_alias (__dgettext, dgettext) + +#endif +/**********************************************************************/ +#ifdef L_dcgettext + +char * __dcgettext(const char *domainname, + const char *msgid, int category) +{ + return (char *) msgid; +} + +weak_alias (__dcgettext, dcgettext) + +#endif +/**********************************************************************/ +#ifdef L_ngettext + +char *ngettext(const char *msgid1, const char *msgid2, + unsigned long int n) +{ + return (char *) ((n == 1) ? msgid1 : msgid2); +} + +#endif +/**********************************************************************/ +#ifdef L_dngettext + +char *dngettext(const char *domainname, const char *msgid1, + const char *msgid2, unsigned long int n) +{ + return (char *) ((n == 1) ? msgid1 : msgid2); +} + +#endif +/**********************************************************************/ +#ifdef L_dcngettext + +char *dcngettext(const char *domainname, const char *msgid1, + const char *msgid2, unsigned long int n, + int category) +{ + return (char *) ((n == 1) ? msgid1 : msgid2); +} + +#endif +/**********************************************************************/ +#ifdef L_textdomain + +char *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; +} + +#endif +/**********************************************************************/ +#ifdef L_bindtextdomain + +char *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; +} + +#endif +/**********************************************************************/ +#ifdef L_bind_textdomain_codeset + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char *bind_textdomain_codeset(const char *domainname, + const char *codeset) +{ + if (!domainname || !*domainname || codeset) { + __set_errno(EINVAL); + } + return NULL; +} + +#endif +/**********************************************************************/ +#ifdef L__nl_expand_alias + +/* glibc-ism */ + +const char *_nl_expand_alias(const char * name) +{ + return NULL; /* uClibc does not support locale aliases. */ +} + +#endif +/**********************************************************************/ +#ifdef L__nl_msg_cat_cntr + +/* glibc-ism */ + +int _nl_msg_cat_cntr = 0; + +#endif +/**********************************************************************/ |