hlfw.ca

rc

ref: b83af1b4771da71841bc4f3a94f831d4d16a724e
dir: /altid/

View raw version
#!/bin/rc

rfork ne

svc=()

fn usage {
	echo Usage: $0 [-a host] svc >[1=2]
	exit usage
}


fn sighub {
	unmount /n/$svc
	exit 'hang up'
}

fn sigint sigterm {
	unmount /n/$svc
	exit sig
}

fn work {
	while (cmd=`{read}){
		s=$status
		if(~ $s *eof){
			exit
		}
		switch($cmd(1)) {
		case /tabs
			cat /n/$svc/tabs
		case /quit
			echo quit >/n/$svc/ctrl
			unmount /n/$svc
			exit
		case /buffer*
			msg = `{echo $cmd	| sed 's|/buffer||'}
			echo buffer $msg >/n/$svc/ctrl
			sleep 1
			cat /n/$svc/feed &
		case /join*
			msg = `{echo $cmd | sed 's|/join ||' }
			echo open $msg >/n/$svc/ctrl
			echo buffer $msg >/n/$svc/ctrl
			sleep 1
			cat /n/$svc/feed &
		case *
			echo $cmd >/n/$svc/input
		}
	}
}

host=()
while(~ $1 -*){
	switch($1){
	case -a
		host=$2
		shift
	}
	shift
}

if(~ $#* 0)
	usage

label $1
svc=$1
if(~ $#host 1){
	rm /srv/$svc
	srv tcp!$host $svc
}

mount /srv/$svc /n/$svc

# Initial feed
cat /n/$svc/feed &
work