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