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: "$@" 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 home # id 354887Schin{ 364887Schin typeset IFS=: pwd=/etc/passwd 374887Schin set -o noglob 384887Schin if [[ -f $pwd ]] && grep -c "^$1:" $pwd > /dev/null 394887Schin then set -- $(grep "^$1:" $pwd) 404887Schin print -r -- "$6" 414887Schin else print . 424887Schin fi 434887Schin} 444887Schin 454887SchinOLDPWD=/bin 464887Schinif [[ ~ != $HOME ]] 474887Schinthen err_exit '~' not $HOME 484887Schinfi 494887Schinx=~ 504887Schinif [[ $x != $HOME ]] 514887Schinthen err_exit x=~ not $HOME 524887Schinfi 534887Schinx=x:~ 544887Schinif [[ $x != x:$HOME ]] 554887Schinthen err_exit x=x:~ not x:$HOME 564887Schinfi 574887Schinif [[ ~+ != $PWD ]] 584887Schinthen err_exit '~' not $PWD 594887Schinfi 604887Schinx=~+ 614887Schinif [[ $x != $PWD ]] 624887Schinthen err_exit x=~+ not $PWD 634887Schinfi 644887Schinif [[ ~- != $OLDPWD ]] 654887Schinthen err_exit '~' not $PWD 664887Schinfi 674887Schinx=~- 684887Schinif [[ $x != $OLDPWD ]] 694887Schinthen err_exit x=~- not $OLDPWD 704887Schinfi 714887Schinfor u in root Administrator 724887Schindo h=$(home $u) 734887Schin if [[ $h != . ]] 744887Schin then [[ ~$u -ef $h ]] || err_exit "~$u not $h" 754887Schin x=~$u 7610898Sroland.mainz@nrubsig.org [[ $x -ef $h ]] || x="~$u not $h" 774887Schin break 784887Schin fi 794887Schindone 8010898Sroland.mainz@nrubsig.orgx=~g.r.emlin 8110898Sroland.mainz@nrubsig.orgif [[ $x != '~g.r.emlin' ]] 8210898Sroland.mainz@nrubsig.orgthen err_exit "x=~g.r.emlin failed -- expected '~g.r.emlin', got '$x'" 834887Schinfi 844887Schinx=~:~ 854887Schinif [[ $x != "$HOME:$HOME" ]] 8610898Sroland.mainz@nrubsig.orgthen err_exit "x=~:~ failed, expected '$HOME:$HOME', got '$x'" 874887Schinfi 884887SchinHOME=/ 894887Schin[[ ~ == / ]] || err_exit '~ should be /' 904887Schin[[ ~/foo == /foo ]] || err_exit '~/foo should be /foo when ~==/' 9110898Sroland.mainz@nrubsig.orgprint $'print ~+\n[[ $1 ]] && $0' > $tmp/tilde 9210898Sroland.mainz@nrubsig.orgchmod +x $tmp/tilde 938462SApril.Chin@Sun.COMnl=$'\n' 9410898Sroland.mainz@nrubsig.org[[ $($tmp/tilde foo) == "$PWD$nl$PWD" ]] 2> /dev/null || err_exit 'tilde fails inside a script run by name' 954887Schinexit $((Errors)) 96