xref: /plan9/386/bin/usb/usbfat: (revision 906943f9f6b8411972abb5e3a03ed19f74be7ccc)
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