X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=log%2Fsyslog.c;h=856fa60edce459f7cf525384b9d128dbdc8218ad;hb=16f7e16181e2f3e9cf3e2ce56a7e291844900d09;hp=fcc4a74f906a026796a87ed6254c7d1fb14a62bd;hpb=f8d43c5f222b99d5a7a0e2bd1fdc0d442e030e89;p=project%2Fubox.git diff --git a/log/syslog.c b/log/syslog.c index fcc4a74..856fa60 100644 --- a/log/syslog.c +++ b/log/syslog.c @@ -51,7 +51,7 @@ static regex_t pat_tstamp; static struct log_head* log_next(struct log_head *h, int size) { - struct log_head *n = (struct log_head *) &h->data[PAD(sizeof(struct log_head) + size)]; + struct log_head *n = (struct log_head *) &h->data[PAD(size)]; return (n >= log_end) ? (log) : (n); } @@ -66,7 +66,7 @@ log_add(char *buf, int size, int source) /* bounce out if we don't have init'ed yet (regmatch etc will blow) */ if (!log) { - fprintf(stderr, buf); + fprintf(stderr, "%s", buf); return; } @@ -203,7 +203,7 @@ syslog_open(void) int fd; unlink(log_dev); - fd = usock(USOCK_UNIX | USOCK_UDP | USOCK_SERVER | USOCK_NONBLOCK, log_dev, NULL); + fd = usock(USOCK_UNIX | USOCK_UDP | USOCK_SERVER | USOCK_NONBLOCK, log_dev, NULL); if (fd < 0) { fprintf(stderr,"Failed to open %s\n", log_dev); return -1; @@ -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); @@ -296,4 +299,7 @@ log_shutdown(void) ustream_free(&klog.stream); close(slog.fd.fd); close(klog.fd.fd); + free(log); + regfree(&pat_prio); + regfree(&pat_tstamp); }