summaryrefslogtreecommitdiff
path: root/log
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2014-03-12 07:00:11 +0000
committerJohn Crispin <blogic@openwrt.org>2014-03-12 07:00:11 +0000
commitc8d14b9b5d0fa3a3f99df386b67670e083c82095 (patch)
tree8864182afc33aa1732cfcb4e1ce9e3b3990775bf /log
parent3587778a620ae3ee50a3262cbed941344db3d4db (diff)
downloadubox-c8d14b9b5d0fa3a3f99df386b67670e083c82095.tar.gz
logd: fix internal buffer size
Signed-off-by: John Crispin <blogic@openwrt.org>
Diffstat (limited to 'log')
-rw-r--r--log/logd.c15
-rw-r--r--log/syslog.c5
-rw-r--r--log/syslog.h2
3 files changed, 19 insertions, 3 deletions
diff --git a/log/logd.c b/log/logd.c
index 5dd9932..e4f9b3f 100644
--- a/log/logd.c
+++ b/log/logd.c
@@ -14,6 +14,7 @@
#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
+#include <unistd.h>
#include <linux/types.h>
@@ -172,10 +173,22 @@ ubus_connect_handler(struct ubus_context *ctx)
int
main(int argc, char **argv)
{
+ int ch, log_size = 16;
+
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 = 16;
+ break;
+ }
+ }
+ log_size *= 1024;
uloop_init();
- log_init();
+ log_init(log_size);
conn.cb = ubus_connect_handler;
ubus_auto_connect(&conn);
uloop_run();
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);