[git commit] libbb: make syslog level for bb_error_msg's configurable. use it in crond

Denys Vlasenko vda.linux at googlemail.com
Wed Apr 30 12:48:28 UTC 2014


commit: http://git.busybox.net/busybox/commit/?id=3dfe0ae5a8c4f3a75f61df157db157ac0e044a51
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
bb_verror_msg                                        380     386      +6
syslog_level                                           -       1      +1
crondlog                                             165     108     -57

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 include/libbb.h    |    1 +
 libbb/verror_msg.c |    3 ++-
 miscutils/crond.c  |   23 ++++++++---------------
 3 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/include/libbb.h b/include/libbb.h
index 1cbe2c8..29cf6bc 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1074,6 +1074,7 @@ enum {
 	LOGMODE_BOTH = LOGMODE_SYSLOG + LOGMODE_STDIO,
 };
 extern const char *msg_eol;
+extern smallint syslog_level;
 extern smallint logmode;
 extern int die_sleep;
 extern uint8_t xfunc_error_retval;
diff --git a/libbb/verror_msg.c b/libbb/verror_msg.c
index ee95be3..87efb56 100644
--- a/libbb/verror_msg.c
+++ b/libbb/verror_msg.c
@@ -11,6 +11,7 @@
 # include <syslog.h>
 #endif
 
+smallint syslog_level = LOG_ERR;
 smallint logmode = LOGMODE_STDIO;
 const char *msg_eol = "\n";
 
@@ -70,7 +71,7 @@ void FAST_FUNC bb_verror_msg(const char *s, va_list p, const char* strerr)
 	}
 #if ENABLE_FEATURE_SYSLOG
 	if (logmode & LOGMODE_SYSLOG) {
-		syslog(LOG_ERR, "%s", msg + applet_len);
+		syslog(syslog_level, "%s", msg + applet_len);
 	}
 #endif
 	free(msg);
diff --git a/miscutils/crond.c b/miscutils/crond.c
index 995ed9e..8441b6c 100644
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -163,28 +163,21 @@ static void crondlog(const char *ctl, ...) __attribute__ ((format (printf, 1, 2)
 static void crondlog(const char *ctl, ...)
 {
 	va_list va;
-	int level = (ctl[0] & 0x1f);
+	unsigned level = (ctl[0] & 0x1f);
 
 	va_start(va, ctl);
-	if (level >= (int)G.log_level) {
-		/* Debug mode: all to (non-redirected) stderr, */
-		/* Syslog mode: all to syslog (logmode = LOGMODE_SYSLOG), */
-		if (!DebugOpt && G.log_filename) {
-			/* Otherwise (log to file): we reopen log file at every write: */
+	if (level >= G.log_level) {
+		if (G.log_filename) {
+			/* If log to file, reopen log file at every write: */
 			int logfd = open_or_warn(G.log_filename, O_WRONLY | O_CREAT | O_APPEND);
 			if (logfd >= 0)
 				xmove_fd(logfd, STDERR_FILENO);
 		}
 		/* When we log to syslog, level > 8 is logged at LOG_ERR
-		 * syslog level, level <= 8 is logged at LOG_INFO. */
-		if (level > 8) {
-			bb_verror_msg(ctl + 1, va, /* strerr: */ NULL);
-		} else {
-			char *msg = NULL;
-			vasprintf(&msg, ctl + 1, va);
-			bb_info_msg("%s: %s", applet_name, msg);
-			free(msg);
-		}
+		 * syslog level, level <= 8 is logged at LOG_INFO.
+		 */
+		syslog_level = (level > 8) ? LOG_ERR : LOG_INFO;
+		bb_verror_msg(ctl + 1, va, /* strerr: */ NULL);
 	}
 	va_end(va);
 	if (ctl[0] & 0x80)


More information about the busybox-cvs mailing list