#include <unistd.h>
#include <fcntl.h>
#include <string.h>
+#include <time.h>
#include <sys/epoll.h>
#include <sys/types.h>
#include <sys/stat.h>
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];
}
while (1) {
+ char str[320];
+ int len;
+
ret = epoll_wait(epoll_fd, &ev, 1, -1);
if (ret == 0)
continue;
return -1;
}
+ if (!start_time)
+ start_time = time(NULL);
+
ret = read_log_line(infd, buf, sizeof(buf), &offset);
if (ret < 0)
return ret;
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;
- }
- }
+ 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 (read < 0) {
+ pr_err("write: %m\n");
+ break;
+ }
}
return 0;