Added support for comments in logfiles.

Added some sanity checks and error messages.
pull/7/head
Oliver Hartkopp 2008-09-09 12:56:05 +00:00
parent 6c0ca36ab2
commit 4455308aa0
1 changed files with 18 additions and 4 deletions

View File

@ -56,6 +56,8 @@
#include "lib.h" #include "lib.h"
#define BUFSZ 400 /* for one line in the logfile */
extern int optind, opterr, optopt; extern int optind, opterr, optopt;
void print_usage(char *prg) void print_usage(char *prg)
@ -69,7 +71,7 @@ void print_usage(char *prg)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
char buf[100], device[100], ascframe[100], id[10]; static char buf[BUFSZ], device[BUFSZ], ascframe[BUFSZ], id[10];
struct can_frame cf; struct can_frame cf;
static struct timeval tv, start_tv; static struct timeval tv, start_tv;
@ -121,10 +123,22 @@ int main(int argc, char **argv)
//printf("Found %d CAN devices!\n", maxdev); //printf("Found %d CAN devices!\n", maxdev);
while (fgets(buf, 99, infile)) { while (fgets(buf, BUFSZ-1, infile)) {
if (sscanf(buf, "(%ld.%ld) %s %s", &tv.tv_sec, &tv.tv_usec,
device, ascframe) != 4) if (strlen(buf) >= BUFSZ-2) {
fprintf(stderr, "line too long for input buffer\n");
return 1; return 1;
}
/* check for a comment line */
if (buf[0] != '(')
continue;
if (sscanf(buf, "(%ld.%ld) %s %s", &tv.tv_sec, &tv.tv_usec,
device, ascframe) != 4) {
fprintf(stderr, "incorrect line format in logfile\n");
return 1;
}
if (!start_tv.tv_sec) { /* print banner */ if (!start_tv.tv_sec) { /* print banner */
start_tv = tv; start_tv = tv;