1*906943f9SDavid du Colombier#!/bin/rc 2*906943f9SDavid du Colombier# usbfat: [disk [mtpt]] - mount a USB disk's MS FAT file system 3*906943f9SDavid du Colombierrfork e 4*906943f9SDavid du Colombierdisk = () 5*906943f9SDavid du Colombiermtpt = /n/usb 6*906943f9SDavid du Colombier 7*906943f9SDavid du Colombiertest -e /dev/usb || bind -a '#u' /dev || { 8*906943f9SDavid du Colombier echo no '#u/usb' >[1=2] 9*906943f9SDavid du Colombier exit nousb 10*906943f9SDavid du Colombier} 11*906943f9SDavid du Colombiertest -e /dev/usbdctl || mount -a /srv/usb /dev || { 12*906943f9SDavid du Colombier echo cannot mount /srv/usb >[1=2] 13*906943f9SDavid du Colombier exit nousbd 14*906943f9SDavid du Colombier} 15*906943f9SDavid du Colombier 16*906943f9SDavid du Colombierdisks=() 17*906943f9SDavid du Colombiermtpt=() 18*906943f9SDavid du Colombierswitch ($#*) { 19*906943f9SDavid du Colombiercase 0 20*906943f9SDavid du Colombier ; 21*906943f9SDavid du Colombiercase 1 22*906943f9SDavid du Colombier disks = $1 23*906943f9SDavid du Colombiercase 2 24*906943f9SDavid du Colombier disks = $1 25*906943f9SDavid du Colombier mtpt = $2 26*906943f9SDavid du Colombiercase * 27*906943f9SDavid du Colombier echo usage: $0 ' [disk [mtpt]]' >[1=2] 28*906943f9SDavid du Colombier exit usage 29*906943f9SDavid du Colombier} 30*906943f9SDavid du Colombier 31*906943f9SDavid du Colombierif (~ $#disks 0){ 32*906943f9SDavid du Colombier if(! test -e /dev/sdU*/data){ 33*906943f9SDavid du Colombier echo no usb disks >[1=2] 34*906943f9SDavid du Colombier exit nodisk 35*906943f9SDavid du Colombier } 36*906943f9SDavid du Colombier disks = `{echo /dev/sdU*/data} 37*906943f9SDavid du Colombier} 38*906943f9SDavid du Colombierfor(d in $disks){ 39*906943f9SDavid du Colombier if(~ $d sdU*.[0-9]*) 40*906943f9SDavid du Colombier d=/dev/$d/data 41*906943f9SDavid du Colombier if(test -e $d){ 42*906943f9SDavid du Colombier name=`{echo $d | sed 's/.*(sdU[0-9]+\.[0-9]+).*/\1/'} 43*906943f9SDavid du Colombier if(~ $#mtpt 0) 44*906943f9SDavid du Colombier mnt=/n/$name 45*906943f9SDavid du Colombier if not 46*906943f9SDavid du Colombier mnt=$mtpt 47*906943f9SDavid du Colombier # don't mount it if it seems to be already mounted. 48*906943f9SDavid du Colombier if(! test -e $mnt/*) 49*906943f9SDavid du Colombier if(grep -s geometry /dev/$name/ctl){ 50*906943f9SDavid du Colombier blk = `{disk/fdisk -p $d | awk '/^part dos / {print $3}'} 51*906943f9SDavid du Colombier if (! ~ $#blk 0 && ~ $blk [0-9]*) 52*906943f9SDavid du Colombier d=$d:$blk 53*906943f9SDavid du Colombier mount -c <{dossrv -sf $d >[2]/dev/null} $mnt && echo $mnt 54*906943f9SDavid du Colombier } 55*906943f9SDavid du Colombier } 56*906943f9SDavid du Colombier if not 57*906943f9SDavid du Colombier echo $d does not exist 58*906943f9SDavid du Colombier} 59*906943f9SDavid du Colombierexit '' 60