Blob Blame History Raw
#! /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 with the same
# encoding.

# 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 and fr_FR locale installed.
missing_locale=`../gettext-6-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-6 || mkdir gt-6
test -d gt-6/de_DE || mkdir gt-6/de_DE
test -d gt-6/de_DE/LC_MESSAGES || mkdir gt-6/de_DE/LC_MESSAGES
test -d gt-6/fr_FR || mkdir gt-6/fr_FR
test -d gt-6/fr_FR/LC_MESSAGES || mkdir gt-6/fr_FR/LC_MESSAGES

: ${MSGFMT=msgfmt}
${MSGFMT} -o gt-6/de_DE/LC_MESSAGES/tstthread.mo "$abs_srcdir"/gettext-6-1.po
${MSGFMT} -o gt-6/fr_FR/LC_MESSAGES/tstthread.mo "$abs_srcdir"/gettext-6-2.po

cat <<EOF > gt-6.ok
Schönheit
beauté
Schönheit
beauté
EOF

../gettext-6-prg > gt-6.out
case $? in
  0) ;;
  77)
    echo "Skipping test: not a glibc >= 2.3 or MacOS X >= 10.5 system"
    exit 77
    ;;
esac

: ${DIFF=diff}
${DIFF} gt-6.ok gt-6.out || exit 1

exit 0