libglocale was a short-lived project in 2005 that was never completed.
* gettext-runtime/intl/dcigettext.c: Assume IN_LIBGLOCALE is not defined.
* gettext-runtime/intl/libgnuintl.in.h: Likewise.
* gettext-runtime/intl/loadmsgcat.c: Likewise.
* gettext-runtime/intl/localealias.c: Likewise.
* gettext-runtime/intl/plural-exp.h: Likewise.
* gettext-runtime/intl/gettextP.h: Likewise.
(gl_dcigettext): Remove declaration.
* gettext-runtime/intl/Makefile.am (libgnuintl.h, libintl.h): Remove the
IN_LIBGLOCALE handling.
EXTRA_DIST += export.h
libgnuintl.h: $(srcdir)/libgnuintl.in.h $(srcdir)/export.h
- sed -e '/IN_LIBGLOCALE/d' \
- -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+ sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
-e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
MOSTLYCLEANFILES += libgnuintl.h
libintl.h: $(srcdir)/libgnuintl.in.h
- sed -e '/IN_LIBGLOCALE/d' \
- -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+ sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
-e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
#ifdef _LIBC
# include <libintl.h>
#else
-# ifdef IN_LIBGLOCALE
-# include <libintl.h>
-# endif
# include "libgnuintl.h"
#endif
#include "hash-string.h"
#endif
/* Whether to support different locales in different threads. */
-#if defined _LIBC || HAVE_USELOCALE || defined IN_LIBGLOCALE
+#if defined _LIBC || HAVE_USELOCALE
# define HAVE_PER_THREAD_LOCALE
#endif
const char *localename;
#endif
-#ifdef IN_LIBGLOCALE
- /* The character encoding. */
- const char *encoding;
-#endif
-
/* State of the catalog counter at the point the string was found. */
int counter;
result = strcmp (s1->localename, s2->localename);
if (result == 0)
#endif
- {
-#ifdef IN_LIBGLOCALE
- result = strcmp (s1->encoding, s2->encoding);
- if (result == 0)
-#endif
- /* We compare the category last (though this is the cheapest
- operation) since it is hopefully always the same (namely
- LC_MESSAGES). */
- result = s1->category - s2->category;
- }
+ /* We compare the category last (though this is the cheapest
+ operation) since it is hopefully always the same (namely
+ LC_MESSAGES). */
+ result = s1->category - s2->category;
}
}
textdomain(3). The default value for this is "messages". */
const char _nl_default_default_domain[] attribute_hidden = "messages";
-#ifndef IN_LIBGLOCALE
/* Value used as the default domain for gettext(3). */
const char *_nl_current_default_domain attribute_hidden
= _nl_default_default_domain;
-#endif
/* Contains the default location of the message catalogs. */
#if defined __EMX__ && !defined __KLIBC__
# endif
#endif
-#ifndef IN_LIBGLOCALE
/* List with bindings of specific domains created by bindtextdomain()
calls. */
struct binding *_nl_domain_bindings;
-#endif
/* Prototypes for local functions. */
static char *plural_lookup (struct loaded_l10nfile *domain,
unsigned long int n,
const char *translation, size_t translation_len);
-#ifdef IN_LIBGLOCALE
-static const char *guess_category_value (int category,
- const char *categoryname,
- const char *localename);
-#else
static const char *guess_category_value (int category,
const char *categoryname);
-#endif
#ifdef _LIBC
# include "../locale/localeinfo.h"
#else
static const char *category_to_name (int category);
#endif
-#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE
+#if defined _LIBC || HAVE_ICONV
static const char *get_output_charset (struct binding *domainbinding);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current
CATEGORY locale and, if PLURAL is nonzero, search over string
depending on the plural form determined by N. */
-#ifdef IN_LIBGLOCALE
-char *
-gl_dcigettext (const char *domainname,
- const char *msgid1, const char *msgid2,
- int plural, unsigned long int n,
- int category,
- const char *localename, const char *encoding)
-#else
char *
DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
int plural, unsigned long int n, int category)
-#endif
{
#ifndef HAVE_ALLOCA
struct block_list *block_list = NULL;
int saved_errno;
struct known_translation_t search;
struct known_translation_t **foundp = NULL;
-#if defined HAVE_PER_THREAD_LOCALE && !defined IN_LIBGLOCALE
+#if defined HAVE_PER_THREAD_LOCALE
const char *localename;
#endif
size_t domainname_len;
search.domainname = domainname;
search.category = category;
#ifdef HAVE_PER_THREAD_LOCALE
-# ifndef IN_LIBGLOCALE
-# ifdef _LIBC
+# ifdef _LIBC
localename = __current_locale_name (category);
-# else
+# else
categoryname = category_to_name (category);
-# define CATEGORYNAME_INITIALIZED
+# define CATEGORYNAME_INITIALIZED
localename = gl_locale_name_thread_unsafe (category, categoryname);
if (localename == NULL)
localename = "";
-# endif
# endif
search.localename = localename;
#endif
-#ifdef IN_LIBGLOCALE
- search.encoding = encoding;
-#endif
/* Since tfind/tsearch manage a balanced tree, concurrent tfind and
tsearch calls can be fatal. */
DETERMINE_SECURE;
/* First find matching binding. */
-#ifdef IN_LIBGLOCALE
- /* We can use a trivial binding, since _nl_find_msg will ignore it anyway,
- and _nl_load_domain and _nl_find_domain just pass it through. */
- binding = NULL;
- dirname = bindtextdomain (domainname, NULL);
-# if defined _WIN32 && !defined __CYGWIN__
- wdirname = wbindtextdomain (domainname, NULL);
-# endif
-#else
for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
{
int compare = strcmp (domainname, binding->domainname);
if (binding == NULL)
{
dirname = _nl_default_dirname;
-# if defined _WIN32 && !defined __CYGWIN__
+#if defined _WIN32 && !defined __CYGWIN__
wdirname = NULL;
-# endif
+#endif
}
else
{
dirname = binding->dirname;
-# if defined _WIN32 && !defined __CYGWIN__
- wdirname = binding->wdirname;
-# endif
-#endif
#if defined _WIN32 && !defined __CYGWIN__
+ wdirname = binding->wdirname;
if (wdirname != NULL
? IS_RELATIVE_FILE_NAME (wdirname)
: IS_RELATIVE_FILE_NAME (dirname))
dirname = xdirname;
}
#endif
-#ifndef IN_LIBGLOCALE
}
-#endif
/* Now determine the symbolic name of CATEGORY and its value. */
#ifndef CATEGORYNAME_INITIALIZED
categoryname = category_to_name (category);
#endif
-#ifdef IN_LIBGLOCALE
- categoryvalue = guess_category_value (category, categoryname, localename);
-#else
categoryvalue = guess_category_value (category, categoryname);
-#endif
domainname_len = strlen (domainname);
xdomainname = (char *) alloca (strlen (categoryname)
if (domain != NULL)
{
-#if defined IN_LIBGLOCALE
- retval = _nl_find_msg (domain, binding, encoding, msgid1, &retlen);
-#else
retval = _nl_find_msg (domain, binding, msgid1, 1, &retlen);
-#endif
if (retval == NULL)
{
for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
{
-#if defined IN_LIBGLOCALE
- retval = _nl_find_msg (domain->successor[cnt], binding,
- encoding, msgid1, &retlen);
-#else
retval = _nl_find_msg (domain->successor[cnt], binding,
msgid1, 1, &retlen);
-#endif
/* Resource problems are not fatal, instead we return no
translation. */
newp->category = category;
#ifdef HAVE_PER_THREAD_LOCALE
newp->localename = new_localename;
-#endif
-#ifdef IN_LIBGLOCALE
- newp->encoding = encoding;
#endif
newp->counter = _nl_msg_cat_cntr;
newp->domain = domain;
Return it if found. Return NULL if not found or in case of a conversion
failure (problem in the particular message catalog). Return (char *) -1
in case of a memory allocation failure during conversion (only if
- ENCODING != NULL resp. CONVERT == true). */
+ CONVERT == true). */
char *
-#ifdef IN_LIBGLOCALE
-_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *encoding,
- const char *msgid,
- size_t *lengthp)
-#else
_nl_find_msg (struct loaded_l10nfile *domain_file,
struct binding *domainbinding,
const char *msgid, int convert,
size_t *lengthp)
-#endif
{
struct loaded_domain *domain;
nls_uint32 nstrings;
}
#if defined _LIBC || HAVE_ICONV
-# ifdef IN_LIBGLOCALE
- if (encoding != NULL)
-# else
if (convert)
-# endif
{
/* We are supposed to do a conversion. */
-# ifndef IN_LIBGLOCALE
const char *encoding = get_output_charset (domainbinding);
-# endif
size_t nconversions;
struct converted_domain *convd;
size_t i;
reallocate domain->conversions because we pass
encoding = NULL or convert = 0, respectively. */
nullentry =
-# ifdef IN_LIBGLOCALE
- _nl_find_msg (domain_file, domainbinding, NULL, "",
- &nullentrylen);
-# else
_nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
-# endif
/* Resource problems are fatal. If we continue onwards we will
only attempt to calloc a new conv_tab and fail later. */
if (__builtin_expect (nullentry == (char *) -1, 0))
{
-# ifndef IN_LIBGLOCALE
free ((char *) encoding);
-# endif
goto unlock_fail;
}
This uses values of the environment variables LC_ALL, LC_*, LANG, LANGUAGE,
and/or system-dependent defaults. */
static const char *
-#ifdef IN_LIBGLOCALE
-guess_category_value (int category, const char *categoryname,
- const char *locale)
-
-#else
guess_category_value (int category, const char *categoryname)
-#endif
{
const char *language;
-#ifndef IN_LIBGLOCALE
const char *locale;
-# ifndef _LIBC
+#ifndef _LIBC
const char *language_default;
int locale_defaulted;
-# endif
#endif
/* We use the settings in the following order:
- If the system provides both a list of languages and a default locale,
the former is used. */
-#ifndef IN_LIBGLOCALE
/* Fetch the locale name, through the POSIX method of looking to `LC_ALL',
`LC_xxx', and `LANG'. On some systems this can be done by the
`setlocale' function itself. */
-# ifdef _LIBC
+#ifdef _LIBC
locale = __current_locale_name (category);
-# else
+#else
locale_defaulted = 0;
-# if HAVE_USELOCALE
+# if HAVE_USELOCALE
locale = gl_locale_name_thread_unsafe (category, categoryname);
if (locale == NULL)
-# endif
+# endif
{
locale = gl_locale_name_posix (category, categoryname);
if (locale == NULL)
locale_defaulted = 1;
}
}
-# endif
#endif
/* Ignore LANGUAGE and its system-dependent analogon if the locale is set
language = getenv ("LANGUAGE");
if (language != NULL && language[0] != '\0')
return language;
-#if !defined IN_LIBGLOCALE && !defined _LIBC
+#if !defined _LIBC
/* The next priority value is the locale name, if not defaulted. */
if (locale_defaulted)
{
return locale;
}
-#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE
+#if defined _LIBC || HAVE_ICONV
/* Returns the output charset. */
static const char *
get_output_charset (struct binding *domainbinding)
/* Header describing internals of libintl library.
- Copyright (C) 1995-2023 Free Software Foundation, Inc.
+ Copyright (C) 1995-2024 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
This program is free software: you can redistribute it and/or modify
# undef _INTL_REDIRECT_MACROS
# define _INTL_REDIRECT_MACROS
# include "libgnuintl.h"
-# ifdef IN_LIBGLOCALE
-extern char *gl_dcigettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category,
- const char *__localename, const char *__encoding);
-# else
extern char *libintl_dcigettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
int __plural, unsigned long int __n,
int __category);
-# endif
#endif
#include "loadinfo.h"
#if defined __KLIBC__ && !defined _LIBC
# define _nl_msg_cat_cntr libintl_nl_msg_cat_cntr
#endif
-#ifdef IN_LIBGLOCALE
-# include <glocale/config.h>
-extern LIBGLOCALE_SHLIB_EXPORTED int _nl_msg_cat_cntr;
-#else
extern LIBINTL_SHLIB_EXPORTED int _nl_msg_cat_cntr;
-#endif
#ifndef _LIBC
extern const char *_nl_language_preferences_default (void);
struct binding *__domainbinding)
attribute_hidden;
-#ifdef IN_LIBGLOCALE
-char *_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *encoding,
- const char *msgid,
- size_t *lengthp)
- attribute_hidden;
-#else
char *_nl_find_msg (struct loaded_l10nfile *domain_file,
struct binding *domainbinding, const char *msgid,
int convert, size_t *lengthp)
attribute_hidden;
-#endif
/* The internal variables in the standalone libintl.a must have different
names than the internal variables in GNU libc, otherwise programs
/* Message catalogs for internationalization.
- Copyright (C) 1995-1997, 2000-2016, 2018-2023 Free Software Foundation, Inc.
+ Copyright (C) 1995-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
#endif
-#ifndef IN_LIBGLOCALE
-
/* Set the current default message catalog to DOMAINNAME.
If DOMAINNAME is null, return the current default.
If DOMAINNAME is "", reset to the default of "messages". */
-# ifdef _INTL_REDIRECT_INLINE
+#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_textdomain (const char *__domainname);
static inline char *textdomain (const char *__domainname)
{
return libintl_textdomain (__domainname);
}
-# else
-# ifdef _INTL_REDIRECT_MACROS
-# define textdomain libintl_textdomain
-# endif
+#else
+# ifdef _INTL_REDIRECT_MACROS
+# define textdomain libintl_textdomain
+# endif
extern char *textdomain (const char *__domainname)
_INTL_ASM (libintl_textdomain);
-# endif
+#endif
/* Specify that the DOMAINNAME message catalog will be found
in DIRNAME rather than in the system locale data base. */
-# ifdef _INTL_REDIRECT_INLINE
+#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_bindtextdomain (const char *__domainname,
const char *__dirname);
static inline char *bindtextdomain (const char *__domainname,
{
return libintl_bindtextdomain (__domainname, __dirname);
}
-# else
-# ifdef _INTL_REDIRECT_MACROS
-# define bindtextdomain libintl_bindtextdomain
-# endif
+#else
+# ifdef _INTL_REDIRECT_MACROS
+# define bindtextdomain libintl_bindtextdomain
+# endif
extern char *bindtextdomain (const char *__domainname, const char *__dirname)
_INTL_ASM (libintl_bindtextdomain);
-# endif
+#endif
-# if defined _WIN32 && !defined __CYGWIN__
+#if defined _WIN32 && !defined __CYGWIN__
/* Specify that the DOMAINNAME message catalog will be found
in WDIRNAME rather than in the system locale data base. */
-# ifdef _INTL_REDIRECT_INLINE
+# ifdef _INTL_REDIRECT_INLINE
extern wchar_t *libintl_wbindtextdomain (const char *__domainname,
const wchar_t *__wdirname);
static inline wchar_t *wbindtextdomain (const char *__domainname,
{
return libintl_wbindtextdomain (__domainname, __wdirname);
}
-# else
-# ifdef _INTL_REDIRECT_MACROS
-# define wbindtextdomain libintl_wbindtextdomain
-# endif
+# else
+# ifdef _INTL_REDIRECT_MACROS
+# define wbindtextdomain libintl_wbindtextdomain
+# endif
extern wchar_t *wbindtextdomain (const char *__domainname,
const wchar_t *__wdirname)
_INTL_ASM (libintl_wbindtextdomain);
-# endif
# endif
+#endif
/* Specify the character encoding in which the messages from the
DOMAINNAME message catalog will be returned. */
-# ifdef _INTL_REDIRECT_INLINE
+#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_bind_textdomain_codeset (const char *__domainname,
const char *__codeset);
static inline char *bind_textdomain_codeset (const char *__domainname,
{
return libintl_bind_textdomain_codeset (__domainname, __codeset);
}
-# else
-# ifdef _INTL_REDIRECT_MACROS
-# define bind_textdomain_codeset libintl_bind_textdomain_codeset
-# endif
+#else
+# ifdef _INTL_REDIRECT_MACROS
+# define bind_textdomain_codeset libintl_bind_textdomain_codeset
+# endif
extern char *bind_textdomain_codeset (const char *__domainname,
const char *__codeset)
_INTL_ASM (libintl_bind_textdomain_codeset);
-# endif
-
-#endif /* IN_LIBGLOCALE */
+#endif
/* Support for format strings with positions in *printf(), following the
/* Load needed message catalogs.
- Copyright (C) 1995-2023 Free Software Foundation, Inc.
+ Copyright (C) 1995-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
#endif
/* Get the header entry and look for a plural specification. */
-#ifdef IN_LIBGLOCALE
- nullentry =
- _nl_find_msg (domain_file, domainbinding, NULL, "", &nullentrylen);
-#else
nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
-#endif
if (__builtin_expect (nullentry == (char *) -1, 0))
{
#ifdef _LIBC
/* Handle aliases for locale names.
- Copyright (C) 1995-2023 Free Software Foundation, Inc.
+ Copyright (C) 1995-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
else if (cp[0] != '\0')
*cp++ = '\0';
-# ifdef IN_LIBGLOCALE
- /* glibc's locale.alias contains entries for ja_JP and ko_KR
- that make it impossible to use a Japanese or Korean UTF-8
- locale under the name "ja_JP" or "ko_KR". Ignore these
- entries. */
- if (strchr (alias, '_') == NULL)
-# endif
- {
- size_t alias_len;
- size_t value_len;
+ {
+ size_t alias_len;
+ size_t value_len;
- if (nmap >= maxmap)
- if (__builtin_expect (extend_alias_table (), 0))
- goto out;
+ if (nmap >= maxmap)
+ if (__builtin_expect (extend_alias_table (), 0))
+ goto out;
- alias_len = strlen (alias) + 1;
- value_len = strlen (value) + 1;
+ alias_len = strlen (alias) + 1;
+ value_len = strlen (value) + 1;
- if (string_space_act + alias_len + value_len > string_space_max)
- {
+ if (string_space_act + alias_len + value_len > string_space_max)
+ {
# if defined __GNUC__ && __GNUC__ >= 12
# pragma GCC diagnostic push
/* Suppress the valid GCC 12 warning until the code below is changed
# pragma GCC diagnostic ignored "-Wuse-after-free"
# endif
- /* Increase size of memory pool. */
- size_t new_size = (string_space_max
- + (alias_len + value_len > 1024
- ? alias_len + value_len : 1024));
- char *new_pool = (char *) realloc (string_space, new_size);
- if (new_pool == NULL)
- goto out;
-
- if (__builtin_expect (string_space != new_pool, 0))
- {
- size_t i;
-
- for (i = 0; i < nmap; i++)
- {
- map[i].alias += new_pool - string_space;
- map[i].value += new_pool - string_space;
- }
- }
-
- string_space = new_pool;
- string_space_max = new_size;
- }
-
- map[nmap].alias =
- (const char *) memcpy (&string_space[string_space_act],
- alias, alias_len);
- string_space_act += alias_len;
-
- map[nmap].value =
- (const char *) memcpy (&string_space[string_space_act],
- value, value_len);
- string_space_act += value_len;
+ /* Increase size of memory pool. */
+ size_t new_size = (string_space_max
+ + (alias_len + value_len > 1024
+ ? alias_len + value_len : 1024));
+ char *new_pool = (char *) realloc (string_space, new_size);
+ if (new_pool == NULL)
+ goto out;
+
+ if (__builtin_expect (string_space != new_pool, 0))
+ {
+ size_t i;
+
+ for (i = 0; i < nmap; i++)
+ {
+ map[i].alias += new_pool - string_space;
+ map[i].value += new_pool - string_space;
+ }
+ }
+
+ string_space = new_pool;
+ string_space_max = new_size;
+ }
+
+ map[nmap].alias =
+ (const char *) memcpy (&string_space[string_space_act],
+ alias, alias_len);
+ string_space_act += alias_len;
+
+ map[nmap].value =
+ (const char *) memcpy (&string_space[string_space_act],
+ value, value_len);
+ string_space_act += value_len;
# if defined __GNUC__ && __GNUC__ >= 12
# pragma GCC diagnostic pop
# endif
- ++nmap;
- ++added;
- }
+ ++nmap;
+ ++added;
+ }
}
}
/* Expression parsing and evaluation for plural form selection.
- Copyright (C) 2000-2023 Free Software Foundation, Inc.
+ Copyright (C) 2000-2024 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
This program is free software: you can redistribute it and/or modify
unsigned long int value; /* Only relevant for status == PE_OK */
};
-#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE)
+#if !defined (_LIBC) && !defined (IN_LIBINTL)
extern struct eval_result plural_eval (const struct expression *pexp,
unsigned long int n);
#endif