syslogd: add option to suppress logging of messages lower than level N (-n N)
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 9a5a04a..a257e74 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -42,6 +42,9 @@
 /* interval between marks in seconds */
 static int MarkInterval = 20 * 60;
 
+/* level of messages to be locally logged */
+static int logLevel = 8;
+
 /* localhost's name */
 static char LocalHostName[64];
 
@@ -413,10 +416,12 @@
 #endif
 	{
 		/* now spew out the message to wherever it is supposed to go */
-		if (opts & SYSLOG_OPT_small)
-			message("%s %s\n", timestamp, msg);
-		else
-			message("%s %s %s %s\n", timestamp, LocalHostName, res, msg);
+		if (pri == 0 || LOG_PRI(pri) < logLevel) {
+			if (opts & SYSLOG_OPT_small)
+				message("%s %s\n", timestamp, msg);
+			else
+				message("%s %s %s %s\n", timestamp, LocalHostName, res, msg);
+		}
 	}
 }
 
@@ -581,6 +586,13 @@
 		case 'O':
 			logFilePath = optarg;
 			break;
+		case 'l':
+			logLevel = atoi(optarg);
+			/* Valid levels are between 1 and 8 */
+			if (logLevel < 1 || logLevel > 8) {
+				bb_show_usage();
+			}
+			break;
 #ifdef CONFIG_FEATURE_ROTATE_LOGFILE
 		case 's':
 			logFileSize = atoi(optarg) * 1024;