logd: fix internal buffer size
authorJohn Crispin <blogic@openwrt.org>
Wed, 12 Mar 2014 07:00:11 +0000 (07:00 +0000)
committerJohn Crispin <blogic@openwrt.org>
Wed, 12 Mar 2014 07:00:11 +0000 (07:00 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
log/logd.c
log/syslog.c
log/syslog.h

index 5dd9932..e4f9b3f 100644 (file)
@@ -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();
index fcc4a74..4cabb43 100644 (file)
@@ -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);
 
index dc712ff..b682ced 100644 (file)
@@ -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);