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}