v0.3 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	cmd=$1
43	shift 1
44	for (serv in $basedir/run/$*) rm -r $serv
45case -h
46	usage
47case -k
48	run $*
49case -l
50	find $basedir/avail -type f
51case -r
52	shift 1
53	for (serv in $*) {
54		run -k $serv
55		sleep 1
56		run -s $serv
57	}
58case -s
59	run $*
60case *
61	printf 'Invalid argument\n'
62	usage && exit 1
63}