xref: /plan9/rc/bin/usbeject (revision 671dfc474d1a5bcbeda8be1356d2abfa05b91489)
1*671dfc47SDavid du Colombier#!/bin/rc
2*671dfc47SDavid du Colombier# usbeject - unmount usb disks given as arguments
3*671dfc47SDavid du Colombier#	unmount all of them if no arguments given
4*671dfc47SDavid du Colombierrfork e
5*671dfc47SDavid du Colombierdisk = ()
6*671dfc47SDavid du Colombiermtpt = /n/usb
7*671dfc47SDavid du Colombier
8*671dfc47SDavid du Colombiertest -e /dev/fs/ctl || bind -b '#k' /dev >[2]/dev/null
9*671dfc47SDavid du Colombier
10*671dfc47SDavid du Colombiertest -e /dev/usb || bind -a '#u' /dev || {
11*671dfc47SDavid du Colombier	echo $0: no '#u/usb' >[1=2]
12*671dfc47SDavid du Colombier	exit nousb
13*671dfc47SDavid du Colombier}
14*671dfc47SDavid du Colombiertest -e /dev/usbdctl || mount -a /srv/usb /dev || {
15*671dfc47SDavid du Colombier	echo $0: cannot mount /srv/usb >[1=2]
16*671dfc47SDavid du Colombier	exit nousbd
17*671dfc47SDavid du Colombier}
18*671dfc47SDavid du Colombier
19*671dfc47SDavid du Colombierdisks=()
20*671dfc47SDavid du Colombiermtpt=()
21*671dfc47SDavid du Colombierswitch ($#*) {
22*671dfc47SDavid du Colombiercase 0
23*671dfc47SDavid du Colombier	disks=`{ls -pd /n/sdU*}
24*671dfc47SDavid du Colombiercase *
25*671dfc47SDavid du Colombier	disks=()
26*671dfc47SDavid du Colombier	for (a) {
27*671dfc47SDavid du Colombier		if(~ $a sd??)
28*671dfc47SDavid du Colombier			disk=`{ls -pd /n/^$*^*}
29*671dfc47SDavid du Colombier		if not
30*671dfc47SDavid du Colombier			disk=$a
31*671dfc47SDavid du Colombier		disks=($disks $disk)
32*671dfc47SDavid du Colombier	}
33*671dfc47SDavid du Colombier}
34*671dfc47SDavid du Colombierif (~ $disks '''sdU*''')
35*671dfc47SDavid du Colombier	exit ''
36*671dfc47SDavid du Colombierfor (disk in $disks) {
37*671dfc47SDavid du Colombier	unmount /n/$disk >[2]/dev/null && echo $disk unmounted
38*671dfc47SDavid du Colombier	if (test -e /dev/fs/ctl)
39*671dfc47SDavid du Colombier		echo del $disk^parts/^'*' >/dev/fs/ctl >[2]/dev/null
40*671dfc47SDavid du Colombier}
41*671dfc47SDavid du Colombierexit ''
42