- change client handler (SIGCHILD!) code
- perhaps use dnotify?
- recheck warm reboot
- fix cservice
- print service name or cinit: before _everything_ WE print

TESTING:
   - does cinit eat zombies?
   - is the reporting ok?
   - does cservice and ccontrol what's expected?

# cinit.create.empty.service: can only be started from the bin directory

- compile cinit static and other tools dynamically per default

- Fix Switching services off !!
- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which
  services failed?
 --> sequentieller ablauf!
 --> parallel ablauf, struct-array mit namen und ergebnis?
 --> for dep in deps/*; do fork(run_svc() ); done
 -----> while(any_is_running) { sleep }
 -------> array durchsuchen, ergebnis nutzen.
 - ueberpruefen von wo aus run_svc() aufgerufen wird

- Fix SIGCHILD problem:
   - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems
   - respawn_svc: does that need to act on SIGCHLD if the master process
   is still running?
   - kill respawn -> sigchild cleans up, we do not get waitpid perhaps?
- remove umount code?
- remove zombies, but keep away from SIGCHILD problems
- remove mount /etc/cinit/tmp code
   -> how to replace?
- fix bug in Makefile: linking happens twice
- do not kill respawing service, if off exists
- ccontrol
- manpages
- Error codes when shutting down a service?
- Delay dokumentieren
- no_kill dokumentieren
- ddoc zuendefuehren

- remove umount, swapoff?
--> to services?

- on.out, on.err, on.in?
   -> reading/writing from/to files

--> Wenn kein ReSPAWN und der Prozess beendet sich nicht,
    dann haengt init!
- implement "no_kill" until cinit-0.2 or 0.3?

Doku!!!

--------------------------------------------------------------------------------
- Source Logic issues
   - remove FIXME entries (and what should be fixed, too)
   - memset for timespecs?
   - move umount, swapoff and remount to off of init?
      -> cleanup sig_reboot.c
   - run_svc:
      o we have many strcat()s, perhaps save length of pathbuf and strncat at
         pathtmp[strlen(pathbuf)] ?
   - do we really need swapoff?
--------------------------------------------------------------------------------
- Documentation
   - Write manpages (use doc/* as base for that)
   - Check Spell and Grammar in documentation
   - write howto:
      o Howto-cinit
      o Howto-cinit-uml
--------------------------------------------------------------------------------
Things I did not do and I don't know whether we have to care about:

- Porting
   - add porting code to other unices?
   - like openssh guys do?

- close(*>2) before forking / executing
   -> close fds, clean environment, etc., ...
   -> do we really need that?
- logging service!
   -> write output $somewhere, wait for syslog?
   -> flush at the end of start-process?
   -> perhaps pipe logging output to a program?
--------------------------------------------------------------------------------
[OLD BUGS]
- remove cinit watcher?
   -> sig_child -> cycle through list?
- DOKU: what happens when a service does not terminate....
   und er als once drin ist
- MANPAGE!
- execve() fails -> no sleep!!
- multiple zombies sometimes - problemservices
   -> zombies of respawn watchers are not caught!
   -> sig_chld also therein
   -> problematic due to wait for child
-doubled cinit instance
   - nur einmal
- free() everything before starting child
- cservice!
   - prozess nur einmal -> WARTET! cinit auch!
doku:
  cservice einmal starten -> wartet auf ende
  cint ersetzt init bei gentoo
  an error occuerd-> verbose
  multuicall probleme -> busysbox --> GIBT ES NICHT!!
  ---> DOKU DAZU! mit links, doppelt links, aus test
  ---> erklaeren, dass es unproblematisch ist!

11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet 
                  werden konnte. 
11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 
                  zurueckgeworfen. 
11:09 < folken23> telmich: oder service allready started. 
