Blame src/cmd/ksh93/tests/locale.sh

Packit Service a8c26c
########################################################################
Packit Service a8c26c
#                                                                      #
Packit Service a8c26c
#               This software is part of the ast package               #
Packit Service a8c26c
#          Copyright (c) 1982-2012 AT&T Intellectual Property          #
Packit Service a8c26c
#                      and is licensed under the                       #
Packit Service a8c26c
#                 Eclipse Public License, Version 1.0                  #
Packit Service a8c26c
#                    by AT&T Intellectual Property                     #
Packit Service a8c26c
#                                                                      #
Packit Service a8c26c
#                A copy of the License is available at                 #
Packit Service a8c26c
#          http://www.eclipse.org/org/documents/epl-v10.html           #
Packit Service a8c26c
#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
Packit Service a8c26c
#                                                                      #
Packit Service a8c26c
#              Information and Software Systems Research               #
Packit Service a8c26c
#                            AT&T Research                             #
Packit Service a8c26c
#                           Florham Park NJ                            #
Packit Service a8c26c
#                                                                      #
Packit Service a8c26c
#                  David Korn <dgk@research.att.com>                   #
Packit Service a8c26c
#                                                                      #
Packit Service a8c26c
########################################################################
Packit Service a8c26c
function err_exit
Packit Service a8c26c
{
Packit Service a8c26c
	print -u2 -n "\t"
Packit Service a8c26c
	print -u2 -r ${Command}[$1]: "${@:2}"
Packit Service a8c26c
	let Errors+=1
Packit Service a8c26c
}
Packit Service a8c26c
alias err_exit='err_exit $LINENO'
Packit Service a8c26c
Packit Service a8c26c
Command=${0##*/}
Packit Service a8c26c
integer Errors=0
Packit Service a8c26c
Packit Service a8c26c
unset LANG ${!LC_*}
Packit Service a8c26c
Packit Service a8c26c
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
Packit Service a8c26c
trap "cd /; rm -rf $tmp" EXIT
Packit Service a8c26c
cd $tmp || exit
Packit Service a8c26c
Packit Service a8c26c
a=$($SHELL -c '/' 2>&1 | sed -e "s,.*: *,," -e "s, *\[.*,,")
Packit Service a8c26c
b=$($SHELL -c '(LC_ALL=debug / 2>/dev/null); /' 2>&1 | sed -e "s,.*: *,," -e "s, *\[.*,,")
Packit Service a8c26c
[[ "$b" == "$a" ]] || err_exit "locale not restored after subshell -- expected '$a', got '$b'"
Packit Service a8c26c
b=$($SHELL -c '(LC_ALL=debug; / 2>/dev/null); /' 2>&1 | sed -e "s,.*: *,," -e "s, *\[.*,,")
Packit Service a8c26c
[[ "$b" == "$a" ]] || err_exit "locale not restored after subshell -- expected '$a', got '$b'"
Packit Service a8c26c
Packit Service a8c26c
# test shift-jis \x81\x40 ... \x81\x7E encodings
Packit Service a8c26c
# (shift char followed by 7 bit ascii)
Packit Service a8c26c
Packit Service a8c26c
typeset -i16 chr
Packit Service a8c26c
for locale in $(PATH=/bin:/usr/bin locale -a 2>/dev/null | grep -i jis)
Packit Service a8c26c
do	export LC_ALL=$locale
Packit Service a8c26c
	for ((chr=0x40; chr<=0x7E; chr++))
Packit Service a8c26c
	do	c=${chr#16#}
Packit Service a8c26c
		for s in \\x81\\x$c \\x$c
Packit Service a8c26c
		do	b="$(printf "$s")"
Packit Service a8c26c
			eval n=\$\'$s\'
Packit Service a8c26c
			[[ $b == "$n" ]] || err_exit "LC_ALL=$locale printf difference for \"$s\" -- expected '$n', got '$b'"
Packit Service a8c26c
			u=$(print -- $b)
Packit Service a8c26c
			q=$(print -- "$b")
Packit Service a8c26c
			[[ $u == "$q" ]] || err_exit "LC_ALL=$locale quoted print difference for \"$s\" -- $b => '$u' vs \"$b\" => '$q'"
Packit Service a8c26c
		done
Packit Service a8c26c
	done
Packit Service a8c26c
done
Packit Service a8c26c
Packit Service a8c26c
# this locale is supported by ast on all platforms
Packit Service a8c26c
# EU for { decimal_point="," thousands_sep="." }
Packit Service a8c26c
Packit Service a8c26c
locale=C_EU.UTF-8
Packit Service a8c26c
Packit Service a8c26c
export LC_ALL=C
Packit Service a8c26c
Packit Service a8c26c
# test multibyte value/trace format -- $'\303\274' is UTF-8 u-umlaut
Packit Service a8c26c
Packit Service a8c26c
c=$(LC_ALL=C $SHELL -c "printf $':%2s:\n' $'\303\274'")
Packit Service a8c26c
u=$(LC_ALL=$locale $SHELL -c "printf $':%2s:\n' $'\303\274'" 2>/dev/null)
Packit Service a8c26c
if	[[ "$c" != "$u" ]]
Packit Service a8c26c
then	LC_ALL=$locale
Packit Service a8c26c
	x=$'+2+ typeset item.text\
Packit Service a8c26c
+3+ item.text=\303\274\
Packit Service a8c26c
+4+ print -- \303\274\
Packit Service a8c26c
\303\274\
Packit Service a8c26c
+5+ eval $\'arr[0]=(\\n\\ttext=\\303\\274\\n)\'
Packit Service a8c26c
+2+ arr[0].text=ü\
Packit Service a8c26c
+6+ print -- \303\274\
Packit Service a8c26c
ü\
Packit Service a8c26c
+7+ eval txt=$\'(\\n\\ttext=\\303\\274\\n)\'
Packit Service a8c26c
+2+ txt.text=\303\274\
Packit Service a8c26c
+8+ print -- \'(\' text=$\'\\303\\274\' \')\'\
Packit Service a8c26c
( text=\303\274 )'
Packit Service a8c26c
	u=$(LC_ALL=$locale PS4='+$LINENO+ ' $SHELL -x -c "
Packit Service a8c26c
		item=(typeset text)
Packit Service a8c26c
		item.text=$'\303\274'
Packit Service a8c26c
		print -- \"\${item.text}\"
Packit Service a8c26c
		eval \"arr[0]=\$item\"
Packit Service a8c26c
		print -- \"\${arr[0].text}\"
Packit Service a8c26c
		eval \"txt=\${arr[0]}\"
Packit Service a8c26c
		print -- \$txt
Packit Service a8c26c
	" 2>&1)
Packit Service a8c26c
	[[ "$u" == "$x" ]] || err_exit LC_ALL=$locale multibyte value/trace format failed
Packit Service a8c26c
Packit Service a8c26c
	x=$'00fc\n20ac'
Packit Service a8c26c
	u=$(LC_ALL=$locale $SHELL -c $'printf "%04x\n" \$\'\"\303\274\"\' \$\'\"\xE2\x82\xAC\"\'')
Packit Service a8c26c
	[[ $u == $x ]] || err_exit LC_ALL=$locale multibyte %04x printf format failed
Packit Service a8c26c
fi
Packit Service a8c26c
Packit Service a8c26c
if	(( $($SHELL -c $'export LC_ALL='$locale$'; print -r "\342\202\254\342\202\254\342\202\254\342\202\254w\342\202\254\342\202\254\342\202\254\342\202\254" | wc -m' 2>/dev/null) == 10 ))
Packit Service a8c26c
then	LC_ALL=$locale $SHELL -c b1=$'"\342\202\254\342\202\254\342\202\254\342\202\254w\342\202\254\342\202\254\342\202\254\342\202\254"; [[ ${b1:4:1} == w ]]' || err_exit 'multibyte ${var:offset:len} not working correctly'
Packit Service a8c26c
fi
Packit Service a8c26c
Packit Service a8c26c
locale=en_US.UTF-8
Packit Service a8c26c
#$SHELL -c 'export LANG='$locale'; printf "\u[20ac]\u[20ac]" > $tmp/two_euro_chars.txt'
Packit Service a8c26c
printf $'\342\202\254\342\202\254' > $tmp/two_euro_chars.txt
Packit Service a8c26c
exp="6 2 6"
Packit Service a8c26c
set -- $($SHELL -c "
Packit Service a8c26c
	unset LC_CTYPE
Packit Service a8c26c
	export LANG=$locale
Packit Service a8c26c
	export LC_ALL=C
Packit Service a8c26c
	command wc -m < $tmp/two_euro_chars.txt
Packit Service a8c26c
	unset LC_ALL
Packit Service a8c26c
	command wc -m < $tmp/two_euro_chars.txt
Packit Service a8c26c
	export LC_ALL=C
Packit Service a8c26c
	command wc -m < $tmp/two_euro_chars.txt
Packit Service a8c26c
")
Packit Service a8c26c
got=$*
Packit Service a8c26c
[[ $got == $exp ]] || err_exit "command wc LC_ALL default failed -- expected '$exp', got '$got'"
Packit Service a8c26c
set -- $($SHELL -c "
Packit Service a8c26c
	if	builtin wc 2>/dev/null || builtin -f cmd wc 2>/dev/null
Packit Service a8c26c
	then	unset LC_CTYPE
Packit Service a8c26c
		export LANG=$locale
Packit Service a8c26c
		export LC_ALL=C
Packit Service a8c26c
		wc -C < $tmp/two_euro_chars.txt
Packit Service a8c26c
		unset LC_ALL
Packit Service a8c26c
		wc -C < $tmp/two_euro_chars.txt
Packit Service a8c26c
		export LC_ALL=C
Packit Service a8c26c
		wc -C < $tmp/two_euro_chars.txt
Packit Service a8c26c
	fi
Packit Service a8c26c
")
Packit Service a8c26c
got=$*
Packit Service a8c26c
[[ $got == $exp ]] || err_exit "builtin wc LC_ALL default failed -- expected '$exp', got '$got'"
Packit Service a8c26c
Packit Service a8c26c
locale=C_EU.UTF-8
Packit Service a8c26c
Packit Service a8c26c
# multibyte char straddling buffer boundary
Packit Service a8c26c
Packit Service a8c26c
{
Packit Service a8c26c
	unset i
Packit Service a8c26c
	integer i
Packit Service a8c26c
	for ((i = 0; i < 163; i++))
Packit Service a8c26c
	do	print "#234567890123456789012345678901234567890123456789"
Packit Service a8c26c
	done
Packit Service a8c26c
	printf $'%-.*c\n' 15 '#'
Packit Service a8c26c
	for ((i = 0; i < 2; i++))
Packit Service a8c26c
	do	print $': "\xe5\xae\x9f\xe8\xa1\x8c\xe6\xa9\x9f\xe8\x83\xbd\xe3\x82\x92\xe8\xa1\xa8\xe7\xa4\xba\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82" :'
Packit Service a8c26c
	done
Packit Service a8c26c
} > ko.dat
Packit Service a8c26c
Packit Service a8c26c
LC_ALL=$locale $SHELL < ko.dat 2> /dev/null || err_exit "script with multibyte char straddling buffer boundary fails"
Packit Service a8c26c
Packit Service a8c26c
#	exp	LC_ALL		LC_NUMERIC	LANG
Packit Service a8c26c
set -- \
Packit Service a8c26c
	2,5	$locale		C		''		\
Packit Service a8c26c
	2.5	C		$locale		''		\
Packit Service a8c26c
	2,5	$locale		''		C		\
Packit Service a8c26c
	2,5	''		$locale		C		\
Packit Service a8c26c
	2.5	C		''		$locale		\
Packit Service a8c26c
	2.5	''		C		$locale		\
Packit Service a8c26c
Packit Service a8c26c
unset a b c
Packit Service a8c26c
unset LC_ALL LC_NUMERIC LANG
Packit Service a8c26c
integer a b c
Packit Service a8c26c
while	(( $# >= 4 ))
Packit Service a8c26c
do	exp=$1
Packit Service a8c26c
	unset H V
Packit Service a8c26c
	typeset -A H
Packit Service a8c26c
	typeset -a V
Packit Service a8c26c
	[[ $2 ]] && V[0]="export LC_ALL=$2;"
Packit Service a8c26c
	[[ $3 ]] && V[1]="export LC_NUMERIC=$3;"
Packit Service a8c26c
	[[ $4 ]] && V[2]="export LANG=$4;"
Packit Service a8c26c
	for ((a = 0; a < 3; a++))
Packit Service a8c26c
	do	for ((b = 0; b < 3; b++))
Packit Service a8c26c
		do	if	(( b != a ))
Packit Service a8c26c
			then	for ((c = 0; c < 3; c++))
Packit Service a8c26c
				do	if	(( c != a && c != b ))
Packit Service a8c26c
					then	T=${V[$a]}${V[$b]}${V[$c]}
Packit Service a8c26c
						if	[[ ! ${H[$T]} ]]
Packit Service a8c26c
						then	H[$T]=1
Packit Service a8c26c
							got=$($SHELL -c "${T}print \$(( $exp ))" 2>&1)
Packit Service a8c26c
							[[ $got == $exp ]] || err_exit "${T} sequence failed -- expected '$exp', got '$got'"
Packit Service a8c26c
						fi
Packit Service a8c26c
					fi
Packit Service a8c26c
				done
Packit Service a8c26c
			fi
Packit Service a8c26c
		done
Packit Service a8c26c
	done
Packit Service a8c26c
	shift 4
Packit Service a8c26c
done
Packit Service a8c26c
Packit Service a8c26c
# setocale(LC_ALL,"") after setlocale() initialization
Packit Service a8c26c
locale=en_US.UTF-8
Packit Service a8c26c
Packit Service a8c26c
printf 'f1\357\274\240f2\n' > input1
Packit Service a8c26c
printf 't2\357\274\240f1\n' > input2
Packit Service a8c26c
printf '\357\274\240\n' > delim
Packit Service a8c26c
print "export LC_ALL=$locale
Packit Service a8c26c
join -j1 1 -j2 2 -o 1.1 -t \$(cat delim) input1 input2 > out" > script
Packit Service a8c26c
$SHELL -c 'unset LANG ${!LC_*}; $SHELL ./script' ||
Packit Service a8c26c
err_exit "join test script failed -- exit code $?"
Packit Service a8c26c
exp="f1"
Packit Service a8c26c
got="$(
Packit Service a8c26c
[[ $got == "$exp" ]] || err_exit "LC_ALL test script failed -- expected '$exp', got '$got'"
Packit Service a8c26c
Packit Service a8c26c
# multibyte identifiers
Packit Service a8c26c
Packit Service a8c26c
exp=OK
Packit Service a8c26c
got=$(LC_ALL=C.UTF-8 $SHELL -c $'\u[5929]=OK; print ${\u[5929]}' 2>&1)
Packit Service a8c26c
[[ $got == "$exp" ]] || err_exit "multibyte variable definition/expansion failed -- expected '$exp', got '$got'"
Packit Service a8c26c
got=$(LC_ALL=C.UTF-8 $SHELL -c $'function \u[5929]\n{\nprint OK;\n}; \u[5929]' 2>&1)
Packit Service a8c26c
[[ $got == "$exp" ]] || err_exit "multibyte ksh function definition/execution failed -- expected '$exp', got '$got'"
Packit Service a8c26c
got=$(LC_ALL=C.UTF-8 $SHELL -c $'\u[5929]()\n{\nprint OK;\n}; \u[5929]' 2>&1)
Packit Service a8c26c
[[ $got == "$exp" ]] || err_exit "multibyte posix function definition/execution failed -- expected '$exp', got '$got'"
Packit Service a8c26c
Packit Service a8c26c
# this locale is supported by ast on all platforms
Packit Service a8c26c
# mainly used to debug multibyte and message translation code
Packit Service a8c26c
# however wctype is not supported but that's ok for these tests
Packit Service a8c26c
Packit Service a8c26c
locale=debug
Packit Service a8c26c
Packit Service a8c26c
if	[[ "$(LC_ALL=$locale $SHELL <<- \+EOF+
Packit Service a8c26c
		x=a<1z>b<2yx>c
Packit Service a8c26c
		print ${#x}
Packit Service a8c26c
		+EOF+)" != 5
Packit Service a8c26c
	]]
Packit Service a8c26c
then	err_exit '${#x} not working with multibyte locales'
Packit Service a8c26c
fi
Packit Service a8c26c
Packit Service a8c26c
dir=_not_found_
Packit Service a8c26c
exp=2
Packit Service a8c26c
for cmd in \
Packit Service a8c26c
	"cd $dir; export LC_ALL=debug; cd $dir" \
Packit Service a8c26c
	"cd $dir; LC_ALL=debug cd $dir" \
Packit Service a8c26c
Packit Service a8c26c
do	got=$($SHELL -c "$cmd" 2>&1 | sort -u | wc -l)
Packit Service a8c26c
	(( ${got:-0} == $exp )) || err_exit "'$cmd' sequence failed -- error message not localized"
Packit Service a8c26c
done
Packit Service a8c26c
exp=121
Packit Service a8c26c
for lc in LANG LC_MESSAGES LC_ALL
Packit Service a8c26c
do	for cmd in "($lc=$locale;cd $dir)" "$lc=$locale;cd $dir;unset $lc" "function tst { typeset $lc=$locale;cd $dir; }; tst"
Packit Service a8c26c
	do	tst="$lc=C;cd $dir;$cmd;cd $dir;:"
Packit Service a8c26c
		$SHELL -c "unset LANG \${!LC_*}; $SHELL -c '$tst'" > out 2>&1 ||
Packit Service a8c26c
		err_exit "'$tst' failed -- exit status $?"
Packit Service a8c26c
		integer id=0
Packit Service a8c26c
		unset msg
Packit Service a8c26c
		typeset -A msg
Packit Service a8c26c
		got=
Packit Service a8c26c
		while	read -r line
Packit Service a8c26c
		do	line=${line##*:}
Packit Service a8c26c
			if	[[ ! ${msg[$line]} ]]
Packit Service a8c26c
			then	msg[$line]=$((++id))
Packit Service a8c26c
			fi
Packit Service a8c26c
			got+=${msg[$line]}
Packit Service a8c26c
		done < out
Packit Service a8c26c
		[[ $got == $exp ]] || err_exit "'$tst' failed -- expected '$exp', got '$got'"
Packit Service a8c26c
	done
Packit Service a8c26c
done
Packit Service a8c26c
Packit Service a8c26c
exp=123
Packit Service a8c26c
got=$(LC_ALL=debug $SHELL -c "a<2A@>z=$exp; print \$a<2A@>z")
Packit Service a8c26c
[[ $got == $exp ]] || err_exit "multibyte debug locale \$a<2A@>z failed -- expected '$exp', got '$got'"
Packit Service a8c26c
Packit Service a8c26c
unset LC_ALL LC_MESSAGES
Packit Service a8c26c
export LANG=debug
Packit Service a8c26c
function message
Packit Service a8c26c
{
Packit Service a8c26c
        print -r $"An error occurred."
Packit Service a8c26c
}
Packit Service a8c26c
exp=$'(libshell,3,46)\nAn error occurred.\n(libshell,3,46)'
Packit Service a8c26c
alt=$'(debug,message,libshell,An error occurred.)\nAn error occurred.\n(debug,message,libshell,An error occurred.)'
Packit Service a8c26c
got=$(message; LANG=C message; message)
Packit Service a8c26c
[[ $got == "$exp" || $got == "$alt" ]] || {
Packit Service a8c26c
	EXP=$(printf %q "$exp")
Packit Service a8c26c
	ALT=$(printf %q "$alt")
Packit Service a8c26c
	GOT=$(printf %q "$got")
Packit Service a8c26c
	err_exit "LANG change not seen by function -- expected $EXP or $ALT, got $GOT"
Packit Service a8c26c
}
Packit Service a8c26c
Packit Service a8c26c
a_thing=fish
Packit Service a8c26c
got=$(print -r aa$"\\ahello \" /\\${a_thing}/\\"zz)
Packit Service a8c26c
exp='aa(debug,'$Command',libshell,\ahello " /\fish/\)zz'
Packit Service a8c26c
[[ $got == "$exp" ]] || err_exit "$\"...\" containing expansions fails: expected $exp, got $got"
Packit Service a8c26c
Packit Service a8c26c
exp='(debug,'$Command',libshell,This is a string\n)'
Packit Service a8c26c
typeset got=$"This is a string\n"
Packit Service a8c26c
[[ $got == "$exp" ]] || err_exit "$\"...\" in assignment expansion fails: expected $exp got $got"
Packit Service a8c26c
Packit Service a8c26c
unset LANG
Packit Service a8c26c
Packit Service a8c26c
LC_ALL=C
Packit Service a8c26c
x=$"hello"
Packit Service a8c26c
[[ $x == hello ]] || err_exit 'assignment of message strings not working'
Packit Service a8c26c
Packit Service a8c26c
# tests for multibyte characteer at buffer boundary
Packit Service a8c26c
{
Packit Service a8c26c
	print 'cat << \\EOF'
Packit Service a8c26c
	for ((i=1; i < 164; i++))
Packit Service a8c26c
	do	print 123456789+123456789+123456789+123456789+123456789
Packit Service a8c26c
	done 
Packit Service a8c26c
	print $'next character is multibyte<2b|>c<3d|\>foo'
Packit Service a8c26c
	for ((i=1; i < 10; i++))
Packit Service a8c26c
	do	print 123456789+123456789+123456789+123456789+123456789
Packit Service a8c26c
	done
Packit Service a8c26c
	print EOF
Packit Service a8c26c
} > script$$.1
Packit Service a8c26c
chmod +x script$$.1
Packit Service a8c26c
x=$(  LC_ALL=debug $SHELL ./script$$.1)
Packit Service a8c26c
[[ ${#x} == 8641 ]] || err_exit 'here doc contains wrong number of chars with multibyte locale'
Packit Service a8c26c
[[ $x == *$'next character is multibyte<2b|>c<3d|\>foo'* ]] || err_exit "here_doc doesn't contain line with multibyte chars"
Packit Service a8c26c
Packit Service a8c26c
Packit Service a8c26c
x=$(LC_ALL=debug $SHELL -c 'x="a<2b|>c";print -r -- ${#x}')
Packit Service a8c26c
(( x == 3  )) || err_exit 'character length of multibyte character should be 3'
Packit Service a8c26c
x=$(LC_ALL=debug $SHELL -c 'typeset -R10 x="a<2b|>c";print -r -- "${x}"')
Packit Service a8c26c
[[ $x == '   a<2b|>c' ]] || err_exit 'typeset -R10 should begin with three spaces'
Packit Service a8c26c
x=$(LC_ALL=debug $SHELL -c 'typeset -L10 x="a<2b|>c";print -r -- "${x}"')
Packit Service a8c26c
[[ $x == 'a<2b|>c   ' ]] || err_exit 'typeset -L10 should end in three spaces'
Packit Service a8c26c
Packit Service a8c26c
if      $SHELL -c "export LC_ALL=en_US.UTF-8; c=$'\342\202\254'; [[ \${#c} == 1 ]]" 2>/dev/null
Packit Service a8c26c
then	LC_ALL=en_US.UTF-8
Packit Service a8c26c
	unset i p1 p2 x
Packit Service a8c26c
	for i in 9 b c d 20 1680 2000 2001 2002 2003 2004 2005 2006 2008 2009 200a 2028 2029 3000 # 1803 2007 202f  205f
Packit Service a8c26c
	do	if	! eval "[[ \$'\\u[$i]' == [[:space:]] ]]"
Packit Service a8c26c
		then	x+=,$i
Packit Service a8c26c
		fi
Packit Service a8c26c
	done
Packit Service a8c26c
	if	[[ $x ]]
Packit Service a8c26c
	then	if	[[ $x == ,*,* ]]
Packit Service a8c26c
		then	p1=s p2="are not space characters"
Packit Service a8c26c
		else	p1=  p2="is not a space character"
Packit Service a8c26c
		fi
Packit Service a8c26c
		err_exit "unicode char$p1 ${x#?} $p2 in locale $LC_ALL"
Packit Service a8c26c
	fi
Packit Service a8c26c
	unset x
Packit Service a8c26c
	x=$(printf "hello\u[20ac]\xee world")
Packit Service a8c26c
	[[ $(print -r -- "$x") == $'hello\u[20ac]\xee world' ]] || err_exit '%q with unicode and non-unicode not working'
Packit Service a8c26c
	if	[[ $(whence od) ]]
Packit Service a8c26c
	then	got='68 65 6c 6c 6f e2 82 ac ee 20 77 6f 72 6c 64 0a'
Packit Service a8c26c
		[[ $(print -r -- "$x" | od -An -tx1) =~ $got ]] || err_exit "incorrect string from printf %q"
Packit Service a8c26c
	fi
Packit Service a8c26c
	
Packit Service a8c26c
fi
Packit Service a8c26c
Packit Service a8c26c
exit $((Errors<125?Errors:125))
Packit Service a8c26c