Implement optional syslog logging using ordinary
bb_xx_msg calls, and convert networking/* to it.
The rest of bbox will be converted gradually.

diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
index c2025e5..1ae65f7 100644
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -19,6 +19,7 @@
 #include <paths.h>
 #include <sys/socket.h>
 #include <stdarg.h>
+#include <syslog.h>
 
 #include "common.h"
 #include "pidfile.h"
@@ -33,7 +34,6 @@
 	return info.uptime;
 }
 
-
 /*
  * This function makes sure our first socket calls
  * aren't going to fd 1 (printf badness...) and are
@@ -41,77 +41,32 @@
  */
 static inline void sanitize_fds(void)
 {
-	int zero;
-	if ((zero = open(bb_dev_null, O_RDWR, 0)) < 0)
+	int fd = open(bb_dev_null, O_RDWR, 0);
+	if (fd < 0)
 		return;
-	while (zero < 3)
-		zero = dup(zero);
-	close(zero);
+	while (fd < 3)
+		fd = dup(fd);
+	close(fd);
 }
 
 
 void udhcp_background(const char *pidfile)
 {
 #ifdef __uClinux__
-	LOG(LOG_ERR, "Cannot background in uclinux (yet)");
+	bb_error_msg("Cannot background in uclinux (yet)");
 #else /* __uClinux__ */
 	int pid_fd;
 
 	/* hold lock during fork. */
 	pid_fd = pidfile_acquire(pidfile);
+	setsid();
 	xdaemon(0, 0);
 	daemonized++;
+	logmode &= ~LOGMODE_STDIO;
 	pidfile_write_release(pid_fd);
 #endif /* __uClinux__ */
 }
 
-
-#ifdef CONFIG_FEATURE_UDHCP_SYSLOG
-
-void udhcp_logging(int level, const char *fmt, ...)
-{
-	va_list p;
-	va_list p2;
-
-	va_start(p, fmt);
-	__va_copy(p2, p);
-	if (!daemonized) {
-		vprintf(fmt, p);
-		putchar('\n');
-	}
-	vsyslog(level, fmt, p2);
-	va_end(p);
-}
-
-#else
-
-
-static char *syslog_level_msg[] = {
-	[LOG_EMERG]   = "EMERGENCY!",
-	[LOG_ALERT]   = "ALERT!",
-	[LOG_CRIT]    = "critical!",
-	[LOG_WARNING] = "warning",
-	[LOG_ERR]     = "error",
-	[LOG_INFO]    = "info",
-	[LOG_DEBUG]   = "debug"
-};
-
-
-void udhcp_logging(int level, const char *fmt, ...)
-{
-	va_list p;
-
-	va_start(p, fmt);
-	if (!daemonized) {
-		printf("%s, ", syslog_level_msg[level]);
-		vprintf(fmt, p);
-		putchar('\n');
-	}
-	va_end(p);
-}
-#endif
-
-
 void udhcp_start_log_and_pid(const char *client_server, const char *pidfile)
 {
 	int pid_fd;
@@ -126,8 +81,10 @@
 	/* equivelent of doing a fflush after every \n */
 	setlinebuf(stdout);
 
-	if (ENABLE_FEATURE_UDHCP_SYSLOG)
-		openlog(client_server, LOG_PID | LOG_CONS, LOG_LOCAL0);
+	if (ENABLE_FEATURE_UDHCP_SYSLOG) {
+		openlog(client_server, LOG_PID, LOG_LOCAL0);
+		logmode |= LOGMODE_SYSLOG;
+	}
 
-	udhcp_logging(LOG_INFO, "%s (v%s) started", client_server, BB_VER);
+	bb_info_msg("%s (v%s) started", client_server, BB_VER);
 }