From dee0eafbf7de74b45f90631b7c807395e0a0bc4b Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sun, 19 Jan 2014 18:32:58 +0000 Subject: [PATCH] logd: allow setting the buffer size from the command line Signed-off-by: John Crispin --- log/logd.c | 15 ++++++++++++++- log/syslog.c | 5 ++++- log/syslog.h | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/log/logd.c b/log/logd.c index 978d7d1..cbaf219 100644 --- a/log/logd.c +++ b/log/logd.c @@ -13,6 +13,7 @@ #include #include +#include #include @@ -169,12 +170,24 @@ ubus_connect_cb(struct uloop_timeout *timeout) int main(int argc, char **argv) { + int ch, log_size = 0; + signal(SIGPIPE, SIG_IGN); + while ((ch = getopt(argc, argv, "S:")) != -1) { + switch (ch) { + case 'S': + log_size = atoi(optarg); + if (log_size < 1) + log_size = 1; + log_size *= 1024; + break; + } + } uloop_init(); ubus_timer.cb = ubus_connect_cb; uloop_timeout_set(&ubus_timer, 1000); - log_init(); + log_init(log_size); uloop_run(); if (_ctx) ubus_free(_ctx); diff --git a/log/syslog.c b/log/syslog.c index fcc4a74..4cabb43 100644 --- a/log/syslog.c +++ b/log/syslog.c @@ -274,8 +274,11 @@ log_buffer_init(int size) } void -log_init(void) +log_init(int _log_size) { + if (_log_size > 0) + log_size = _log_size; + regcomp(&pat_prio, "^<([0-9]*)>(.*)", REG_EXTENDED); regcomp(&pat_tstamp, "^\[[ 0]*([0-9]*).([0-9]*)] (.*)", REG_EXTENDED); diff --git a/log/syslog.h b/log/syslog.h index dc712ff..b682ced 100644 --- a/log/syslog.h +++ b/log/syslog.h @@ -30,7 +30,7 @@ struct log_head { char data[]; }; -void log_init(void); +void log_init(int log_size); void log_shutdown(void); typedef void (*log_list_cb)(struct log_head *h); -- 2.25.1