14887Schin######################################################################## 24887Schin# # 34887Schin# This software is part of the ast package # 4*12068SRoger.Faulkner@Oracle.COM# Copyright (c) 1982-2010 AT&T Intellectual Property # 54887Schin# and is licensed under the # 64887Schin# Common Public License, Version 1.0 # 78462SApril.Chin@Sun.COM# by AT&T Intellectual Property # 84887Schin# # 94887Schin# A copy of the License is available at # 104887Schin# http://www.opensource.org/licenses/cpl1.0.txt # 114887Schin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) # 124887Schin# # 134887Schin# Information and Software Systems Research # 144887Schin# AT&T Research # 154887Schin# Florham Park NJ # 164887Schin# # 174887Schin# David Korn <dgk@research.att.com> # 184887Schin# # 194887Schin######################################################################## 204887Schinfunction err_exit 214887Schin{ 224887Schin print -u2 -n "\t" 234887Schin print -u2 -r ${Command}[$1]: "${@:2}" 244887Schin let Errors+=1 254887Schin} 264887Schinalias err_exit='err_exit $LINENO' 274887Schin 2810898Sroland.mainz@nrubsig.orgCommand=${0##*/} 2910898Sroland.mainz@nrubsig.orginteger Errors=0 3010898Sroland.mainz@nrubsig.org 3110898Sroland.mainz@nrubsig.orgtmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; } 3210898Sroland.mainz@nrubsig.orgtrap "cd /; rm -rf $tmp" EXIT 3310898Sroland.mainz@nrubsig.org 344887Schinfunction abspath 354887Schin{ 364887Schin base=$(basename $SHELL) 374887Schin cd ${SHELL%/$base} 384887Schin newdir=$(pwd) 394887Schin cd ~- 404887Schin print $newdir/$base 414887Schin} 424887Schin#test for proper exit of shell 434887Schinbuiltin getconf 444887SchinABSHELL=$(abspath) 4510898Sroland.mainz@nrubsig.orgcd $tmp || { err_exit "cd $tmp failed"; exit 1; } 464887Schinprint exit 0 >.profile 474887Schin${ABSHELL} <<! 484887SchinHOME=$PWD \ 494887SchinPATH=$PATH \ 504887SchinSHELL=$ABSSHELL \ 514887Schin$( 5210898Sroland.mainz@nrubsig.org v=$(getconf LIBPATH) 5310898Sroland.mainz@nrubsig.org for v in ${v//,/ } 5410898Sroland.mainz@nrubsig.org do v=${v#*:} 5510898Sroland.mainz@nrubsig.org v=${v%%:*} 5610898Sroland.mainz@nrubsig.org eval [[ \$$v ]] && eval print -n \" \"\$v=\"\$$v\" 574887Schin done 584887Schin) \ 594887Schinexec -c -a -ksh ${ABSHELL} -c "exit 1" 1>/dev/null 2>&1 604887Schin! 614887Schinstatus=$(echo $?) 624887Schinif [[ -o noprivileged && $status != 0 ]] 634887Schinthen err_exit 'exit in .profile is ignored' 644887Schinelif [[ -o privileged && $status == 0 ]] 654887Schinthen err_exit 'privileged .profile not ignored' 664887Schinfi 674887Schinif [[ $(trap 'code=$?; echo $code; trap 0; exit $code' 0; exit 123) != 123 ]] 684887Schinthen err_exit 'exit not setting $?' 694887Schinfi 704887Schincat > run.sh <<- "EOF" 714887Schin trap 'code=$?; echo $code; trap 0; exit $code' 0 724887Schin ( trap 0; exit 123 ) 734887SchinEOF 744887Schinif [[ $($SHELL ./run.sh) != 123 ]] 754887Schinthen err_exit 'subshell trap on exit overwrites parent trap' 764887Schinfi 774887Schincd ~- || err_exit "cd back failed" 788462SApril.Chin@Sun.COM$SHELL -c 'builtin -f cmd getconf; getconf --"?-version"; exit 0' >/dev/null 2>&1 || err_exit 'ksh plugin exit failed -- was ksh built with CCFLAGS+=$(CC.EXPORT.DYNAMIC)?' 7910898Sroland.mainz@nrubsig.org 804887Schinexit $((Errors)) 81