# @(#)selectdevice 1.2 /sccs/src/cmd/sadmin/shell/s.selectdevice # Select one of the simple administration names for a block or character # device. #! chmod +x ${file} pid=${2:?} case "$1" in -b ) # block device type=-b typename=block r= ;; -c ) # character (aka raw) device type=-c typename=character r=r ;; * ) echo >&2 "Usage: $0 -[b|c] pid [dir [names ...]]" exit 1 esac if [ $# -lt 3 ] then #default directory to /dev/${r}SA set -- $1 $2 /dev/${r}SA fi DIR=$3 if [ ! -d $DIR ] then admerr $0 $DIR nonexistent directory exit 1 fi rm -f /usr/tmp/$$.list cd $DIR shift 3 if [ $# -eq 0 ] then # default to everything in directory ls >/usr/tmp/$$.list else for DEVTYPES in $* do ls | grep "${DEVTYPES}[0-9][0-9]*" >>/usr/tmp/$$.list done fi if [ ! -s /usr/tmp/$$.list ] then admerr $0 Problems in $DIR, no valid ${typename} devices. rm -f /usr/tmp/$$.list exit 1 fi set -- `cat /usr/tmp/$$.list` if [ $# = 1 ] then if [ ! ${type} "$1" ] then admerr $0 $1 is not of type ${typename} rm -f /usr/tmp/$$.list exit 1 fi echo $DIR/$1 rm -f /usr/tmp/$$.list exit 0 elif [ $# -gt 1 ] then list=`pr -tn /usr/tmp/$$.list` select=`checklist -k "${pid}" -fep -H " The menu items indicate possible devices for use by this subcommand. Your selection will determine the particular device to be used." " Select which device to use: ${list} Enter a number, a name, the initial part of a name, or ? for HELP, q to QUIT:" ${list} q` case ${select} in q ) rm -f /usr/tmp/$$.list exit 0 ;; [1-9] | [1-9][0-9]* ) shift `expr $select - 1` DEV=$DIR/$1 ;; * ) DEV=$DIR/${select} esac if [ ! ${type} $DEV ] then admerr $0 $DEV is not of type ${typename} rm -f /usr/tmp/$$.list exit 1 fi echo $DEV rm -f /usr/tmp/$$.list exit 0 fi