shithub: riscv

ref: 4a916ba86e700d5e99311b45a81dc7be8a50b843
dir: /rc/bin/9fs/

View raw version
#!/bin/rc
# 9fs filesystem [mountpoint] - srv & mount filesystem, usually from plan 9

rfork e
switch($1){
case ''
	echo usage: 9fs service '[mountpoint]' >[1=2]
	exit usage
case 9fat esp pidos dos
	if(~ $#2 1)
		part=`{ls $2 >[2]/dev/null}
	if not if(~ $1 pidos)
		part=`{ls /dev/sdM*/dos >[2]/dev/null}
	if not
		part=`{ls /dev/fs/$1 /dev/sd*/$1 >[2]/dev/null}
	if(~ $#part 0) {
		echo 'no '$1' partition found' >[1=2]
		exit no.$1
	}
	part=$part(1)
	
	if(! test -f /srv/dos)
		dossrv >/dev/null </dev/null >[2]/dev/null
	
	unmount /n/$1 >/dev/null >[2]/dev/null
	mount -c /srv/dos /n/$1 $part
	if(~ $1 9fat){
		unmount /n/9 >/dev/null >[2]/dev/null
		mount -c /srv/dos /n/9 $part
	}
case kfs
	if(! test -f /srv/kfs)
		disk/kfs
	mount -c /srv/kfs /n/kfs
case dump
	mount /srv/boot /n/dump dump >[2]/dev/null ||
		mount /srv/boot /n/dump main/archive ||
		mount /srv/boot /n/dump dump	# again to print error
case snap
	mount /srv/boot /n/snap main/snapshot
case other
	mount -C /srv/boot /n/other other
case juke					# ye olde file server
	srv -q il!jukefs && mount /srv/il!jukefs /n/juke
case sources
	srv -nqC tcp!sources.cs.bell-labs.com sources /n/sources
case sourcesdump
	9fs sources
	mount -nC /srv/sources /n/sourcesdump main/archive
case sourcessnap
	9fs sources
	mount -nC /srv/sources /n/sourcessnap main/snapshot
case atom
	srv -nq tcp!atom.9atom.org atom && mount -nC /srv/atom /n/atom atom
case atomdump
	9fs atom && mount -nC /srv/atom /n/atomdump atomdump
# arbitrary venti archives
case vac:*
	vacfs <{echo $1}
case *.vac
	if (test -e $1)
		score=$1
	if not if (! ~ $1 /* && test -e $home/lib/vac/$1)
		score=$home/lib/vac/$1
	if not if (! ~ $1 /* && test -e /lib/vac/$1)
		score=/lib/vac/$1
	if not {
		echo $0: $1: no such score file >[1=2]
		exit 'no score file'
	}
	vacfs -m /n/`{basename $1 .vac} `{cat $score}
case wiki
	srv -m 'net!plan9.bell-labs.com!wiki' wiki /mnt/wiki
case *
	switch($#*){
	case 1
		srv -m $1
	case *
		srv -m $1 $1 $2
	}
}