--- rtcanrecv.c.orig 2011-06-27 12:02:43.634343171 -0400 +++ rtcanrecv.c 2011-06-27 12:12:32.834332555 -0400 @@ -24,6 +24,7 @@ " -R, --timestamp-rel with relative timestamp\n" " -v, --verbose be verbose\n" " -p, --print=MODULO print every MODULO message\n" + " -L, --line-buffer use line buffering\n" " -h, --help this help\n", prg); } @@ -31,7 +32,7 @@ extern int optind, opterr, optopt; -static int s = -1, verbose = 0, print = 1; +static int s = -1, verbose = 0, print = 1, line_buffer = 0; static nanosecs_rel_t timeout = 0, with_timestamp = 0, timestamp_rel = 0; RT_TASK rt_task_desc; @@ -174,6 +175,7 @@ { "timeout", required_argument, 0, 't'}, { "timestamp", no_argument, 0, 'T'}, { "timestamp-rel", no_argument, 0, 'R'}, + { "line-buffer", no_argument, 0, 'L'}, { 0, 0, 0, 0}, }; @@ -182,7 +184,7 @@ signal(SIGTERM, cleanup_and_exit); signal(SIGINT, cleanup_and_exit); - while ((opt = getopt_long(argc, argv, "hve:f:t:p:RT", + while ((opt = getopt_long(argc, argv, "hve:f:t:p:RTL", long_options, NULL)) != -1) { switch (opt) { case 'h': @@ -230,6 +232,10 @@ with_timestamp = 1; break; + case 'L': + line_buffer = 1; + break; + default: fprintf(stderr, "Unknown option %c\n", opt); break; @@ -311,6 +317,10 @@ } } + if (line_buffer) { + setvbuf(stdout, NULL, _IOLBF, 0); + } + snprintf(name, sizeof(name), "rtcanrecv-%d", getpid()); ret = rt_task_shadow(&rt_task_desc, name, 0, 0); if (ret) {