# standard output.
#
# By default, the user's own LC_CTYPE is preferred. Otherwise, the first
-# match in the output of "locale -a" is chosen.
+# match in the output of "locale -a" is chosen, unless that starts with
+# "C" in which case we prefer the next one.
m4_defun_once([_TEST_NLS_SETUP], [m4_divert_push([HEADER-COPYRIGHT])
# save user locale setting before m4sh clobbers it
$[1] = ""; sub(/^ "/, ""); sub(/"$/, ""); print
}'`
- LC_ALL=$save_LC_ALL
+ LC_ALL=$save_LC_ALL found_locale=
if test_check_locale_charmap "$init_ctype" "$re"; then
- AS_ECHO(["$init_ctype"])
- return;
+ found_locale=$init_ctype
fi
- set x `locale -a | grep "$re"`; shift
- for arg; do
- if test_check_locale_charmap "$arg" "$re"; then
- AS_ECHO(["$arg"])
- return;
- fi
- done
+ case $found_locale in
+ C*|"")
+ set x `locale -a | grep "$re"`; shift
+ for arg; do
+ if test_check_locale_charmap "$arg" "$re"; then
+ found_locale=$arg;
+ case $found_locale in
+ C*) :;;
+ *) break ;;
+ esac
+ fi
+ done
+ ;;
+ esac
+
+ test ${found_locale+y} && {
+ AS_ECHO(["found matching locale $found_locale"]) >&AS_MESSAGE_LOG_FD
+ LC_ALL=$found_locale locale >&AS_MESSAGE_LOG_FD 2>&1
+ AS_ECHO(["$found_locale"])
+ }
}
m4_divert_pop([PREPARE_TESTS])
])
AT_SKIP_IF([test ! -x "$builddir/t/helpopt3"])
TEST_UTF8_LOCALE([locale_utf8])
-AT_CHECK([m4_join([ ],
- [LC_ALL=$locale_utf8 "$builddir/t/helpopt3"],
- [--全角],
- [--ハンカク],
- )], [0],
-[[ --全角 8
- --ハンカク 8
-]])
+# Avoid some deficient shell parsers barfing on UTF-8 sequences by
+# generating them this way using octal escapes.
+$AWK -f - >expout <<'EOF'
+BEGIN {
+ zenkaku = "--\345\205\250\350\247\222";
+ hankaku = "--\357\276\212\357\276\235\357\275\266\357\275\270"
+
+ print zenkaku, hankaku >"args"
+
+ print " " zenkaku "\t" "8"
+ print " " hankaku "\t" "8"
+}
+EOF
+
+AT_CHECK([LC_ALL=$locale_utf8 xargs "$builddir/t/helpopt3" <args],
+ [0], [expout])
AT_CLEANUP