* gettext-tools/tests/intl-thread-3: Renamed from gettext-tools/tests/gettext-7.
Don't limit to fixed set of platforms.
* gettext-tools/tests/intl-thread-3-prg.c: Renamed from
gettext-tools/tests/gettext-7-prg.c. Expect locale names as arguments.
* gettext-tools/tests/intl-thread-3.po: Renamed from
gettext-tools/tests/gettext-7.po.
* gettext-tools/tests/Makefile.am: Update.
/gettext-tools/tests/fc4.exe
/gettext-tools/tests/fc5
/gettext-tools/tests/fc5.exe
-/gettext-tools/tests/gettext-7-prg
-/gettext-tools/tests/gettext-7-prg.exe
/gettext-tools/tests/gettext-8-prg
/gettext-tools/tests/gettext-8-prg.exe
/gettext-tools/tests/gettextpo-1-prg
/gettext-tools/tests/intl-thread-1-prg.exe
/gettext-tools/tests/intl-thread-2-prg
/gettext-tools/tests/intl-thread-2-prg.exe
+/gettext-tools/tests/intl-thread-3-prg
+/gettext-tools/tests/intl-thread-3-prg.exe
/gettext-tools/tests/sentence-1-prg
/gettext-tools/tests/sentence-1-prg.exe
/gettext-tools/tests/testlocale
TESTS = gettext-1 gettext-2 \
intl-1 intl-2 intl-3 intl-4 \
intl-setlocale-1 intl-setlocale-2 \
- intl-thread-1 intl-thread-2 \
- gettext-7 gettext-8 \
+ intl-thread-1 intl-thread-2 intl-thread-3 \
+ gettext-8 \
msgattrib-1 msgattrib-2 msgattrib-3 msgattrib-4 msgattrib-5 \
msgattrib-6 msgattrib-7 msgattrib-8 msgattrib-9 msgattrib-10 \
msgattrib-11 msgattrib-12 msgattrib-13 msgattrib-14 msgattrib-15 \
intl-1.po intl-2-1.po intl-2-2.po intl-4.po \
intl-setlocale-1-1.po intl-setlocale-1-2.po intl-setlocale-2.po \
intl-thread-1.po intl-thread-2-1.po intl-thread-2-2.po \
- gettext-7.po \
+ intl-thread-3.po \
gettextpo-1.de.po \
xgettext-1 \
xgettext-c-1 xg-c-21.c \
LDADD = $(LDADD_@USE_INCLUDED_LIBINTL@) @INTL_MACOSX_LIBS@
LDADD_yes = ../intl/libintl.la @LTLIBTHREAD@
LDADD_no = ../intl/libgnuintl.la @LTLIBTHREAD@ @LTLIBINTL@
-check_PROGRAMS = tstgettext tstngettext testlocale intl-1-prg intl-3-prg intl-4-prg intl-setlocale-1-prg intl-setlocale-2-prg intl-thread-1-prg intl-thread-2-prg gettext-7-prg gettext-8-prg cake fc3 fc4 fc5 gettextpo-1-prg sentence-1-prg
+check_PROGRAMS = tstgettext tstngettext testlocale intl-1-prg intl-3-prg intl-4-prg intl-setlocale-1-prg intl-setlocale-2-prg intl-thread-1-prg intl-thread-2-prg intl-thread-3-prg gettext-8-prg cake fc3 fc4 fc5 gettextpo-1-prg sentence-1-prg
tstgettext_SOURCES = tstgettext.c setlocale.c
tstgettext_CFLAGS = -DINSTALLDIR=\".\"
tstgettext_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD)
intl_thread_2_prg_CFLAGS_1 = -DUSE_POSIX_THREADS
intl_thread_2_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) $(intl_thread_2_prg_LDADD_@HAVE_NEWLOCALE@)
intl_thread_2_prg_LDADD_1 = -lpthread
-gettext_7_prg_SOURCES = gettext-7-prg.c
-gettext_7_prg_CFLAGS = $(gettext_7_prg_CFLAGS_@HAVE_NEWLOCALE@)
-gettext_7_prg_CFLAGS_1 = -DUSE_POSIX_THREADS
-gettext_7_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) $(gettext_7_prg_LDADD_@HAVE_NEWLOCALE@)
-gettext_7_prg_LDADD_1 = -lpthread
+intl_thread_3_prg_SOURCES = intl-thread-3-prg.c
+intl_thread_3_prg_CFLAGS = $(intl_thread_3_prg_CFLAGS_@HAVE_NEWLOCALE@)
+intl_thread_3_prg_CFLAGS_1 = -DUSE_POSIX_THREADS
+intl_thread_3_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) $(intl_thread_3_prg_LDADD_@HAVE_NEWLOCALE@)
+intl_thread_3_prg_LDADD_1 = -lpthread
gettext_8_prg_SOURCES = gettext-8-prg.c
gettext_8_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD)
cake_SOURCES = plural-1-prg.c setlocale.c
+++ /dev/null
-#! /bin/sh
-. "${srcdir=.}/init.sh"; path_prepend_ . ../src
-
-# Test that on glibc systems, gettext() in multithreaded applications works
-# correctly if different threads operate in different locales referring to
-# the same catalog file but with different encodings.
-
-# This test works only on glibc and MacOS X systems.
-: ${host_os=unknown}
-: ${GLIBC2=no}
-{ case "$host_os" in
- *-gnu*) test "$GLIBC2" = yes ;;
- darwin*) true ;;
- *) false ;;
- esac
-} || {
- echo "Skipping test: not a glibc or Mac OS X system"
- Exit 77
-}
-
-# This test works only on systems that have a de_DE.ISO-8859-1 and
-# de_DE.UTF-8 locale installed.
-missing_locale=`../gettext-7-prg 1`
-if test -n "$missing_locale"; then
- if test -f /usr/bin/localedef; then
- echo "Skipping test: locale ${missing_locale} not installed"
- else
- echo "Skipping test: locale ${missing_locale} not supported"
- fi
- Exit 77
-fi
-
-test -d gt-7 || mkdir gt-7
-test -d gt-7/de_DE || mkdir gt-7/de_DE
-test -d gt-7/de_DE/LC_MESSAGES || mkdir gt-7/de_DE/LC_MESSAGES
-
-: ${MSGFMT=msgfmt}
-${MSGFMT} -o gt-7/de_DE/LC_MESSAGES/tstthread.mo "$abs_srcdir"/gettext-7.po
-
-../gettext-7-prg > gt-7.out
-case $? in
- 0) ;;
- 77)
- echo "Skipping test: not a glibc >= 2.3 or MacOS X >= 10.5 system"
- Exit 77
- ;;
- *)
- Exit 1
- ;;
-esac
-
-Exit 0
--- /dev/null
+#! /bin/sh
+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
+
+# Test that gettext() in multithreaded applications works correctly if
+# different threads operate in different locales referring to the same
+# catalog file but with different encodings.
+
+# Let's use two locales that configure already checked for: French.
+# The PO file is actually German, not French, but that doesn't matter.
+
+test -d in-th-3 || mkdir in-th-3
+test -d in-th-3/fr || mkdir in-th-3/fr
+test -d in-th-3/fr/LC_MESSAGES || mkdir in-th-3/fr/LC_MESSAGES
+
+: ${MSGFMT=msgfmt}
+${MSGFMT} -o in-th-3/fr/LC_MESSAGES/tstthread.mo "$abs_srcdir"/intl-thread-3.po
+
+: ${LOCALE_FR=fr_FR}
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR != none && test $LOCALE_FR_UTF8 != none; then
+ prepare_locale_ in-th-3/fr in-th-3/$LOCALE_FR
+ prepare_locale_ in-th-3/fr in-th-3/$LOCALE_FR_UTF8
+ ../intl-thread-3-prg $LOCALE_FR $LOCALE_FR_UTF8 > in-th-3.out
+ case $? in
+ 0) ;;
+ 77)
+ echo "Skipping test: POSIX per-thread locales not supported"
+ Exit 77
+ ;;
+ *)
+ Exit 1
+ ;;
+ esac
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional and modern french locales are installed"
+ else
+ echo "Skipping test: no traditional and modern french locales are supported"
+ fi
+ Exit 77
+fi
+
+Exit 0
-/* Test program, used by the gettext-7 test.
- Copyright (C) 2005-2007, 2009-2010, 2015-2016 Free Software Foundation, Inc.
+/* Test program, used by the intl-thread-3 test.
+ Copyright (C) 2005-2007, 2009-2010, 2015-2016, 2018 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <stdio.h>
#include <string.h>
-#if USE_POSIX_THREADS && ((__GLIBC__ >= 2 && !defined __UCLIBC__) || (defined __APPLE__ && defined __MACH__)) && HAVE_USELOCALE
+#if USE_POSIX_THREADS && HAVE_USELOCALE
#include <pthread.h>
#undef _LIBINTL_H
#include "libgnuintl.h"
-/* Name of German locale in ISO-8859-1 or ISO-8859-15 encoding. */
-#if __GLIBC__ >= 2
-# define LOCALE_DE_ISO8859 "de_DE.ISO-8859-1"
-#elif defined __APPLE__ && defined __MACH__ /* MacOS X */
-# define LOCALE_DE_ISO8859 "de_DE.ISO8859-1"
-#else
-# define LOCALE_DE_ISO8859 "de_DE"
-#endif
-
-/* Name of German locale in UTF-8 encoding. */
-#define LOCALE_DE_UTF8 "de_DE.UTF-8"
+/* Name of locale to use in thread1. */
+const char *locale_name_1;
+/* Name of locale to use in thread2. */
+const char *locale_name_2;
/* Set to 1 if the program is not behaving correctly. */
int result;
char *s;
waitfor (1);
- uselocale (newlocale (LC_ALL_MASK, LOCALE_DE_ISO8859, NULL));
+ uselocale (newlocale (LC_ALL_MASK, locale_name_1, NULL));
setto (2);
/* Here we expect output in ISO-8859-1. */
char *s;
waitfor (2);
- uselocale (newlocale (LC_ALL_MASK, LOCALE_DE_UTF8, NULL));
+ uselocale (newlocale (LC_ALL_MASK, locale_name_2, NULL));
setto (1);
/* Here we expect output in UTF-8. */
return NULL;
}
-static void
-check_locale_exists (const char *name)
-{
- if (newlocale (LC_ALL_MASK, name, NULL) == NULL)
- {
- printf ("%s\n", name);
- exit (1);
- }
-}
-
int
main (int argc, char *argv[])
{
- int arg;
pthread_t thread1;
pthread_t thread2;
- arg = (argc > 1 ? atoi (argv[1]) : 0);
- switch (arg)
- {
- case 1:
- /* Check for the existence of the first locale. */
- check_locale_exists (LOCALE_DE_ISO8859);
- /* Check for the existence of the second locale. */
- check_locale_exists (LOCALE_DE_UTF8);
- return 0;
- default:
- break;
- }
+ locale_name_1 = argv[1];
+ locale_name_2 = argv[2];
unsetenv ("LANGUAGE");
unsetenv ("OUTPUT_CHARSET");
textdomain ("tstthread");
- bindtextdomain ("tstthread", "gt-7");
+ bindtextdomain ("tstthread", "in-th-3");
result = 0;
flipflop = 1;