Skip to content
  • Bruno Haible's avatar
    setlocale: Make calls with NULL argument multithread-safe. · 505092c2
    Bruno Haible authored
    * 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'.
    505092c2