home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
norge.freeshell.org (192.94.73.8)
/
192.94.73.8.tar
/
192.94.73.8
/
pub
/
computers
/
3b2
/
disklabel
< prev
next >
Wrap
Text File
|
1985-05-23
|
3KB
|
141 lines
# @(#)disklabel 1.4 /sccs/src/cmd/sadmin/shell/s.disklabel
# Ask the user to insert a medium and verify it is present.
# Write the label to the standard output if it is present.
#! chmod +x ${file}
usage="Usage: $0 [ -y | -n'drivename' | -q'question' ] parent-pid filename
-n'drivename' Provide a name for the drive.
-q'question' Provide alternative question.
-y return the label without asking questions"
ndrive='diskette drive'
question=
case $# in
2 )
;;
3 )
case "$1" in
-n?* )
ndrive=`expr "$1" : '-n\(.*\)'`
;;
-q?* )
question=`expr "$1" : '-q\(.*\)'`
;;
-y )
getit=yes
;;
* )
echo >&2 "${usage}"
exit 1
esac
shift
;;
4 )
case "$1" in
-n )
ndrive=$2
;;
-q )
question=$2
;;
* )
echo >&2 "${usage}"
exit 1
esac
shift
shift
;;
* )
echo >&2 "${usage}"
exit 1
esac
: ${question:="Insert the medium in the ${ndrive}. Press <RETURN> when ready. [q]"}
pid=$1
ddrive=$2
case ${ddrive} in
/dev/r* )
# WARNING: This depends on the common, but not universal, naming
# convenetion that all character and block special devices are under
# /dev and if /dev/THING is a block device then /dev/rTHING is the
# corresponding character (aka "raw") device. Note that THING may
# have directories as part of the name.
# if ddrive is raw, bddrive == block device for a raw device
bddrive=/dev/`expr ${ddrive} : '/dev/r\(.*\)'`
;;
* )
# otherwise they are the same.
bddrive=${ddrive}
esac
trap 'exit 1' 1 2
trap "kill ${pid}; exit 0" 15
flags="-qq -k$$"
mounted=`/etc/mount |
sed -n "\\;${bddrive};s;^\\([^ ]*\\) on ${bddrive} .*;\\1;p"`
if [ -n "${mounted}" ]
then
echo >&2 "The ${ndrive} is already mounted as the ${mounted} file system.
This command cannot run with it mounted."
if [ ${getit} ]
then
kill ${pid}
exit 0
fi
if checkyn ${flags} -H"
The ${ndrive} is already in use; it has a medium in it that
is mounted as a file system starting at the ${mounted} directory.
Before you can use the ${ndrive} for some other purpose, you
must unmount the medium now in use." \
-f "Do you want to unmount it?"
then
if diskumount ${bddrive} ${mounted}
then
:
else
echo >&2 " This command cannot run because the ${mounted} file system is mounted.
Unmount it and try again."
kill ${pid}
exit 0
fi
else
echo >&2 "The medium in the ${ndrive} is still mounted on ${mounted}."
kill ${pid}
exit 0
fi
fi
while true
do
if [ -z "${getit}" ]
then
checklist ${flags} -f -D '' \
"${question}" \
'<RETURN>' ''
fi
label=`/etc/labelit ${ddrive} 2>/dev/null`
if [ $? -eq 0 ]
then
break
fi
echo >&2 '
The medium may not be properly inserted,
the drive door may not be closed, the medium may not be formatted,
the medium may be in upside-down, or there is some other problem.
Check it and try again.
'
if [ ${getit} ]
then
kill ${pid}
exit 0
fi
done
/etc/fsstat ${ddrive} >/dev/null 2>&1
if [ $? = 3 ]
then
exit 0
fi
echo "${label}"