setlocale: Make calls with NULL argument multithread-safe.
commit505092c2fd7606c8add097815b68568be4c7ccf3
authorBruno Haible <bruno@clisp.org>
Wed, 18 Dec 2019 13:35:27 +0000 (18 14:35 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 18 Dec 2019 13:35:27 +0000 (18 14:35 +0100)
tree3b2128227a4b253e2348248010c297b17f7d4929
parent25d476a2b79ab1cfc9c34e162bf5a69159ed6952
setlocale: Make calls with NULL argument multithread-safe.

* lib/setlocale.c: Include <errno.h>.
(setlocale_mtsafe): New function.
(setlocale_unixlike): Invoke setlocale_mtsafe instead of setlocale.
(setlocale_improved): Renamed from rpl_setlocale.
* m4/setlocale.m4 (gl_FUNC_SETLOCALE): Require gl_FUNC_SETLOCALE_NULL.
Set and define NEED_SETLOCALE_IMPROVED and NEED_SETLOCALE_MTSAFE. Set
LIB_SETLOCALE.
* modules/setlocale (Depends-on): Add setlocale-null. Update conditions.
(Link): New section.
* tests/locale.c: Undefine setlocale.
* tests/test-setlocale_null-one.c: Likewise.
* tests/test-setlocale_null-all.c: Likewise.
* modules/setlocale-tests (Makefile.am): Link the test programs with
$(LIB_SETLOCALE).
* modules/astrxfrm-tests (Makefile.am): Likewise.
* modules/btowc-tests (Makefile.am): Likewise.
* modules/c-ctype-tests (Makefile.am): Likewise.
* modules/c-snprintf-tests (Makefile.am): Likewise.
* modules/c-strcase-tests (Makefile.am): Likewise.
* modules/c-vasprintf-tests (Makefile.am): Likewise.
* modules/c-vsnprintf-tests (Makefile.am): Likewise.
* modules/c-xvasprintf-tests (Makefile.am): Likewise.
* modules/dfa-tests (Makefile.am): Likewise.
* modules/duplocale-tests (Makefile.am): Likewise.
* modules/hard-locale-tests (Makefile.am): Likewise.
* modules/localcharset-tests (Makefile.am): Likewise.
* modules/localename-tests (Makefile.am): Likewise.
* modules/mbmemcasecmp-tests (Makefile.am): Likewise.
* modules/mbmemcasecoll-tests (Makefile.am): Likewise.
* modules/mbrtowc-tests (Makefile.am): Likewise.
* modules/mbscasecmp-tests (Makefile.am): Likewise.
* modules/mbscasestr-tests (Makefile.am): Likewise.
* modules/mbschr-tests (Makefile.am): Likewise.
* modules/mbscspn-tests (Makefile.am): Likewise.
* modules/mbsinit-tests (Makefile.am): Likewise.
* modules/mbsncasecmp-tests (Makefile.am): Likewise.
* modules/mbsnrtowcs-tests (Makefile.am): Likewise.
* modules/mbspbrk-tests (Makefile.am): Likewise.
* modules/mbspcasecmp-tests (Makefile.am): Likewise.
* modules/mbsrchr-tests (Makefile.am): Likewise.
* modules/mbsrtowcs-tests (Makefile.am): Likewise.
* modules/mbsspn-tests (Makefile.am): Likewise.
* modules/mbsstr-tests (Makefile.am): Likewise.
* modules/nl_langinfo-tests (Makefile.am): Likewise.
* modules/quotearg-tests (Makefile.am): Likewise.
* modules/regex-tests (Makefile.am): Likewise.
* modules/strfmon_l-tests (Makefile.am): Likewise.
* modules/strtod-tests (Makefile.am): Likewise.
* modules/strtold-tests (Makefile.am): Likewise.
* modules/unicase/locale-language-tests (Makefile.am): Likewise.
* modules/unicase/ulc-casecmp-tests (Makefile.am): Likewise.
* modules/unicase/ulc-casecoll-tests (Makefile.am): Likewise.
* modules/unigbrk/ulc-grapheme-breaks-tests (Makefile.am): Likewise.
* modules/unistdio/u8-vasnprintf-tests (Makefile.am): Likewise.
* modules/unistdio/u16-vasnprintf-tests (Makefile.am): Likewise.
* modules/unistdio/u32-vasnprintf-tests (Makefile.am): Likewise.
* modules/unistdio/ulc-vasnprintf-tests (Makefile.am): Likewise.
* modules/uniwbrk/ulc-wordbreaks-tests (Makefile.am): Likewise.
* modules/vasnprintf-posix-tests (Makefile.am): Likewise.
* modules/wcrtomb-tests (Makefile.am): Likewise.
* modules/wcsnrtombs-tests (Makefile.am): Likewise.
* modules/wcsrtombs-tests (Makefile.am): Likewise.
* modules/wcwidth-tests (Makefile.am): Likewise.
* doc/posix-functions/setlocale.texi: Mention that the multithread-
safety fix is also available in module 'setlocale'.
58 files changed:
ChangeLog
doc/posix-functions/setlocale.texi
lib/setlocale.c
m4/setlocale.m4
modules/astrxfrm-tests
modules/btowc-tests
modules/c-ctype-tests
modules/c-snprintf-tests
modules/c-strcase-tests
modules/c-vasprintf-tests
modules/c-vsnprintf-tests
modules/c-xvasprintf-tests
modules/dfa-tests
modules/duplocale-tests
modules/hard-locale-tests
modules/localcharset-tests
modules/localename-tests
modules/mbmemcasecmp-tests
modules/mbmemcasecoll-tests
modules/mbrtowc-tests
modules/mbscasecmp-tests
modules/mbscasestr-tests
modules/mbschr-tests
modules/mbscspn-tests
modules/mbsinit-tests
modules/mbsncasecmp-tests
modules/mbsnrtowcs-tests
modules/mbspbrk-tests
modules/mbspcasecmp-tests
modules/mbsrchr-tests
modules/mbsrtowcs-tests
modules/mbsspn-tests
modules/mbsstr-tests
modules/nl_langinfo-tests
modules/quotearg-tests
modules/regex-tests
modules/setlocale
modules/setlocale-tests
modules/strfmon_l-tests
modules/strtod-tests
modules/strtold-tests
modules/unicase/locale-language-tests
modules/unicase/ulc-casecmp-tests
modules/unicase/ulc-casecoll-tests
modules/unigbrk/ulc-grapheme-breaks-tests
modules/unistdio/u16-vasnprintf-tests
modules/unistdio/u32-vasnprintf-tests
modules/unistdio/u8-vasnprintf-tests
modules/unistdio/ulc-vasnprintf-tests
modules/uniwbrk/ulc-wordbreaks-tests
modules/vasnprintf-posix-tests
modules/wcrtomb-tests
modules/wcsnrtombs-tests
modules/wcsrtombs-tests
modules/wcwidth-tests
tests/locale.c
tests/test-setlocale_null-all.c
tests/test-setlocale_null-one.c