17c2fbfb3SApril Chin#
27c2fbfb3SApril Chin# CDDL HEADER START
37c2fbfb3SApril Chin#
47c2fbfb3SApril Chin# The contents of this file are subject to the terms of the
57c2fbfb3SApril Chin# Common Development and Distribution License (the "License").
67c2fbfb3SApril Chin# You may not use this file except in compliance with the License.
77c2fbfb3SApril Chin#
87c2fbfb3SApril Chin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c2fbfb3SApril Chin# or http://www.opensolaris.org/os/licensing.
107c2fbfb3SApril Chin# See the License for the specific language governing permissions
117c2fbfb3SApril Chin# and limitations under the License.
127c2fbfb3SApril Chin#
137c2fbfb3SApril Chin# When distributing Covered Code, include this CDDL HEADER in each
147c2fbfb3SApril Chin# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c2fbfb3SApril Chin# If applicable, add the following below this CDDL HEADER, with the
167c2fbfb3SApril Chin# fields enclosed by brackets "[]" replaced with your own identifying
177c2fbfb3SApril Chin# information: Portions Copyright [yyyy] [name of copyright owner]
187c2fbfb3SApril Chin#
197c2fbfb3SApril Chin# CDDL HEADER END
207c2fbfb3SApril Chin#
217c2fbfb3SApril Chin
227c2fbfb3SApril Chin#
233e14f97fSRoger A. Faulkner# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
247c2fbfb3SApril Chin#
257c2fbfb3SApril Chin
267c2fbfb3SApril Chin#
277c2fbfb3SApril Chin# variable tree test #003
287c2fbfb3SApril Chin# Propose of this test is whether ksh93 handles global variable trees
297c2fbfb3SApril Chin# and function-local variable trees the same way, including "nameref"
307c2fbfb3SApril Chin# and "unset" handling.
317c2fbfb3SApril Chin#
327c2fbfb3SApril Chin
3334f9b3eeSRoland Mainz# test setup
347c2fbfb3SApril Chinfunction err_exit
357c2fbfb3SApril Chin{
367c2fbfb3SApril Chin	print -u2 -n "\t"
377c2fbfb3SApril Chin	print -u2 -r ${Command}[$1]: "${@:2}"
383e14f97fSRoger A. Faulkner	(( Errors < 127 && Errors++ ))
397c2fbfb3SApril Chin}
407c2fbfb3SApril Chinalias err_exit='err_exit $LINENO'
417c2fbfb3SApril Chin
4234f9b3eeSRoland Mainz# the test cannot use "nounset"
4334f9b3eeSRoland MainzCommand=${0##*/}
447c2fbfb3SApril Chininteger Errors=0
457c2fbfb3SApril Chin
467c2fbfb3SApril Chinfunction example_tree
477c2fbfb3SApril Chin{
487c2fbfb3SApril Chincat <<EOF
497c2fbfb3SApril Chin(
507c2fbfb3SApril Chin	typeset -A l1=(
517c2fbfb3SApril Chin		[adobe]=(
527c2fbfb3SApril Chin			typeset -A l2=(
537c2fbfb3SApril Chin				[avantgarde]=(
547c2fbfb3SApril Chin					typeset -A l3=(
557c2fbfb3SApril Chin						[demi]=(
567c2fbfb3SApril Chin							typeset -A entries=(
577c2fbfb3SApril Chin								[182c069a485316b1bc7ae001c04c7835]=(
587c2fbfb3SApril Chin									typeset -a comments=(
597c2fbfb3SApril Chin										FONT
607c2fbfb3SApril Chin										-adobe-avantgarde-demi-r-normal--199-120-1200-1200-p-1130-iso8859-1
617c2fbfb3SApril Chin										COPYRIGHT
627c2fbfb3SApril Chin										'Copyright Notice not available'
637c2fbfb3SApril Chin										RAW_PIXELSIZE
647c2fbfb3SApril Chin										RAW_POINTSIZE
657c2fbfb3SApril Chin										--
667c2fbfb3SApril Chin										section
677c2fbfb3SApril Chin										diaeresis
687c2fbfb3SApril Chin										copyright
697c2fbfb3SApril Chin										ordfeminine
707c2fbfb3SApril Chin										guillemotleft
717c2fbfb3SApril Chin									)
727c2fbfb3SApril Chin									typeset -a filenames=(
737c2fbfb3SApril Chin										X11Rx/R6.4/xc/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/AvantGarde-Demi.pmf
747c2fbfb3SApril Chin									)
757c2fbfb3SApril Chin									md5sum=182c069a485316b1bc7ae001c04c7835
767c2fbfb3SApril Chin									typeset -a xlfd=(
777c2fbfb3SApril Chin										-adobe-avantgarde-demi-r-normal--199-120-1200-1200-p-1130-iso8859-1
787c2fbfb3SApril Chin									)
797c2fbfb3SApril Chin								)
807c2fbfb3SApril Chin								[7db15b51965d8fe1f1c55fcb101d7616]=(
817c2fbfb3SApril Chin									typeset -a comments=(
827c2fbfb3SApril Chin										FONT
837c2fbfb3SApril Chin										-adobe-avantgarde-demi-i-normal--199-120-1200-1200-p-1130-iso8859-1
847c2fbfb3SApril Chin										COPYRIGHT
857c2fbfb3SApril Chin										'Copyright Notice not available'
867c2fbfb3SApril Chin										RAW_PIXELSIZE
877c2fbfb3SApril Chin										RAW_POINTSIZE
887c2fbfb3SApril Chin										--
897c2fbfb3SApril Chin										section
907c2fbfb3SApril Chin										diaeresis
917c2fbfb3SApril Chin										copyright
927c2fbfb3SApril Chin										ordfeminine
937c2fbfb3SApril Chin										guillemotleft
947c2fbfb3SApril Chin									)
957c2fbfb3SApril Chin									typeset -a filenames=(
967c2fbfb3SApril Chin										X11Rx/R6.4/xc/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/AvantGarde-DemiOblique.pmf
977c2fbfb3SApril Chin									)
987c2fbfb3SApril Chin									md5sum=7db15b51965d8fe1f1c55fcb101d7616
997c2fbfb3SApril Chin									typeset -a xlfd=(
1007c2fbfb3SApril Chin										-adobe-avantgarde-demi-i-normal--199-120-1200-1200-p-1130-iso8859-1
1017c2fbfb3SApril Chin									)
1027c2fbfb3SApril Chin								)
1037c2fbfb3SApril Chin								[a37e4a4a5035abf6f294d830fbd9e775]=(
1047c2fbfb3SApril Chin									typeset -a comments=(
1057c2fbfb3SApril Chin										FONT
1067c2fbfb3SApril Chin										-adobe-avantgarde-demi-r-normal--422-120-2540-2540-p-2395-iso8859-1
1077c2fbfb3SApril Chin										COPYRIGHT
1087c2fbfb3SApril Chin										'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.'
1097c2fbfb3SApril Chin										RAW_PIXELSIZE
1107c2fbfb3SApril Chin										RAW_POINTSIZE
1117c2fbfb3SApril Chin										--
1127c2fbfb3SApril Chin										section
1137c2fbfb3SApril Chin										diaeresis
1147c2fbfb3SApril Chin										copyright
1157c2fbfb3SApril Chin										ordfeminine
1167c2fbfb3SApril Chin										guillemotleft
1177c2fbfb3SApril Chin									)
1187c2fbfb3SApril Chin									typeset -a filenames=(
1197c2fbfb3SApril Chin										fox-gate/XW_NV/open-src/tarballs/xorg-server-1.3.0.0/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
1207c2fbfb3SApril Chin									)
1217c2fbfb3SApril Chin									md5sum=a37e4a4a5035abf6f294d830fbd9e775
1227c2fbfb3SApril Chin									typeset -a xlfd=(
1237c2fbfb3SApril Chin										-adobe-avantgarde-demi-r-normal--422-120-2540-2540-p-2395-iso8859-1
1247c2fbfb3SApril Chin									)
1257c2fbfb3SApril Chin								)
1267c2fbfb3SApril Chin								[da3d6d94fcf759b95c7f829ce5619374]=(
1277c2fbfb3SApril Chin									typeset -a comments=(
1287c2fbfb3SApril Chin										FONT
1297c2fbfb3SApril Chin										-adobe-avantgarde-demi-i-normal--422-120-2540-2540-p-2395-iso8859-1
1307c2fbfb3SApril Chin										COPYRIGHT
1317c2fbfb3SApril Chin										'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.'
1327c2fbfb3SApril Chin										RAW_PIXELSIZE
1337c2fbfb3SApril Chin										RAW_POINTSIZE
1347c2fbfb3SApril Chin										--
1357c2fbfb3SApril Chin										section
1367c2fbfb3SApril Chin										diaeresis
1377c2fbfb3SApril Chin										copyright
1387c2fbfb3SApril Chin										ordfeminine
1397c2fbfb3SApril Chin										guillemotleft
1407c2fbfb3SApril Chin									)
1417c2fbfb3SApril Chin									typeset -a filenames=(
1427c2fbfb3SApril Chin										fox-gate/XW_NV/open-src/tarballs/xorg-server-1.3.0.0/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
1437c2fbfb3SApril Chin									)
1447c2fbfb3SApril Chin									md5sum=da3d6d94fcf759b95c7f829ce5619374
1457c2fbfb3SApril Chin									typeset -a xlfd=(
1467c2fbfb3SApril Chin										-adobe-avantgarde-demi-i-normal--422-120-2540-2540-p-2395-iso8859-1
1477c2fbfb3SApril Chin									)
1487c2fbfb3SApril Chin								)
1497c2fbfb3SApril Chin							)
1507c2fbfb3SApril Chin						)
1517c2fbfb3SApril Chin					)
1527c2fbfb3SApril Chin				)
1537c2fbfb3SApril Chin			)
1547c2fbfb3SApril Chin		)
1557c2fbfb3SApril Chin	)
1567c2fbfb3SApril Chin)
1577c2fbfb3SApril ChinEOF
1587c2fbfb3SApril Chin}
1597c2fbfb3SApril Chin
1607c2fbfb3SApril Chinfunction main
1617c2fbfb3SApril Chin{
1627c2fbfb3SApril Chin	set -o errexit
163*b30d1939SAndy Fiddaman
1647c2fbfb3SApril Chin	typeset xlfd_tree=()
1657c2fbfb3SApril Chin	typeset -A xlfd_tree.l1
166*b30d1939SAndy Fiddaman
1677c2fbfb3SApril Chin	eval "xlfd_tree=$( example_tree )"
168*b30d1939SAndy Fiddaman
1697c2fbfb3SApril Chin	typeset i j k l fn
1707c2fbfb3SApril Chin
1717c2fbfb3SApril Chin        # filter chain begin
1727c2fbfb3SApril Chin        for i in "${!xlfd_tree.l1[@]}" ; do
1737c2fbfb3SApril Chin              for j in "${!xlfd_tree.l1["$i"].l2[@]}" ; do
1747c2fbfb3SApril Chin        	     for k in "${!xlfd_tree.l1["$i"].l2["$j"].l3[@]}" ; do
1757c2fbfb3SApril Chin        		     nameref vndnode=xlfd_tree.l1["$i"].l2["$j"].l3["$k"]
176*b30d1939SAndy Fiddaman
1777c2fbfb3SApril Chin        		     for l in "${!vndnode.entries[@]}" ; do
1787c2fbfb3SApril Chin        			     nameref node=vndnode.entries["$l"]
179*b30d1939SAndy Fiddaman
1807c2fbfb3SApril Chin        			     for fn in "${node.filenames[@]}" ; do
1817c2fbfb3SApril Chin        				     if [[ "${fn}" != ~(E)x-re_gate_XW_NV_MWS ]] ; then
1827c2fbfb3SApril Chin        					     unset "${!node}"
1837c2fbfb3SApril Chin        					     break
1847c2fbfb3SApril Chin        				     fi
1857c2fbfb3SApril Chin        			     done
1867c2fbfb3SApril Chin        		     done
1877c2fbfb3SApril Chin        	     done
1887c2fbfb3SApril Chin              done
1897c2fbfb3SApril Chin	done
1907c2fbfb3SApril Chin
1917c2fbfb3SApril Chin	# filter chain end
1927c2fbfb3SApril Chin
1937c2fbfb3SApril Chin	return 0
1947c2fbfb3SApril Chin}
1957c2fbfb3SApril Chin
1967c2fbfb3SApril Chinmain || ((Errors++))
1977c2fbfb3SApril Chin
1987c2fbfb3SApril Chin# tests done
1997c2fbfb3SApril Chinexit $((Errors))
200