From c2b2cf0f92eb391abdfaa992342d39bfd1c08f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D0=B8=D0=BB=20=D0=96=D1=83=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Tue, 17 Dec 2019 11:30:00 +0300 Subject: [PATCH] Log file max size flag --- candump.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/candump.c b/candump.c index cca725e..4c56e59 100644 --- a/candump.c +++ b/candump.c @@ -129,6 +129,7 @@ void print_usage(char *prg) fprintf(stderr, " -B (bridge mode - like '-b' with disabled loopback)\n"); fprintf(stderr, " -u (delay bridge forwarding by microseconds)\n"); fprintf(stderr, " -l (log CAN-frames into file. Sets '-s %d' by default)\n", SILENT_ON); + fprintf(stderr, " -m (log file max size)\n"); fprintf(stderr, " -L (use log file format on stdout)\n"); fprintf(stderr, " -n (terminate after reception of CAN frames)\n"); fprintf(stderr, " -r (set socket receive buffer to )\n"); @@ -256,6 +257,7 @@ int main(int argc, char **argv) unsigned char color = 0; unsigned char view = 0; unsigned char log = 0; + unsigned long logmax = 0; unsigned char logfrmt = 0; int count = 0; int rcvbuf_size = 0; @@ -284,7 +286,7 @@ int main(int argc, char **argv) last_tv.tv_sec = 0; last_tv.tv_usec = 0; - while ((opt = getopt(argc, argv, "t:HciaSs:b:B:u:lDdxLn:r:heT:?")) != -1) { + while ((opt = getopt(argc, argv, "t:HciaSs:b:B:u:lm:DdxLn:r:heT:?")) != -1) { switch (opt) { case 't': timestamp = optarg[0]; @@ -378,6 +380,10 @@ int main(int argc, char **argv) log = 1; break; + case 'm': + logmax = strtoul(optarg, (char **)NULL, 10); // TODO: Parse strings with sizes: 10mb, 1gb etc + break; + case 'D': down_causes_exit = 0; break; @@ -775,7 +781,7 @@ int main(int argc, char **argv) int n = sprintf(line, "(%010ld.%06ld) %*s %s\n", tv.tv_sec, tv.tv_usec, max_devname_len, devname[idx], buf); - if (ftell(logfile) + n > 1024) { + if (logmax && ftell(logfile) + n > logmax) { fclose(logfile); if (openlogfile(&logfile) != 0) return 1;