Add CONFIG_FEATURE_SYSLOG which controls whether
bb_xx_msg will ever try to send output to syslog.
Add "select CONFIG_FEATURE_SYSLOG" to relevant applets.
This allows to omit syslog code if we do not have
any syslog-capable applets in the build.

diff --git a/Config.in b/Config.in
index e6acf49..d8f77ad 100644
--- a/Config.in
+++ b/Config.in
@@ -150,6 +150,13 @@
 	  are login, passwd, su, ping, traceroute, crontab, dnsd, ipcrm, ipcs,
 	  and vlock.
 
+config CONFIG_FEATURE_SYSLOG
+	bool "Support for syslog"
+	default n
+	help
+	  This option is auto-selected when you select any applet which may
+	  send its output to syslog. You do not need to select it manually.
+
 config CONFIG_FEATURE_SUID_CONFIG
 	bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
 	default n if CONFIG_FEATURE_SUID
diff --git a/init/Config.in b/init/Config.in
index 8b91791..2a39d50 100644
--- a/init/Config.in
+++ b/init/Config.in
@@ -8,6 +8,7 @@
 config CONFIG_INIT
 	bool "init"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  init is the first program run when the system boots.
 
diff --git a/libbb/verror_msg.c b/libbb/verror_msg.c
index 237547d..be206e4 100644
--- a/libbb/verror_msg.c
+++ b/libbb/verror_msg.c
@@ -32,7 +32,7 @@
 		else
 			fprintf(stderr, ": %s\n", strerr);
 	}
-	if (logmode & LOGMODE_SYSLOG) {
+	if (ENABLE_FEATURE_SYSLOG & (logmode & LOGMODE_SYSLOG)) {
 		if (!strerr)
 			vsyslog(LOG_ERR, s, p2);
 		else  {
diff --git a/libbb/vinfo_msg.c b/libbb/vinfo_msg.c
index e8776e5..84825bc 100644
--- a/libbb/vinfo_msg.c
+++ b/libbb/vinfo_msg.c
@@ -24,7 +24,7 @@
 		vprintf(s, p);
 		putchar('\n');
 	}
-	if (logmode & LOGMODE_SYSLOG)
+	if (ENABLE_FEATURE_SYSLOG & (logmode & LOGMODE_SYSLOG))
 		vsyslog(LOG_INFO, s, p2);
 	va_end(p2);
 }
diff --git a/loginutils/Config.in b/loginutils/Config.in
index 9926551..71e0a3a 100644
--- a/loginutils/Config.in
+++ b/loginutils/Config.in
@@ -80,6 +80,7 @@
 config CONFIG_GETTY
 	bool "getty"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  getty lets you log in on a tty, it is normally invoked by init.
 
@@ -103,6 +104,7 @@
 	bool "login"
 	default n
 	select CONFIG_FEATURE_SUID
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  login is used when signing onto a system.
 
@@ -122,6 +124,7 @@
 	bool "passwd"
 	default n
 	select CONFIG_FEATURE_SUID
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  passwd changes passwords for user and group accounts.  A normal user
 	  may only change the password for his/her own account, the super user
@@ -135,6 +138,7 @@
 	bool "su"
 	default n
 	select CONFIG_FEATURE_SUID
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  su is used to become another user during a login session.
 	  Invoked without a username, su defaults to becoming the super user.
@@ -152,6 +156,7 @@
 config CONFIG_SULOGIN
 	bool "sulogin"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  sulogin is invoked when the system goes into single user
 	  mode (this is done through an entry in inittab).
diff --git a/miscutils/Config.in b/miscutils/Config.in
index 9ad3421..dc3da6f 100644
--- a/miscutils/Config.in
+++ b/miscutils/Config.in
@@ -23,6 +23,7 @@
 	bool "crond"
 	default n
 	select CONFIG_FEATURE_SUID
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  Crond is a background daemon that parses individual crontab
 	  files and executes commands on behalf of the users in question.
@@ -66,6 +67,7 @@
 config CONFIG_DEVFSD
 	bool "devfsd (obsolete)"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  This is deprecated, and will be removed at the end of 2008.
 
diff --git a/networking/Config.in b/networking/Config.in
index e5eb11c..2dff021 100644
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -33,6 +33,7 @@
 config CONFIG_FAKEIDENTD
 	bool "fakeidentd"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  fakeidentd listens on the ident port and returns a predefined
 	  fake value on any query.
@@ -288,6 +289,7 @@
 config CONFIG_INETD
 	bool "inetd"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  Internet superserver daemon
 
@@ -428,6 +430,7 @@
 config CONFIG_NAMEIF
 	bool "nameif"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  nameif is used to rename network interface by its MAC address.
 	  Renamed interfaces MUST be in the down state.
@@ -539,6 +542,7 @@
 config CONFIG_TELNETD
 	bool "telnetd"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  A daemon for the TELNET protocol, allowing you to log onto the host
 	  running the daemon.  Please keep in mind that the TELNET protocol
@@ -701,6 +705,7 @@
 config CONFIG_ZCIP
 	bool "zcip"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.
 	  It's a daemon that allocates and defends a dynamically assigned
diff --git a/networking/udhcp/Config.in b/networking/udhcp/Config.in
index 01b2902..7732937 100644
--- a/networking/udhcp/Config.in
+++ b/networking/udhcp/Config.in
@@ -6,6 +6,7 @@
 config CONFIG_APP_UDHCPD
 	bool "udhcp Server (udhcpd)"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  uDHCPd is a DHCP server geared primarily toward embedded systems,
 	  while striving to be fully functional and RFC compliant.
@@ -26,6 +27,7 @@
 config CONFIG_APP_UDHCPC
 	bool "udhcp Client (udhcpc)"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  uDHCPc is a DHCP client geared primarily toward embedded systems,
 	  while striving to be fully functional and RFC compliant.
@@ -35,16 +37,6 @@
 
 	  See http://udhcp.busybox.net for further details.
 
-config CONFIG_FEATURE_UDHCP_SYSLOG
-	bool "Log udhcp messages to syslog (instead of stdout)"
-	default n
-	depends on CONFIG_APP_UDHCPD || CONFIG_APP_UDHCPC
-	help
-	  If selected, udhcpd will log all its messages to syslog, otherwise,
-	  it will attempt to log them to stdout.
-
-	  See http://udhcp.busybox.net for further details.
-
 config CONFIG_FEATURE_UDHCP_DEBUG
 	bool "Compile udhcp with noisy debugging messages"
 	default n
diff --git a/sysklogd/Config.in b/sysklogd/Config.in
index 05983b6..3993152 100644
--- a/sysklogd/Config.in
+++ b/sysklogd/Config.in
@@ -89,6 +89,7 @@
 	bool "klogd"
 	default n
 	depends on CONFIG_SYSLOGD
+	select CONFIG_FEATURE_SYSLOG
 	help
 	  klogd is a utility which intercepts and logs all
 	  messages from the Linux kernel and sends the messages
@@ -99,6 +100,7 @@
 config CONFIG_LOGGER
 	bool "logger"
 	default n
+	select CONFIG_FEATURE_SYSLOG
 	help
 	    The logger utility allows you to send arbitrary text
 	    messages to the system log (i.e. the 'syslogd' utility) so