From d02c5c2d10606122a574025e868a360b39bc38dd Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 19 Dec 2019 02:06:00 +0100 Subject: [PATCH] localename: Fix test failure on AIX 7.2. * m4/intl-thread-locale.m4 (gt_INTL_THREAD_LOCALE_NAME): Enable nameless locales on AIX. * lib/localename.c (gl_locale_name_thread_unsafe): Handle nameless locales on AIX. --- ChangeLog | 8 ++++++++ lib/localename.c | 2 ++ m4/intl-thread-locale.m4 | 28 +++++++++++++++------------- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1f0792e95a..cd062159ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2019-12-18 Bruno Haible + + localename: Fix test failure on AIX 7.2. + * m4/intl-thread-locale.m4 (gt_INTL_THREAD_LOCALE_NAME): Enable nameless + locales on AIX. + * lib/localename.c (gl_locale_name_thread_unsafe): Handle nameless + locales on AIX. + 2019-12-18 Paul Eggert Improve port of AC_C_RESTRICT to Oracle C++ diff --git a/lib/localename.c b/lib/localename.c index 65dddeb378..5e51201a92 100644 --- a/lib/localename.c +++ b/lib/localename.c @@ -3191,6 +3191,8 @@ gl_locale_name_thread_unsafe (int category, const char *categoryname) return ""; } # endif +# elif defined _AIX && HAVE_NAMELESS_LOCALES + return get_locale_t_name (category, thread_locale); # elif defined __CYGWIN__ /* Cygwin < 2.6 lacks uselocale and thread-local locales altogether. Cygwin <= 2.6.1 lacks NL_LOCALE_NAME, requiring peeking inside diff --git a/m4/intl-thread-locale.m4 b/m4/intl-thread-locale.m4 index e43f602dae..f74f11646d 100644 --- a/m4/intl-thread-locale.m4 +++ b/m4/intl-thread-locale.m4 @@ -1,4 +1,4 @@ -# intl-thread-locale.m4 serial 5 +# intl-thread-locale.m4 serial 6 dnl Copyright (C) 2015-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -17,7 +17,7 @@ dnl Check how to retrieve the name of a per-thread locale (POSIX locale_t). dnl Sets gt_nameless_locales. AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME], [ - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_REQUIRE([AC_CANONICAL_HOST]) dnl Persuade Solaris to define 'locale_t'. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) @@ -119,18 +119,20 @@ int main () ;; esac - dnl This code is for future use, in case we some day have to port to a - dnl platform where the locale_t type does not provide access to the name of - dnl each locale category. This code has the drawback that it requires the - dnl gnulib overrides of 'newlocale', 'duplocale', 'freelocale', which is a - dnl problem for GNU libunistring. Therefore try hard to avoid enabling this - dnl code! + dnl This code is for platforms where the locale_t type does not provide access + dnl to the name of each locale category. This code has the drawback that it + dnl requires the gnulib overrides of 'newlocale', 'duplocale', 'freelocale', + dnl which is a problem for GNU libunistring. Therefore try hard to avoid + dnl enabling this code! gt_nameless_locales=no - if false; then - gt_nameless_locales=yes - AC_DEFINE([HAVE_NAMELESS_LOCALES], [1], - [Define if the locale_t type does not contain the name of each locale category.]) - fi + case "$host_os" in + dnl It's needed on AIX 7.2. + aix*) + gt_nameless_locales=yes + AC_DEFINE([HAVE_NAMELESS_LOCALES], [1], + [Define if the locale_t type does not contain the name of each locale category.]) + ;; + esac ]) dnl Tests whether uselocale() exists and is usable. -- 2.39.5