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 5dd993298c680e76fd6ed8c1ca5c140cda4cb789..e4f9b3f895e43411459260ad35d9fa53a99003e1 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 fcc4a74f906a026796a87ed6254c7d1fb14a62bd..4cabb434a0ea050e7d79452566807a66d4c51eae 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 dc712ffd75c65c7ac71e7e9111e8b35bb5cea408..b682cedf504f08958a4cf83858c942a2fb6257f7 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);