|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T u
Length: 4335 (0x10ef) Types: TextFile Names: »usr/lbin/disklabel «
└─⟦307897ef0⟧ Bits:30004042/core1.imd SW95705I 386/ix Multi-user Release 1.2 └─⟦this⟧ »usr/lbin/disklabel «
#ident "@(#)sadmin:shell/disklabel 2.13" # 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' ] [ -w | -x ] \\ parent-pid filename -n'drivename' Provide a name for the drive. -q'question' Provide alternative question. -w Check for writability. -x No checks or reading of label; for before formatting. -y Return the label without asking questions." unset getit ndrive question writechk nochecks mounted while [ $# -gt 0 ] do case "$1" in -n?* ) ndrive=`expr "$1" : '-n\(.*\)'` ;; -q?* ) question=`expr "$1" : '-q\(.*\)'` ;; -q ) question=$2 shift ;; -n ) ndrive=$2 shift ;; -w ) writechk=yes ;; -x ) nochecks=yes ;; -y ) getit=yes ;; * ) break esac shift done if [ $# -ne 2 ] then echo >&2 "${usage}" exit 1 fi pid=$1 ddrive=$2 : ${ndrive:=`drivename ${ddrive}`} : ${question:="Insert the medium in the ${ndrive}. Press <RETURN> when ready. [q]"} 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 " trap '' 1 2 kill ${pid}; exit 0" 15 flags="-q q -k $$" # Determine, with some effort, whether the device is already mounted. # Since the same major/minor number of a block device may have several # names, we must use them to determine if the drive is mounted. # See what the major/minor number of the requested block device is, then # look for that among the mounted devices. majmin=`ls -l ${bddrive} 2>/dev/null | sed -n 's/.*\( [0-9]\{1,\}, *[0-9]\{1,\} \).*/\1/p'` # It is possible there is no corresponding block device for a character # device. if [ -n "${majmin}" ] then mounted=`/etc/mount | cut -d' ' -f3 | xargs ls -l 2>/dev/null | sed -n "/${majmin}/s/.* \\(.*\\)/\\1/p"` fi if [ -n "${mounted}" ] then filesys=`/etc/mount | sed -n "\\; on ${mounted} ;s;^\\([^ ]*\\) .*;\\1;p"` echo >&2 "The medium in the ${ndrive} is already mounted as the ${filesys} 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 ${filesys} 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 -n "${ndrive}" ${mounted} ${filesys} then : else echo >&2 " This command cannot run because the ${filesys} 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 ${filesys}." kill ${pid} exit 0 fi fi failchk() { if [ ${getit} ] then kill ${pid} exit 0 fi } while true do if [ -z "${getit}" ] then checklist ${flags} -f -D '' "${question}" '<RETURN>' '' fi if [ ${nochecks} ] then exit 0 fi # dd checks that the file is openable for reading. if dd count=1 if=${ddrive} of=/dev/null 2>/dev/null then : else 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. ' failchk continue fi # This writability check WRITES ON THE MEDIUM!!! if it can. # (Not pretty, but the only way to do it right now.) if [ ${writechk} ] then if dd count=1 if=/etc/passwd of=${ddrive} 2>/dev/null then : else echo >&2 ' The medium is not writable. It may be write-protected, inherently unwritable, or there is some other problem. Check it and try again. ' failchk continue fi fi break done if [ -x /etc/fsstat ] then /etc/fsstat ${ddrive} >/dev/null 2>&1 if [ $? = 3 ] then exit 0 fi fi /etc/labelit ${ddrive} 2>/dev/null exit 0