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