	Logging and backgrounding

By default, bb_[p]error_msg[_and_die] messages go to stderr,
and of course, usually applets do not auto-background. :)

Historically, daemons and inetd services are different.

Busybox is trying to provide compatible behavior, thus if an applet
is emulating an existing utility, it should mimic it. If utility
auto-backgrounds itself, busybox applet should do the same.
If utility normally logs to syslog, busybox applet should do
the same too.

However, busybox should not needlessly restrict the freedom
of the users. And users have different needs and different preferences.
Some might like logging everything from daemons to syslog.
Others prefer running stuff under runsv/svlogd and thus would like
logging to stderr and no daemonization.

To help with that, busybox applets should have options to override
default behavior, whatever that is for a given applet.


Current situation is a bit of a mess:

acpid - auto-backgrounds unless -d
crond - auto-backgrounds unless -f, logs to syslog unless -d or -L.
    option -d logs to stderr, -L FILE logs to FILE
devfsd - (obsolete)
dnsd - option -d makes it background and log to syslog
fakeidentd - inetd service. Auto-backgrounds and logs to syslog
    if no -f and no -i and no -w (-i is "inetd service" flag,
    -w is "inetd-wait service" flag)
ftpd - inetd service. Logs to syslog with -S, with -v logs to strerr too
httpd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
inetd - auto-backgrounds unless -f, logs to syslog unless -e
klogd - auto-backgrounds unless -n
syslogd - auto-backgrounds unless -n
telnetd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
udhcpc - auto-backgrounds unless -f after lease is obtained,
    option -b makes it background sooner (when lease attempt
    fails and retries start),
    after backgrounding it stops logging to stderr;
    logs to stderr, but option -S makes it log *also* to syslog
udhcpd - auto-backgrounds and do not log to stderr unless -f,
    otherwise logs to stderr, but option -S makes it log *also* to syslog
zcip - auto-backgrounds and logs *also* to syslog unless -f
    behaviour can be overridden with experimental LOGGING env.var
    (can be set to either "none" or "syslog")

Total: 13 applets (+1 obsolete),
 4 log to syslog by default (crond fakeidentd inetd zcip),
 5 never log to syslog (acpid httpd telnetd klogd syslogd, last two
 - for obviously correct reasons),
 there are no daemons which always log to syslog,
 12 auto-background if not run as inetd services (all except dnsd.
 Note that there is no "standard" dnsd AFAIKS). But see below
 for daemons (tcpsvd etc) which don't auto-background.

miscutils/crond.c:            logmode = LOGMODE_SYSLOG;
networking/dnsd.c:            logmode = LOGMODE_SYSLOG;
networking/ftpd.c:            logmode = LOGMODE_NONE;
networking/ftpd.c:            logmode |= LOGMODE_SYSLOG;
networking/inetd.c:           logmode = LOGMODE_SYSLOG;
networking/isrv_identd.c:     logmode = LOGMODE_SYSLOG;
networking/telnetd.c:         logmode = LOGMODE_SYSLOG;
networking/udhcp/dhcpc.c:     logmode = LOGMODE_NONE;
networking/udhcp/dhcpc.c:     logmode |= LOGMODE_SYSLOG;
networking/udhcp/dhcpc.c:     logmode &= ~LOGMODE_STDIO;
networking/udhcp/dhcpd.c:     logmode = LOGMODE_NONE;
networking/udhcp/dhcpd.c:     logmode |= LOGMODE_SYSLOG;
networking/zcip.c:            logmode |= LOGMODE_SYSLOG;


These daemons never auto-background and never log to syslog:

lpd - inetd service. Has nothing to log so far, though
dhcprelay - standard behavior
inotifyd - standard behavior
runsv - standard behavior
runsvdir - standard behavior
svlogd - standard behavior
tcpsvd, udpsvd - standard behavior
tftpd - standard behavior


Non-daemons (seems to be use syslog for a good reason):

networking/nameif.c:          logmode |= LOGMODE_SYSLOG;
loginutils/chpasswd.c:        logmode = LOGMODE_BOTH;
loginutils/chpasswd.c:        logmode = LOGMODE_STDIO;
loginutils/getty.c:           logmode = LOGMODE_BOTH;
loginutils/getty.c:           logmode = LOGMODE_NONE;
loginutils/passwd.c:          logmode = LOGMODE_STDIO;
loginutils/passwd.c:          logmode = LOGMODE_BOTH;
loginutils/sulogin.c:         logmode = LOGMODE_SYSLOG; (used if stdio isn't a tty)
loginutils/sulogin.c:         logmode = LOGMODE_BOTH;
util-linux/mount.c:           logmode = LOGMODE_SYSLOG; (used in a backgrounded NFS mount helper)
