Hi Bruno, On Sun, 2019 Nov 17 19:17-05:00, Bruno Haible wrote: > > This patch should do it. > > 2019-11-17 Bruno Haible <br...@clisp.org> > > locale, localename: Improve z/OS support. > Reported by Daniel Richard G. in > <https://lists.gnu.org/archive/html/bug-gnulib/2019-11/msg00001.html>. > * m4/locale_h.m4 (gl_LOCALE_T): New macro, partially extracted from > gl_LOCALE_H. > (gl_LOCALE_H): Require it. > * m4/localename.m4 (gl_LOCALENAME): Likewise. If locale_t is not > defined, don't even check for newlocale, duplocale, freelocale. > * m4/intl-thread-locale.m4 (gt_FUNC_USELOCALE): Make the test fail when > locale_t is not defined.
Thanks so much for looking at this, and the other facets. I will be following up on all of them. I tested Git commit 5bd825f0. Unfortunately, I am still seeing build breakage related to attempted duplocale() replacement: source='/tmp/testdir/gllib/hard-locale.c' object='hard-locale.o' libtool=no \ DEPDIR=.deps depmode=aix /bin/sh /tmp/testdir/build-aux/depcomp \ xlc-wrap -qlanglvl=extc1x -DHAVE_CONFIG_H -I. -I/tmp/testdir/gllib -I.. -DGNULIB_STRICT_CHECKING=1 -D_UNIX95_THREADS -D_XOPEN_SOURCE=600 -DNSIG=39 -qhaltonmsg=CCN3296 -g -q64 -qfloat=ieee -qenumsize=4 -c -o hard-locale.o /tmp/testdir/gllib/hard-locale.c ERROR CCN3166 ./locale.h:702 Definition of function locale_t requires parentheses. ERROR CCN3276 ./locale.h:702 Syntax error: possible missing '{'? ERROR CCN3273 /usr/include/stdlib.h:64 Missing type in declaration of div_t. ERROR CCN3166 /usr/include/stdlib.h:544 Definition of function div_t requires parentheses. ERROR CCN3276 /usr/include/stdlib.h:544 Syntax error: possible missing '{'? [...] (Line 702 is "_GL_FUNCDECL_RPL (duplocale, locale_t, ...") This was the very problem I encountered when I tried my hand at a patch. I could pick up on the missing locale_t, but I could not figure out how to (cleanly) negate the "duplocale() et al. are present but broken" outcomes. Locale-related configure findings: bash-2.03$ grep locale configure.out | fgrep -v '(cached)' checking for xlocale.h... no checking for duplocale... yes checking for uselocale... yes checking for newlocale... yes checking for freelocale... yes checking for a traditional french locale... fr_FR checking whether locale.h defines locale_t... no checking whether locale.h conforms to POSIX:2001... yes checking whether uselocale works... no checking for a traditional japanese locale... none checking for a transitional chinese locale... none checking for a french Unicode locale... none checking whether the C locale is free of encoding errors... yes checking whether wcwidth works reasonably in UTF-8 locales... yes checking whether duplocale(LC_GLOBAL_LOCALE) works... no checking whether setlocale supports the C locale... yes checking whether wcrtomb works in the C locale... yes checking for a turkish Unicode locale... none Please let me know if there is any additional reconnaissance I can provide that may be helpful. --Daniel -- Daniel Richard G. || sk...@iskunk.org My ASCII-art .sig got a bad case of Times New Roman.