Use the double fork trick to properly reap spawned processes
Pass the actual FIFO path to weprintf()
Allow fifopath to be NULL

In that case we do not use the FIFO at all.
Refactor code

We no longer have two processes, one for reaping children and
another for handling the FIFO.

Use signalfd() to multiplex signal handling and reading from the
FIFO.

This setup will also allow us to capture ctrl-alt-del and to work
with a read-only rootfs.

To create the FIFO, we send a SIGHUP signal to init from our init
scripts.
Don't leak the fifofd if we re-init the fifo
Bump up version to v0.2
Remove FIFO from sinit

We can just run /bin/rc.shutdown reboot|poweroff etc.
It complicates things when rootfs is mounted as ro etc.
Poweroff on SIGUSR1
Some more error checking just to be sure
Don't process incomplete reads

If that can ever happen...
Bump up to v0.3
Update README
We'll get a SIGCHLD so no need to double-fork
Don't nest too much
Close signalfd fd on exec
It was Rich Felker who did the minimal init - give proper credit
signum is unused - get rid of it
*p points to program name
No need for sigfd to be defined at file scope
Bump up to v0.4