v0.2 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 1
20			for (serv in $basedir/avail/$*) {
21				$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			cmd=$1
33			shift 1
34			for (serv in $basedir/avail/$*) {
35				ln -sf $serv $basedir/run/
36			}
37	}
38case -c
39	test -d $basedir/run || mkdir -p $basedir/run
40	test -d $basedir/avail || mkdir -p $basedir/avail
41case -d
42	rm -f $basedir/run/$2
43case -h
44	usage
45case -k
46	run $*
47case -l
48	find $basedir/avail -type f
49case -r
50	run -k $2
51	run -s $2
52case -s
53	run $*
54case *
55	printf 'Invalid argument\n'
56	usage && exit 1
57}