small fixes atop syslog config patch
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		
							
								
								
									
										28
									
								
								docs/syslog.conf.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/syslog.conf.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
If syslogd applet compiled with FEATURE_SYSLOGD_CFG=y, then it supports restricted syslog.conf.
 | 
			
		||||
The config resembles rsyslog.conf in RULES part:
 | 
			
		||||
 | 
			
		||||
LINE = DELIM [RULE | COMMENT]
 | 
			
		||||
COMMENT = #.*
 | 
			
		||||
DELIM = SPACE TAB
 | 
			
		||||
RULE = SELECTOR [;SELECTOR]* DELIM* ACTION DELIM*
 | 
			
		||||
SELECTOR = FACILITY [,FACILITY]* .[[!]=] PRIORITY
 | 
			
		||||
FACILITY = * | kern | user ... (see syslog.h)
 | 
			
		||||
PRIORITY = * | emerg | alert ... (see syslog.h)
 | 
			
		||||
ACTION = FILE
 | 
			
		||||
 | 
			
		||||
"mark" facility is NOT supported.
 | 
			
		||||
"none" priority is supported.
 | 
			
		||||
In FACILITY and PRIORITY "*" stands for "any".
 | 
			
		||||
FILE is a regular file or tty device.
 | 
			
		||||
 | 
			
		||||
Here is an example:
 | 
			
		||||
 | 
			
		||||
#syslog.conf
 | 
			
		||||
kern,user.*                                 /var/log/messages	#all messages of kern and user facilities
 | 
			
		||||
kern.!err                                   /var/log/critical	#all messages of kern facility with priorities lower than err (warn, notice ...)
 | 
			
		||||
*.*;auth,authpriv.none                      /var/log/noauth	#all messages except ones with auth and authpriv facilities
 | 
			
		||||
kern,user.*;kern.!=notice;*.err;syslog.none /var/log/OMG	#some whicked rule just as an example =)
 | 
			
		||||
*.*                                         /dev/null		#this prevents from logging to default log file (-O FILE or /var/log/messages)
 | 
			
		||||
 | 
			
		||||
Even in the case of match with some rule another rules will be tried too.
 | 
			
		||||
If there was no match with any of the rules, logging to default log file or shared memory will be performed.
 | 
			
		||||
@@ -44,8 +44,12 @@ char* FAST_FUNC bb_get_chunk_with_continuation(FILE *file, int *end, int *lineno
 | 
			
		||||
			idx -= 2;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if (end)
 | 
			
		||||
	if (end) {
 | 
			
		||||
		*end = idx;
 | 
			
		||||
		/* handle corner case when the file is not ended with '\n' */
 | 
			
		||||
		if (ch == EOF && lineno != NULL)
 | 
			
		||||
			(*lineno)++;
 | 
			
		||||
	}
 | 
			
		||||
	if (linebuf) {
 | 
			
		||||
		// huh, does fgets discard prior data on error like this?
 | 
			
		||||
		// I don't think so....
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,7 @@ config FEATURE_SYSLOGD_CFG
 | 
			
		||||
	default y
 | 
			
		||||
	depends on SYSLOGD
 | 
			
		||||
	help
 | 
			
		||||
	  Supports restricted syslogd config.
 | 
			
		||||
	  Supports restricted syslogd config. See docs/syslog.conf.txt
 | 
			
		||||
 | 
			
		||||
config FEATURE_SYSLOGD_READ_BUFFER_SIZE
 | 
			
		||||
	int "Read buffer size in bytes"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,8 @@
 | 
			
		||||
//usage:     "\n	-D		Drop duplicates")
 | 
			
		||||
//usage:	IF_FEATURE_IPC_SYSLOG(
 | 
			
		||||
//usage:     "\n	-C[size(KiB)]	Log to shared mem buffer (read it using logread)")
 | 
			
		||||
//usage:	IF_FEATURE_SYSLOGD_CFG(
 | 
			
		||||
//usage:     "\n	-f FILE		Use FILE as config (default is /etc/syslog.conf)")
 | 
			
		||||
/* NB: -Csize shouldn't have space (because size is optional) */
 | 
			
		||||
/* //usage:  "\n	-m MIN		Minutes between MARK lines (default:20, 0=off)" */
 | 
			
		||||
//usage:
 | 
			
		||||
@@ -284,10 +286,8 @@ static void parse_syslogdcfg(const char *file)
 | 
			
		||||
		logRule_t *cur_rule;
 | 
			
		||||
 | 
			
		||||
		/* unexpected trailing token? */
 | 
			
		||||
		if (tok[2]) {
 | 
			
		||||
			t = tok[2];
 | 
			
		||||
		if (tok[2])
 | 
			
		||||
			goto cfgerr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		cur_rule = *pp_rule = xzalloc(sizeof(*cur_rule));
 | 
			
		||||
 | 
			
		||||
@@ -307,10 +307,8 @@ static void parse_syslogdcfg(const char *file)
 | 
			
		||||
				*next_selector++ = '\0';
 | 
			
		||||
 | 
			
		||||
			t = strchr(cur_selector, '.');
 | 
			
		||||
			if (!t) {
 | 
			
		||||
				t = cur_selector;
 | 
			
		||||
			if (!t)
 | 
			
		||||
				goto cfgerr;
 | 
			
		||||
			}
 | 
			
		||||
			*t++ = '\0'; /* separate facility from priority */
 | 
			
		||||
 | 
			
		||||
			negated_prio = 0;
 | 
			
		||||
@@ -414,7 +412,7 @@ static void parse_syslogdcfg(const char *file)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
 cfgerr:
 | 
			
		||||
	bb_error_msg_and_die("bad line %d: wrong token '%s'", parser->lineno, t);
 | 
			
		||||
	bb_error_msg_and_die("error in '%s' at line %d", file, parser->lineno);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user