This is the first release of `runset'.  It's a special script language 
built purely for managing groups of processes (runsets), with inetd/crond 
capability.  Supporting tools are provided so it may be used as an 
`init' daemon.

I've used this program on my own system for some time without needing to
make changes, so it's fairly stable (but remember kids, NO WARRANTIES!). 
However, many some expected features are not implemented, and the
documentation (including this file) is in an atrocius state. :-)

The program uses `autoconf' because I used `automake'. However, it is not 
really portable at the moment. (Presently it includes linux-specific 
support for filesystem and swapspace mounting. Also, the `init' program 
is totally Linux-specific.) 

It *requires* GNU C. It relies heavily upon nested functions to minimize
memory allocation hassles. 

You should probably avoid "make install" and install manually, since you 
will probably want to place some of the programs on the root partition, 
and automake doesn't know about setuid code. `request' (only) should be 
setuid root.

Many older versions of Linux (prior to 2.0.36) have a defect in the net
system that causes TCP connections to jam up. The problem is that SIGIO
signals for a listening socket are sent fractions of a second too early.  
I do not know when (or if) the bug was fixed in 2.1/2.2.

It causes trouble because `runset' is signal-driven. A kludge I used to
make it work sort-of okay before Linux was corrected can be uncommented in
runset/main.c. 

One other note: `init', `runset' and `switch' all use the LOG_CRON 
logging channel.  This felt appropriate since runset replaces crond, as 
well as inetd and init.

---- Michael Deutschmann <michael@talamasca.wkpowerlink.com>
