diff options
author | Elliott Hughes <enh@google.com> | 2016-04-15 18:38:53 -0700 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2016-04-16 19:58:40 -0500 |
commit | 406d4c978ac841b34c8725e67da9962957da1848 (patch) | |
tree | b96e6fe7e2fdd3e5d07cf120ea94082a3c390377 | |
parent | df6a96d3ed0a355df0bd0a3468b77c32871ef5ca (diff) | |
download | toybox-406d4c978ac841b34c8725e67da9962957da1848.tar.gz |
Fix top -b.
Batch mode should never output terminal escape sequences, should ignore
the keyboard, and should include a gap between datasets.
-rw-r--r-- | toys/posix/ps.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/toys/posix/ps.c b/toys/posix/ps.c index 26b4a4ea..a1e1981a 100644 --- a/toys/posix/ps.c +++ b/toys/posix/ps.c @@ -1144,6 +1144,8 @@ static int header_line(int line, int rev) { if (!line) return 0; + if (toys.optflags&FLAG_b) rev = 0; + printf("%s%*.*s%s\r\n", rev ? "\033[7m" : "", (toys.optflags&FLAG_b) ? 0 : -TT.width, TT.width, toybuf, rev ? "\033[0m" : ""); @@ -1339,7 +1341,8 @@ static void top_common( *pos = 0; lines = header_line(lines, 1); } - if (!recalc) printf("\033[%dH\033[J", 1+TT.height-lines); + if (!recalc && !(toys.optflags&FLAG_b)) + printf("\033[%dH\033[J", 1+TT.height-lines); recalc = 1; for (i = 0; i<lines && i+topoff<mix.count; i++) { @@ -1357,6 +1360,14 @@ static void top_common( if (timeout<=now) timeout = new.whence+TT.top.d; if (timeout<=now || timeout>now+TT.top.d) timeout = now+TT.top.d; + // In batch mode, we ignore the keyboard. + if (toys.optflags&FLAG_b) { + msleep(timeout-now); + // Make an obvious gap between datasets. + xputs("\n\n\n"); + continue; + } + i = scan_key_getsize(scratch, timeout-now, &TT.width, &TT.height); if (i==-1 || i==3 || toupper(i)=='Q') { done++; |