#!/bin/rc
# usbfat: [disk [mtpt]] - mount a USB disk's MS FAT file system
rfork e
disk = ()
mtpt = /n/usb
test -e /dev/usb || bind -a '#u' /dev || {
echo no '#u/usb' >[1=2]
exit nousb
}
test -e /dev/usbdctl || mount -a /srv/usb /dev || {
echo cannot mount /srv/usb >[1=2]
exit nousbd
}
disks=()
mtpt=()
switch ($#*) {
case 0
;
case 1
disks = $1
case 2
disks = $1
mtpt = $2
case *
echo usage: $0 ' [disk [mtpt]]' >[1=2]
exit usage
}
if (~ $#disks 0){
disks = /dev/sdU*/data
if(! test -e $disks(1)){
echo no usb disks >[1=2]
exit nodisk
}
}
for(d in $disks){
if(~ $d sdU*.[0-9]*)
d=/dev/$d/data
if(test -e $d){
name=`{echo $d | sed 's/.*(sdU[0-9]+\.[0-9]+).*/\1/'}
if(~ $#mtpt 0)
mnt=/n/$name
if not
mnt=$mtpt
# don't mount it if it seems to be already mounted.
if(! test -e $mnt/*)
if(grep -s geometry /dev/$name/ctl){
blk = `{disk/fdisk -p $d | awk '/^part dos / {print $3}'}
if (! ~ $#blk 0 && ~ $blk [0-9]*)
d=$d:$blk
mount -c <{dossrv -sf $d >[2]/dev/null} $mnt && echo $mnt
}
}
if not
echo $d does not exist
}
exit ''
|