]> git.itanic.dy.fi Git - log-plotter/blobdiff - main.c
Discard too short log lines
[log-plotter] / main.c
diff --git a/main.c b/main.c
index e116477dd5d77ba2d731dde0e404ea1f888ff435..8e145218aa4e463c88e5ecbf33914cae58c93655 100644 (file)
--- a/main.c
+++ b/main.c
@@ -2,6 +2,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <string.h>
+#include <time.h>
 #include <sys/epoll.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -26,7 +27,7 @@ static int read_log_line(int infd, char *buf, size_t bufsize, int *offset)
        int i;
 
        ret = read(infd, buf + *offset, bufsize - *offset - 1);
-       if (read < 0) {
+       if (ret < 0) {
                pr_err("read: %m\n");
                return -1;
        }
@@ -67,6 +68,7 @@ static int read_log_line(int infd, char *buf, size_t bufsize, int *offset)
 static int read_data(int infd, int outfd)
 {
        struct epoll_event ev;
+       time_t start_time = 0, cur_time;
        int epoll_fd;
        int ret;
        char buf[256];
@@ -86,6 +88,9 @@ static int read_data(int infd, int outfd)
        }
 
        while (1) {
+               char str[320];
+               int len;
+
                ret = epoll_wait(epoll_fd, &ev, 1, -1);
                if (ret == 0)
                        continue;
@@ -95,6 +100,9 @@ static int read_data(int infd, int outfd)
                        return -1;
                }
 
+               if (!start_time)
+                       start_time = time(NULL);
+
                ret = read_log_line(infd, buf, sizeof(buf), &offset);
                if (ret < 0)
                        return ret;
@@ -102,21 +110,27 @@ static int read_data(int infd, int outfd)
                if (ret == 0)
                        continue;
 
-               if (outfd) {
-                       char newline = '\n';
-                       ret = write(outfd, buf, strlen(buf));
-                       if (read < 0) {
-                               pr_err("write: %m\n");
-                               break;
-                       }
-                       ret = write(outfd, &newline, 1);
-                       if (read < 0) {
-                               pr_err("write: %m\n");
-                               break;
-                       }
+               if (strlen(buf) < 5) {
+                       pr_debug("discarding truncated log entry\n");
+                       offset = 0;
+                       continue;
                }
 
+               cur_time = time(NULL);
+
                pr_info("%s\n", buf);
+
+               if (!outfd)
+                       continue;
+
+               len = snprintf(str, sizeof(str),
+                       "%ld;%s\n", cur_time - start_time, buf);
+
+               ret = write(outfd, str, len);
+               if (ret < 0) {
+                       pr_err("write: %m\n");
+                       break;
+               }
        }
 
        return 0;