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