18462SApril.Chin@Sun.COM#
28462SApril.Chin@Sun.COM# CDDL HEADER START
38462SApril.Chin@Sun.COM#
48462SApril.Chin@Sun.COM# The contents of this file are subject to the terms of the
58462SApril.Chin@Sun.COM# Common Development and Distribution License (the "License").
68462SApril.Chin@Sun.COM# You may not use this file except in compliance with the License.
78462SApril.Chin@Sun.COM#
88462SApril.Chin@Sun.COM# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
98462SApril.Chin@Sun.COM# or http://www.opensolaris.org/os/licensing.
108462SApril.Chin@Sun.COM# See the License for the specific language governing permissions
118462SApril.Chin@Sun.COM# and limitations under the License.
128462SApril.Chin@Sun.COM#
138462SApril.Chin@Sun.COM# When distributing Covered Code, include this CDDL HEADER in each
148462SApril.Chin@Sun.COM# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
158462SApril.Chin@Sun.COM# If applicable, add the following below this CDDL HEADER, with the
168462SApril.Chin@Sun.COM# fields enclosed by brackets "[]" replaced with your own identifying
178462SApril.Chin@Sun.COM# information: Portions Copyright [yyyy] [name of copyright owner]
188462SApril.Chin@Sun.COM#
198462SApril.Chin@Sun.COM# CDDL HEADER END
208462SApril.Chin@Sun.COM#
218462SApril.Chin@Sun.COM
228462SApril.Chin@Sun.COM#
23*12068SRoger.Faulkner@Oracle.COM# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
248462SApril.Chin@Sun.COM#
258462SApril.Chin@Sun.COM
268462SApril.Chin@Sun.COM#
278462SApril.Chin@Sun.COM# variable tree test #003
288462SApril.Chin@Sun.COM# Propose of this test is whether ksh93 handles global variable trees
298462SApril.Chin@Sun.COM# and function-local variable trees the same way, including "nameref"
308462SApril.Chin@Sun.COM# and "unset" handling.
318462SApril.Chin@Sun.COM#
328462SApril.Chin@Sun.COM
3310898Sroland.mainz@nrubsig.org# test setup
348462SApril.Chin@Sun.COMfunction err_exit
358462SApril.Chin@Sun.COM{
368462SApril.Chin@Sun.COM	print -u2 -n "\t"
378462SApril.Chin@Sun.COM	print -u2 -r ${Command}[$1]: "${@:2}"
38*12068SRoger.Faulkner@Oracle.COM	(( Errors < 127 && Errors++ ))
398462SApril.Chin@Sun.COM}
408462SApril.Chin@Sun.COMalias err_exit='err_exit $LINENO'
418462SApril.Chin@Sun.COM
4210898Sroland.mainz@nrubsig.org# the test cannot use "nounset"
4310898Sroland.mainz@nrubsig.orgCommand=${0##*/}
448462SApril.Chin@Sun.COMinteger Errors=0
458462SApril.Chin@Sun.COM
468462SApril.Chin@Sun.COMfunction example_tree
478462SApril.Chin@Sun.COM{
488462SApril.Chin@Sun.COMcat <<EOF
498462SApril.Chin@Sun.COM(
508462SApril.Chin@Sun.COM	typeset -A l1=(
518462SApril.Chin@Sun.COM		[adobe]=(
528462SApril.Chin@Sun.COM			typeset -A l2=(
538462SApril.Chin@Sun.COM				[avantgarde]=(
548462SApril.Chin@Sun.COM					typeset -A l3=(
558462SApril.Chin@Sun.COM						[demi]=(
568462SApril.Chin@Sun.COM							typeset -A entries=(
578462SApril.Chin@Sun.COM								[182c069a485316b1bc7ae001c04c7835]=(
588462SApril.Chin@Sun.COM									typeset -a comments=(
598462SApril.Chin@Sun.COM										FONT
608462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-r-normal--199-120-1200-1200-p-1130-iso8859-1
618462SApril.Chin@Sun.COM										COPYRIGHT
628462SApril.Chin@Sun.COM										'Copyright Notice not available'
638462SApril.Chin@Sun.COM										RAW_PIXELSIZE
648462SApril.Chin@Sun.COM										RAW_POINTSIZE
658462SApril.Chin@Sun.COM										--
668462SApril.Chin@Sun.COM										section
678462SApril.Chin@Sun.COM										diaeresis
688462SApril.Chin@Sun.COM										copyright
698462SApril.Chin@Sun.COM										ordfeminine
708462SApril.Chin@Sun.COM										guillemotleft
718462SApril.Chin@Sun.COM									)
728462SApril.Chin@Sun.COM									typeset -a filenames=(
738462SApril.Chin@Sun.COM										X11Rx/R6.4/xc/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/AvantGarde-Demi.pmf
748462SApril.Chin@Sun.COM									)
758462SApril.Chin@Sun.COM									md5sum=182c069a485316b1bc7ae001c04c7835
768462SApril.Chin@Sun.COM									typeset -a xlfd=(
778462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-r-normal--199-120-1200-1200-p-1130-iso8859-1
788462SApril.Chin@Sun.COM									)
798462SApril.Chin@Sun.COM								)
808462SApril.Chin@Sun.COM								[7db15b51965d8fe1f1c55fcb101d7616]=(
818462SApril.Chin@Sun.COM									typeset -a comments=(
828462SApril.Chin@Sun.COM										FONT
838462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-i-normal--199-120-1200-1200-p-1130-iso8859-1
848462SApril.Chin@Sun.COM										COPYRIGHT
858462SApril.Chin@Sun.COM										'Copyright Notice not available'
868462SApril.Chin@Sun.COM										RAW_PIXELSIZE
878462SApril.Chin@Sun.COM										RAW_POINTSIZE
888462SApril.Chin@Sun.COM										--
898462SApril.Chin@Sun.COM										section
908462SApril.Chin@Sun.COM										diaeresis
918462SApril.Chin@Sun.COM										copyright
928462SApril.Chin@Sun.COM										ordfeminine
938462SApril.Chin@Sun.COM										guillemotleft
948462SApril.Chin@Sun.COM									)
958462SApril.Chin@Sun.COM									typeset -a filenames=(
968462SApril.Chin@Sun.COM										X11Rx/R6.4/xc/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/AvantGarde-DemiOblique.pmf
978462SApril.Chin@Sun.COM									)
988462SApril.Chin@Sun.COM									md5sum=7db15b51965d8fe1f1c55fcb101d7616
998462SApril.Chin@Sun.COM									typeset -a xlfd=(
1008462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-i-normal--199-120-1200-1200-p-1130-iso8859-1
1018462SApril.Chin@Sun.COM									)
1028462SApril.Chin@Sun.COM								)
1038462SApril.Chin@Sun.COM								[a37e4a4a5035abf6f294d830fbd9e775]=(
1048462SApril.Chin@Sun.COM									typeset -a comments=(
1058462SApril.Chin@Sun.COM										FONT
1068462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-r-normal--422-120-2540-2540-p-2395-iso8859-1
1078462SApril.Chin@Sun.COM										COPYRIGHT
1088462SApril.Chin@Sun.COM										'Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated.  All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.'
1098462SApril.Chin@Sun.COM										RAW_PIXELSIZE
1108462SApril.Chin@Sun.COM										RAW_POINTSIZE
1118462SApril.Chin@Sun.COM										--
1128462SApril.Chin@Sun.COM										section
1138462SApril.Chin@Sun.COM										diaeresis
1148462SApril.Chin@Sun.COM										copyright
1158462SApril.Chin@Sun.COM										ordfeminine
1168462SApril.Chin@Sun.COM										guillemotleft
1178462SApril.Chin@Sun.COM									)
1188462SApril.Chin@Sun.COM									typeset -a filenames=(
1198462SApril.Chin@Sun.COM										fox-gate/XW_NV/open-src/tarballs/xorg-server-1.3.0.0/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
1208462SApril.Chin@Sun.COM									)
1218462SApril.Chin@Sun.COM									md5sum=a37e4a4a5035abf6f294d830fbd9e775
1228462SApril.Chin@Sun.COM									typeset -a xlfd=(
1238462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-r-normal--422-120-2540-2540-p-2395-iso8859-1
1248462SApril.Chin@Sun.COM									)
1258462SApril.Chin@Sun.COM								)
1268462SApril.Chin@Sun.COM								[da3d6d94fcf759b95c7f829ce5619374]=(
1278462SApril.Chin@Sun.COM									typeset -a comments=(
1288462SApril.Chin@Sun.COM										FONT
1298462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-i-normal--422-120-2540-2540-p-2395-iso8859-1
1308462SApril.Chin@Sun.COM										COPYRIGHT
1318462SApril.Chin@Sun.COM										'Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated.  All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.'
1328462SApril.Chin@Sun.COM										RAW_PIXELSIZE
1338462SApril.Chin@Sun.COM										RAW_POINTSIZE
1348462SApril.Chin@Sun.COM										--
1358462SApril.Chin@Sun.COM										section
1368462SApril.Chin@Sun.COM										diaeresis
1378462SApril.Chin@Sun.COM										copyright
1388462SApril.Chin@Sun.COM										ordfeminine
1398462SApril.Chin@Sun.COM										guillemotleft
1408462SApril.Chin@Sun.COM									)
1418462SApril.Chin@Sun.COM									typeset -a filenames=(
1428462SApril.Chin@Sun.COM										fox-gate/XW_NV/open-src/tarballs/xorg-server-1.3.0.0/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
1438462SApril.Chin@Sun.COM									)
1448462SApril.Chin@Sun.COM									md5sum=da3d6d94fcf759b95c7f829ce5619374
1458462SApril.Chin@Sun.COM									typeset -a xlfd=(
1468462SApril.Chin@Sun.COM										-adobe-avantgarde-demi-i-normal--422-120-2540-2540-p-2395-iso8859-1
1478462SApril.Chin@Sun.COM									)
1488462SApril.Chin@Sun.COM								)
1498462SApril.Chin@Sun.COM							)
1508462SApril.Chin@Sun.COM						)
1518462SApril.Chin@Sun.COM					)
1528462SApril.Chin@Sun.COM				)
1538462SApril.Chin@Sun.COM			)
1548462SApril.Chin@Sun.COM		)
1558462SApril.Chin@Sun.COM	)
1568462SApril.Chin@Sun.COM)
1578462SApril.Chin@Sun.COMEOF
1588462SApril.Chin@Sun.COM}
1598462SApril.Chin@Sun.COM
1608462SApril.Chin@Sun.COMfunction main
1618462SApril.Chin@Sun.COM{
1628462SApril.Chin@Sun.COM	set -o errexit
1638462SApril.Chin@Sun.COM
1648462SApril.Chin@Sun.COM	typeset xlfd_tree=()
1658462SApril.Chin@Sun.COM	typeset -A xlfd_tree.l1
1668462SApril.Chin@Sun.COM
1678462SApril.Chin@Sun.COM	eval "xlfd_tree=$( example_tree )"
1688462SApril.Chin@Sun.COM
1698462SApril.Chin@Sun.COM	typeset i j k l fn
1708462SApril.Chin@Sun.COM
1718462SApril.Chin@Sun.COM        # filter chain begin
1728462SApril.Chin@Sun.COM        for i in "${!xlfd_tree.l1[@]}" ; do
1738462SApril.Chin@Sun.COM              for j in "${!xlfd_tree.l1["$i"].l2[@]}" ; do
1748462SApril.Chin@Sun.COM        	     for k in "${!xlfd_tree.l1["$i"].l2["$j"].l3[@]}" ; do
1758462SApril.Chin@Sun.COM        		     nameref vndnode=xlfd_tree.l1["$i"].l2["$j"].l3["$k"]
1768462SApril.Chin@Sun.COM
1778462SApril.Chin@Sun.COM        		     for l in "${!vndnode.entries[@]}" ; do
1788462SApril.Chin@Sun.COM        			     nameref node=vndnode.entries["$l"]
1798462SApril.Chin@Sun.COM
1808462SApril.Chin@Sun.COM        			     for fn in "${node.filenames[@]}" ; do
1818462SApril.Chin@Sun.COM        				     if [[ "${fn}" != ~(E)x-re_gate_XW_NV_MWS ]] ; then
1828462SApril.Chin@Sun.COM        					     unset "${!node}"
1838462SApril.Chin@Sun.COM        					     break
1848462SApril.Chin@Sun.COM        				     fi
1858462SApril.Chin@Sun.COM        			     done
1868462SApril.Chin@Sun.COM        		     done
1878462SApril.Chin@Sun.COM        	     done
1888462SApril.Chin@Sun.COM              done
1898462SApril.Chin@Sun.COM	done
1908462SApril.Chin@Sun.COM
1918462SApril.Chin@Sun.COM	# filter chain end
1928462SApril.Chin@Sun.COM
1938462SApril.Chin@Sun.COM	return 0
1948462SApril.Chin@Sun.COM}
1958462SApril.Chin@Sun.COM
1968462SApril.Chin@Sun.COMmain || ((Errors++))
1978462SApril.Chin@Sun.COM
1988462SApril.Chin@Sun.COM# tests done
1998462SApril.Chin@Sun.COMexit $((Errors))
200