X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=misc%2Flogsave.c;h=74e09f7f5318ebd0f6e020fa2d54e755749bcd18;hb=4c2b28ab67dec1e1c4173a0e7e785dae09d161d2;hp=81ac9f6e01a5d4d836f2168d5c0e2967d9039b90;hpb=6e6b71d697c9a66ab19e67ca2cad10168477a107;p=tools%2Fe2fsprogs.git diff --git a/misc/logsave.c b/misc/logsave.c index 81ac9f6..74e09f7 100644 --- a/misc/logsave.c +++ b/misc/logsave.c @@ -41,7 +41,7 @@ pid_t child_pid = -1; static void usage(char *progname) { - printf("Usage: %s [-v] [-d dir] logfile program\n", progname); + printf("Usage: %s [-asv] logfile program\n", progname); exit(1); } @@ -74,13 +74,32 @@ static int write_all(int fd, const char *buf, size_t count) static void send_output(const char *buffer, int c, int flag) { - char *n; + const char *cp; + char *n; + int cnt, d, del; if (c == 0) c = strlen(buffer); - if (flag & SEND_CONSOLE) - write_all(1, buffer, c); + if (flag & SEND_CONSOLE) { + cnt = c; + cp = buffer; + while (cnt) { + del = 0; + for (d=0; d < cnt; d++) { + if (skip_mode && + (cp[d] == '\001' || cp[d] == '\002')) { + del = 1; + break; + } + } + write_all(1, cp, d); + if (del) + d++; + cnt -= d; + cp += d; + } + } if (!(flag & SEND_LOG)) return; if (outfd > 0)