master rcsm
 1#!/bin/rc
 2
 3flag e +
 4
 5basedir=/etc/rcsm
 6
 7fn usage {
 8	printf 'Usage: -a|-d|-c|-h|-k|-l|-s|-r\n'
 9}
10
11fn run {
12	switch($#*) {
13		case 1
14			for (serv in $basedir/run/*) {
15				$serv $1 >/dev/null >[2=1] &
16			}
17		case *
18			cmd=$1
19			shift
20			for (serv) {
21				$basedir/avail/$serv $cmd >/dev/null >[2=1] &
22			}
23	}
24}
25
26switch($1) {
27case -a
28	switch($#*) {
29		case 1
30			find $basedir/run -type l
31		case *
32			shift
33			for (serv) {
34				ln -sf $basedir/avail/$serv $basedir/run/
35			}
36	}
37case -c
38	test -d $basedir/run || mkdir -p $basedir/run
39	test -d $basedir/avail || mkdir -p $basedir/avail
40case -d
41	shift
42	for (serv) rm -fr $basedir/run/$serv
43case -h
44	usage
45case -k
46	run $*
47case -l
48	find $basedir/avail -type f
49case -r
50	shift
51	for (serv) {
52		run -k $basedir/run/$serv
53		sleep 1
54		run -s $basedir/run/$serv
55	}
56case -s
57	run $*
58case *
59	printf 'Invalid argument\n'
60	usage && exit 1
61}