[1/3] intl: Remove IN_LIBGLOCALE dead code

Message ID 20260505151142.1453614-2-avinal.xlvii@gmail.com (mailing list archive)
State Committed
Delegated to: Adhemerval Zanella Netto
Headers
Series intl: Remove dead code, sync with GNU gettext |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Avinal Kumar May 5, 2026, 3:11 p.m. UTC
  Remove all IN_LIBGLOCALE conditional blocks from intl/.  libglocale
was a proposed API from 2005 that was never completed or shipped.
The macro is never defined in glibc or in current GNU gettext, making
every #ifdef IN_LIBGLOCALE block dead code.

GNU gettext removed these in commits starting from 2023.  Removing
them from glibc reduces noise and eases future syncs with gettext.

Imported from GNU gettext commit d6a6801c1.
Original author: Bruno Haible <bruno@clisp.org>

Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>
---
 intl/dcigettext.c  | 116 +++++----------------------------------------
 intl/gettextP.h    |  21 --------
 intl/loadmsgcat.c  |   5 --
 intl/localealias.c |   9 +---
 intl/plural-exp.h  |   2 +-
 5 files changed, 15 insertions(+), 138 deletions(-)
  

Comments

Adhemerval Zanella May 13, 2026, 2:16 p.m. UTC | #1
On 05/05/26 12:11, Avinal Kumar wrote:
> Remove all IN_LIBGLOCALE conditional blocks from intl/.  libglocale
> was a proposed API from 2005 that was never completed or shipped.
> The macro is never defined in glibc or in current GNU gettext, making
> every #ifdef IN_LIBGLOCALE block dead code.
> 
> GNU gettext removed these in commits starting from 2023.  Removing
> them from glibc reduces noise and eases future syncs with gettext.
> 
> Imported from GNU gettext commit d6a6801c1.
> Original author: Bruno Haible <bruno@clisp.org>
> 
> Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  intl/dcigettext.c  | 116 +++++----------------------------------------
>  intl/gettextP.h    |  21 --------
>  intl/loadmsgcat.c  |   5 --
>  intl/localealias.c |   9 +---
>  intl/plural-exp.h  |   2 +-
>  5 files changed, 15 insertions(+), 138 deletions(-)
> 
> diff --git a/intl/dcigettext.c b/intl/dcigettext.c
> index 9ebc54eeec..17bb8af444 100644
> --- a/intl/dcigettext.c
> +++ b/intl/dcigettext.c
> @@ -95,9 +95,6 @@ extern int errno;
>  #ifdef _LIBC
>  # include <libintl.h>
>  #else
> -# ifdef IN_LIBGLOCALE
> -#  include <libintl.h>
> -# endif
>  # include "libgnuintl.h"
>  #endif
>  #include "hash-string.h"
> @@ -228,7 +225,7 @@ static void *mempcpy (void *dest, const void *src, size_t n);
>  #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
>  
> @@ -247,11 +244,6 @@ struct known_translation_t
>    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;
>  
> @@ -299,10 +291,6 @@ transcmp (const void *p1, const void *p2)
>  	  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).  */
> @@ -318,11 +306,9 @@ transcmp (const void *p1, const void *p2)
>     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__
> @@ -338,25 +324,17 @@ libc_hidden_data_def (_nl_default_dirname)
>  # 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"
> @@ -364,7 +342,7 @@ static const char *guess_category_value (int category,
>  #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
>  
> @@ -443,18 +421,9 @@ static int enable_secure;
>  /* 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
>  {
>    struct loaded_l10nfile *domain;
>    struct binding *binding;
> @@ -469,7 +438,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>    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;
> @@ -516,21 +485,16 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>    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 = _nl_locale_name_thread_unsafe (category, categoryname);
>    if (localename == NULL)
>      localename = "";
> -#  endif
>  # endif
>    search.localename = localename;
> -# ifdef IN_LIBGLOCALE
> -  search.encoding = encoding;
> -# endif
>  
>    /* Since tfind/tsearch manage a balanced tree, concurrent tfind and
>       tsearch calls can be fatal.  */
> @@ -562,12 +526,6 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>    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);
> -#else
>    for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
>      {
>        int compare = strcmp (domainname, binding->domainname);
> @@ -587,7 +545,6 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>    else
>      {
>        dirname = binding->dirname;
> -#endif
>        if (!IS_ABSOLUTE_PATH (dirname))
>  	{
>  	  /* We have a relative path.  Make it absolute now.  */
> @@ -603,20 +560,13 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>  	    goto return_untranslated;
>  	  dirname = xdirname;
>  	}
> -#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 *) malloc (strlen (categoryname)
>  				 + domainname_len + 5);
> @@ -675,11 +625,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>  
>        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)
>  	    {
> @@ -687,13 +633,8 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>  
>  	      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.  */
> @@ -754,9 +695,6 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>  		      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;
> @@ -837,17 +775,10 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
>     in case of a memory allocation failure during conversion (only if
>     ENCODING != NULL resp. 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;
> @@ -953,16 +884,10 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
>      }
>  
>  #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;
> @@ -1056,12 +981,7 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
>  		 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.  */
> @@ -1470,21 +1390,13 @@ category_to_name (int category)
>  /* Guess value of current locale from value of the environment variables
>     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:
> @@ -1501,18 +1413,17 @@ guess_category_value (int category, const char *categoryname)
>         - 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 = _nl_locale_name_thread_unsafe (category, categoryname);
>    if (locale == NULL)
> -#  endif
> +# endif
>      {
>        locale = _nl_locale_name_posix (category, categoryname);
>        if (locale == NULL)
> @@ -1521,7 +1432,6 @@ guess_category_value (int category, const char *categoryname)
>  	  locale_defaulted = 1;
>  	}
>      }
> -# endif
>  #endif
>  
>    /* Ignore LANGUAGE and its system-dependent analogon if the locale is set
> @@ -1547,7 +1457,7 @@ guess_category_value (int category, const char *categoryname)
>    language = getenv ("LANGUAGE");
>    if (language != NULL && language[0] != '\0')
>      return language;
> -#if !defined IN_LIBGLOCALE && !defined _LIBC
> +#ifndef _LIBC
>    /* The next priority value is the locale name, if not defaulted.  */
>    if (locale_defaulted)
>      {
> @@ -1561,7 +1471,7 @@ guess_category_value (int category, const char *categoryname)
>    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)
> diff --git a/intl/gettextP.h b/intl/gettextP.h
> index 9de46847ef..bc007e40e2 100644
> --- a/intl/gettextP.h
> +++ b/intl/gettextP.h
> @@ -70,18 +70,10 @@ extern void _nl_unload_domain (struct loaded_domain *__domain)
>  # 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"
> @@ -216,12 +208,7 @@ struct binding
>  /* A counter which is incremented each time some previous translations
>     become invalid.
>     This variable is part of the external ABI of the GNU libintl.  */
> -#ifdef IN_LIBGLOCALE
> -# include <glocale/config.h>
> -extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr;
> -#else
>  extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr;
> -#endif
>  
>  #ifndef _LIBC
>  extern const char *_nl_language_preferences_default (void);
> @@ -258,18 +245,10 @@ void _nl_load_domain (struct loaded_l10nfile *__domain,
>  		      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
> diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
> index f0afa37363..2bb339f3b9 100644
> --- a/intl/loadmsgcat.c
> +++ b/intl/loadmsgcat.c
> @@ -1256,12 +1256,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
>  #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
> diff --git a/intl/localealias.c b/intl/localealias.c
> index 5ab48d317d..fbb26d9efd 100644
> --- a/intl/localealias.c
> +++ b/intl/localealias.c
> @@ -294,14 +294,7 @@ read_alias_file (const char *fname, int fname_len)
>  	      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;
>  
> diff --git a/intl/plural-exp.h b/intl/plural-exp.h
> index f0d3a611e1..e5fea8949a 100644
> --- a/intl/plural-exp.h
> +++ b/intl/plural-exp.h
> @@ -109,7 +109,7 @@ extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
>  				       unsigned long int *npluralsp)
>       attribute_hidden;
>  
> -#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE)
> +#if !defined (_LIBC) && !defined (IN_LIBINTL)
>  extern unsigned long int plural_eval (const struct expression *pexp,
>  				      unsigned long int n);
>  #endif
  

Patch

diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index 9ebc54eeec..17bb8af444 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -95,9 +95,6 @@  extern int errno;
 #ifdef _LIBC
 # include <libintl.h>
 #else
-# ifdef IN_LIBGLOCALE
-#  include <libintl.h>
-# endif
 # include "libgnuintl.h"
 #endif
 #include "hash-string.h"
@@ -228,7 +225,7 @@  static void *mempcpy (void *dest, const void *src, size_t n);
 #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
 
@@ -247,11 +244,6 @@  struct known_translation_t
   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;
 
@@ -299,10 +291,6 @@  transcmp (const void *p1, const void *p2)
 	  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).  */
@@ -318,11 +306,9 @@  transcmp (const void *p1, const void *p2)
    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__
@@ -338,25 +324,17 @@  libc_hidden_data_def (_nl_default_dirname)
 # 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"
@@ -364,7 +342,7 @@  static const char *guess_category_value (int category,
 #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
 
@@ -443,18 +421,9 @@  static int enable_secure;
 /* 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
 {
   struct loaded_l10nfile *domain;
   struct binding *binding;
@@ -469,7 +438,7 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
   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;
@@ -516,21 +485,16 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
   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 = _nl_locale_name_thread_unsafe (category, categoryname);
   if (localename == NULL)
     localename = "";
-#  endif
 # endif
   search.localename = localename;
-# ifdef IN_LIBGLOCALE
-  search.encoding = encoding;
-# endif
 
   /* Since tfind/tsearch manage a balanced tree, concurrent tfind and
      tsearch calls can be fatal.  */
@@ -562,12 +526,6 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
   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);
-#else
   for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
     {
       int compare = strcmp (domainname, binding->domainname);
@@ -587,7 +545,6 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
   else
     {
       dirname = binding->dirname;
-#endif
       if (!IS_ABSOLUTE_PATH (dirname))
 	{
 	  /* We have a relative path.  Make it absolute now.  */
@@ -603,20 +560,13 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
 	    goto return_untranslated;
 	  dirname = xdirname;
 	}
-#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 *) malloc (strlen (categoryname)
 				 + domainname_len + 5);
@@ -675,11 +625,7 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
 
       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)
 	    {
@@ -687,13 +633,8 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
 
 	      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.  */
@@ -754,9 +695,6 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
 		      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;
@@ -837,17 +775,10 @@  DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
    in case of a memory allocation failure during conversion (only if
    ENCODING != NULL resp. 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;
@@ -953,16 +884,10 @@  _nl_find_msg (struct loaded_l10nfile *domain_file,
     }
 
 #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;
@@ -1056,12 +981,7 @@  _nl_find_msg (struct loaded_l10nfile *domain_file,
 		 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.  */
@@ -1470,21 +1390,13 @@  category_to_name (int category)
 /* Guess value of current locale from value of the environment variables
    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:
@@ -1501,18 +1413,17 @@  guess_category_value (int category, const char *categoryname)
        - 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 = _nl_locale_name_thread_unsafe (category, categoryname);
   if (locale == NULL)
-#  endif
+# endif
     {
       locale = _nl_locale_name_posix (category, categoryname);
       if (locale == NULL)
@@ -1521,7 +1432,6 @@  guess_category_value (int category, const char *categoryname)
 	  locale_defaulted = 1;
 	}
     }
-# endif
 #endif
 
   /* Ignore LANGUAGE and its system-dependent analogon if the locale is set
@@ -1547,7 +1457,7 @@  guess_category_value (int category, const char *categoryname)
   language = getenv ("LANGUAGE");
   if (language != NULL && language[0] != '\0')
     return language;
-#if !defined IN_LIBGLOCALE && !defined _LIBC
+#ifndef _LIBC
   /* The next priority value is the locale name, if not defaulted.  */
   if (locale_defaulted)
     {
@@ -1561,7 +1471,7 @@  guess_category_value (int category, const char *categoryname)
   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)
diff --git a/intl/gettextP.h b/intl/gettextP.h
index 9de46847ef..bc007e40e2 100644
--- a/intl/gettextP.h
+++ b/intl/gettextP.h
@@ -70,18 +70,10 @@  extern void _nl_unload_domain (struct loaded_domain *__domain)
 # 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"
@@ -216,12 +208,7 @@  struct binding
 /* A counter which is incremented each time some previous translations
    become invalid.
    This variable is part of the external ABI of the GNU libintl.  */
-#ifdef IN_LIBGLOCALE
-# include <glocale/config.h>
-extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr;
-#else
 extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr;
-#endif
 
 #ifndef _LIBC
 extern const char *_nl_language_preferences_default (void);
@@ -258,18 +245,10 @@  void _nl_load_domain (struct loaded_l10nfile *__domain,
 		      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
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
index f0afa37363..2bb339f3b9 100644
--- a/intl/loadmsgcat.c
+++ b/intl/loadmsgcat.c
@@ -1256,12 +1256,7 @@  _nl_load_domain (struct loaded_l10nfile *domain_file,
 #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
diff --git a/intl/localealias.c b/intl/localealias.c
index 5ab48d317d..fbb26d9efd 100644
--- a/intl/localealias.c
+++ b/intl/localealias.c
@@ -294,14 +294,7 @@  read_alias_file (const char *fname, int fname_len)
 	      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;
 
diff --git a/intl/plural-exp.h b/intl/plural-exp.h
index f0d3a611e1..e5fea8949a 100644
--- a/intl/plural-exp.h
+++ b/intl/plural-exp.h
@@ -109,7 +109,7 @@  extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
 				       unsigned long int *npluralsp)
      attribute_hidden;
 
-#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE)
+#if !defined (_LIBC) && !defined (IN_LIBINTL)
 extern unsigned long int plural_eval (const struct expression *pexp,
 				      unsigned long int n);
 #endif