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