1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/bin/rc
- # usbfat: [disk [mtpt]] - mount a USB disk's MS FAT file system,
- # which might be the only thing on the disk, or might be
- # a partition within the disk.
- 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(~ `{ls /n/usb >[2]/dev/null | wc -l} 0)
- mount /srv/usb /n/usb >[2]/dev/null
- if (~ $#disks 0){
- disks = /dev/sdU*/data
- if(! test -e $disks(1)){
- echo no usb disks >[1=2]
- exit nodisk
- }
- disks = (/dev/sdU*/9fat /dev/sdXX/9fat /dev/sdU*/data /dev/sdXX/data)
- }
- for(d in $disks){
- if(! ~ $done yes) {
- if(~ $d sdU*.[0-9]* sdXX*)
- d=/dev/$d/data
- if(test -e $d){
- name=`{echo $d | sed 's/.*(sd(XX|U[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/* && 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
- if (mount -c <{dossrv -sf $d >[2]/dev/null} $mnt) {
- echo $mnt
- done = yes
- }
- }
- }
- }
- }
- exit ''
|