FreeCalypso > hg > freecalypso-sw
diff rvinterf/rvtdump.c @ 134:e0d56e9be8a2
rvtdump: time-stamped logging implemented
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 02 Nov 2013 23:15:42 +0000 |
parents | 56b53c289785 |
children | e01e3a60c858 |
line wrap: on
line diff
--- a/rvinterf/rvtdump.c Sat Nov 02 22:24:14 2013 +0000 +++ b/rvinterf/rvtdump.c Sat Nov 02 23:15:42 2013 +0000 @@ -8,12 +8,17 @@ #include <stdio.h> #include <stdlib.h> #include <unistd.h> +#include <time.h> extern int target_fd; extern char *baudrate_name; extern char pr_item[]; +char *logfname; +FILE *logF; +time_t logtime; + main(argc, argv) char **argv; { @@ -22,7 +27,7 @@ int c; fd_set fds; - while ((c = getopt(argc, argv, "b:d:")) != EOF) + while ((c = getopt(argc, argv, "b:d:l:")) != EOF) switch (c) { case 'b': baudrate_name = optarg; @@ -30,6 +35,9 @@ case 'd': target_fd = atoi(optarg); continue; + case 'l': + logfname = optarg; + continue; case '?': default: usage: fprintf(stderr, @@ -44,10 +52,20 @@ set_serial_nonblock(0); setlinebuf(stdout); + if (logfname) { + logF = fopen(logfname, "w"); + if (!logF) { + perror(logfname); + exit(1); + } + fprintf(logF, "*** Log of decoded RVT output ***\n"); + setlinebuf(logF); + } for (;;) { FD_ZERO(&fds); FD_SET(target_fd, &fds); c = select(target_fd+1, &fds, 0, 0, 0); + time(&logtime); if (c < 0) { if (errno == EINTR) continue; @@ -67,4 +85,6 @@ print_item() { printf("%s\n", pr_item); + if (logF) + log_item(); }