Просмотр исходного кода

zcip: Add environment variable for overriding log functionality

function                                             old     new   delta
bb_logenv_override                                     -      70     +70
packed_usage                                       29969   30033     +64
zcip_main                                           1426    1431      +5
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/0 up/down: 139/0)             Total: 139 bytes

Signed-off-by: Michel Stam <m.stam@fugro.nl>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Michel Stam 9 лет назад
Родитель
Сommit
d3fabf89d7
5 измененных файлов с 35 добавлено и 0 удалено
  1. 2 0
      docs/logging_and_backgrounding.txt
  2. 1 0
      include/libbb.h
  3. 3 0
      libbb/Kbuild.src
  4. 24 0
      libbb/logenv.c
  5. 5 0
      networking/zcip.c

+ 2 - 0
docs/logging_and_backgrounding.txt

@@ -45,6 +45,8 @@ udhcpc - auto-backgrounds unless -f after lease is obtained,
 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),

+ 1 - 0
include/libbb.h

@@ -1104,6 +1104,7 @@ extern void bb_perror_nomsg_and_die(void) NORETURN FAST_FUNC;
 extern void bb_perror_nomsg(void) FAST_FUNC;
 extern void bb_info_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
 extern void bb_verror_msg(const char *s, va_list p, const char *strerr) FAST_FUNC;
+extern void bb_logenv_override(void) FAST_FUNC;
 
 /* We need to export XXX_main from libbusybox
  * only if we build "individual" binaries

+ 3 - 0
libbb/Kbuild.src

@@ -187,3 +187,6 @@ lib-$(CONFIG_PGREP) += xregcomp.o
 lib-$(CONFIG_PKILL) += xregcomp.o
 lib-$(CONFIG_DEVFSD) += xregcomp.o
 lib-$(CONFIG_FEATURE_FIND_REGEX) += xregcomp.o
+
+# Add the experimental logging functionality, only used by zcip
+lib-$(CONFIG_ZCIP) += logenv.o

+ 24 - 0
libbb/logenv.c

@@ -0,0 +1,24 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Utility routines.
+ *
+ * Copyright (C) 2014 by Fugro Intersite B.V. <m.stam@fugro.nl>
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
+#include "libbb.h"
+
+void FAST_FUNC bb_logenv_override(void)
+{
+	const char* mode = getenv("LOGGING");
+
+	if (!mode)
+		return;
+
+	if (strcmp(mode, "none") == 0)
+		logmode = LOGMODE_NONE;
+#if ENABLE_FEATURE_SYSLOG
+	else if (strcmp(mode, "syslog") == 0)
+		logmode = LOGMODE_SYSLOG;
+#endif
+}

+ 5 - 0
networking/zcip.c

@@ -33,6 +33,9 @@
 //usage:     "\n	-l x.x.0.0	Use this range instead of 169.254"
 //usage:     "\n	-v		Verbose"
 //usage:     "\n"
+//usage:     "\n$LOGGING=none		Suppress logging"
+//usage:     "\n$LOGGING=syslog 	Log to syslog"
+//usage:     "\n"
 //usage:     "\nWith no -q, runs continuously monitoring for ARP conflicts,"
 //usage:     "\nexits only on I/O errors (link down etc)"
 
@@ -249,6 +252,8 @@ int zcip_main(int argc UNUSED_PARAM, char **argv)
 		openlog(applet_name, 0, LOG_DAEMON);
 		logmode |= LOGMODE_SYSLOG;
 	}
+	bb_logenv_override();
+
 	{ // -l n.n.n.n
 		struct in_addr net;
 		if (inet_aton(l_opt, &net) == 0