1207678Sjilles# $FreeBSD$
2207678Sjilles# Note: this test depends on strerror() using locale.
3207678Sjilles
4207678Sjillesfailures=0
5207678Sjilles
6207678Sjillescheck() {
7207678Sjilles	if ! eval "[ $1 ]"; then
8207678Sjilles		echo "Failed: $1 at $2"
9207678Sjilles		: $((failures += 1))
10207678Sjilles	fi
11207678Sjilles}
12207678Sjilles
13207678Sjillesunset LANG LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES
14218819Sjillesunset LANGUAGE
15207678Sjilles
16207678Sjillesmsgeng="No such file or directory"
17207678Sjillesmsgdut="Bestand of map niet gevonden"
18207678Sjilles
19207678Sjilles# Verify C locale error message.
20207678Sjillescase $(command . /var/empty/foo 2>&1) in
21207678Sjilles	*"$msgeng"*) ok=1 ;;
22207678Sjilles	*) ok=0 ;;
23207678Sjillesesac
24207678Sjillescheck '$ok -eq 1' $LINENO
25207678Sjilles
26207678Sjilles# Various locale variables that should not affect the message.
27207678Sjillescase $(LC_ALL=C command . /var/empty/foo 2>&1) in
28207678Sjilles	*"$msgeng"*) ok=1 ;;
29207678Sjilles	*) ok=0 ;;
30207678Sjillesesac
31207678Sjillescheck '$ok -eq 1' $LINENO
32207678Sjilles
33207678Sjillescase $(LC_ALL=C LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in
34207678Sjilles	*"$msgeng"*) ok=1 ;;
35207678Sjilles	*) ok=0 ;;
36207678Sjillesesac
37207678Sjillescheck '$ok -eq 1' $LINENO
38207678Sjilles
39207678Sjillescase $(LC_ALL=C LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in
40207678Sjilles	*"$msgeng"*) ok=1 ;;
41207678Sjilles	*) ok=0 ;;
42207678Sjillesesac
43207678Sjillescheck '$ok -eq 1' $LINENO
44207678Sjilles
45207678Sjillescase $(LC_CTYPE=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in
46207678Sjilles	*"$msgeng"*) ok=1 ;;
47207678Sjilles	*) ok=0 ;;
48207678Sjillesesac
49207678Sjillescheck '$ok -eq 1' $LINENO
50207678Sjilles
51207678Sjilles# Verify Dutch message.
52207678Sjillescase $(export LANG=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in
53207678Sjilles	*"$msgdut"*) ok=1 ;;
54207678Sjilles	*) ok=0 ;;
55207678Sjillesesac
56207678Sjillescheck '$ok -eq 1' $LINENO
57207678Sjilles
58207678Sjillescase $(export LC_MESSAGES=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in
59207678Sjilles	*"$msgdut"*) ok=1 ;;
60207678Sjilles	*) ok=0 ;;
61207678Sjillesesac
62207678Sjillescheck '$ok -eq 1' $LINENO
63207678Sjilles
64207678Sjillescase $(export LC_ALL=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in
65207678Sjilles	*"$msgdut"*) ok=1 ;;
66207678Sjilles	*) ok=0 ;;
67207678Sjillesesac
68207678Sjillescheck '$ok -eq 1' $LINENO
69207678Sjilles
70207678Sjillescase $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in
71207678Sjilles	*"$msgdut"*) ok=1 ;;
72207678Sjilles	*) ok=0 ;;
73207678Sjillesesac
74207678Sjillescheck '$ok -eq 1' $LINENO
75207678Sjilles
76207678Sjillescase $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in
77207678Sjilles	*"$msgdut"*) ok=1 ;;
78207678Sjilles	*) ok=0 ;;
79207678Sjillesesac
80207678Sjillescheck '$ok -eq 1' $LINENO
81207678Sjilles
82207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in
83207678Sjilles	*"$msgdut"*) ok=1 ;;
84207678Sjilles	*) ok=0 ;;
85207678Sjillesesac
86207678Sjillescheck '$ok -eq 1' $LINENO
87207678Sjilles
88207678Sjilles# Verify that command assignments do not set the locale persistently.
89207678Sjillescase $(command . /var/empty/foo 2>&1) in
90207678Sjilles	*"$msgeng"*) ok=1 ;;
91207678Sjilles	*) ok=0 ;;
92207678Sjillesesac
93207678Sjillescheck '$ok -eq 1' $LINENO
94207678Sjilles
95207678Sjillescase $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in
96207678Sjilles	*"$msgdut"*"$msgeng"*) ok=1 ;;
97207678Sjilles	*) ok=0 ;;
98207678Sjillesesac
99207678Sjillescheck '$ok -eq 1' $LINENO
100207678Sjilles
101207678Sjillescase $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in
102207678Sjilles	*"$msgdut"*"$msgeng"*) ok=1 ;;
103207678Sjilles	*) ok=0 ;;
104207678Sjillesesac
105207678Sjillescheck '$ok -eq 1' $LINENO
106207678Sjilles
107207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in
108207678Sjilles	*"$msgdut"*"$msgeng"*) ok=1 ;;
109207678Sjilles	*) ok=0 ;;
110207678Sjillesesac
111207678Sjillescheck '$ok -eq 1' $LINENO
112207678Sjilles
113207678Sjilles# Check special builtin; add colon invocation to avoid depending on certain fix.
114207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 . /var/empty/foo 2>&1; :) in
115207678Sjilles	*"$msgdut"*) ok=1 ;;
116207678Sjilles	*) ok=0 ;;
117207678Sjillesesac
118207678Sjillescheck '$ok -eq 1' $LINENO
119207678Sjilles
120207678Sjilles# Assignments on special builtins are exported to that builtin; the export
121207678Sjilles# is not persistent.
122207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in
123207678Sjilles	*"$msgeng"*) ok=1 ;;
124207678Sjilles	*) ok=0 ;;
125207678Sjillesesac
126207678Sjillescheck '$ok -eq 1' $LINENO
127207678Sjilles
128207678Sjillescase $(export LC_ALL; LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in
129207678Sjilles	*"$msgdut"*) ok=1 ;;
130207678Sjilles	*) ok=0 ;;
131207678Sjillesesac
132207678Sjillescheck '$ok -eq 1' $LINENO
133207678Sjilles
134207678Sjillesexit $((failures > 0))
135