diff options
author | Rob Landley <rob@landley.net> | 2012-12-01 00:21:37 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2012-12-01 00:21:37 -0600 |
commit | f6379761b605a606764bc139c5b64c75c45e0559 (patch) | |
tree | 37745b8213a8f5e63156c2caf21d5037a73912d3 | |
parent | 3cbe8d52155ff4dfb6b3184ed5cdb66688de9753 (diff) | |
download | toybox-f6379761b605a606764bc139c5b64c75c45e0559.tar.gz |
Re-add backspace support to expand (oops) and fix test to expect data plus backspace characters rather than the chracters cancelling each other out before output.
-rw-r--r-- | scripts/test/expand.test | 2 | ||||
-rw-r--r-- | toys/posix/expand.c | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/scripts/test/expand.test b/scripts/test/expand.test index bb0ca083..510f89f5 100644 --- a/scripts/test/expand.test +++ b/scripts/test/expand.test @@ -11,7 +11,7 @@ testing "expand default" "expand input" " foo bar\n" "\tfoo\tbar\n" " testing "expand default stdin" "expand" " foo bar\n" "" "\tfoo\tbar\n" testing "expand single" "expand -t 2 input" " foo bar\n" "\tfoo\tbar\n" "" testing "expand tablist" "expand -t 5,10,12 input" " foo bar foo\n" "\tfoo\tbar\tfoo\n" "" -testing "expand backspace" "expand input" "foobarf bar\n" "foobarfoo\b\b\tbar\n" "" +testing "expand backspace" "expand input" "foobarfoo\b\b bar\n" "foobarfoo\b\b\tbar\n" "" # advanced tests diff --git a/toys/posix/expand.c b/toys/posix/expand.c index b29a98f4..922f5e67 100644 --- a/toys/posix/expand.c +++ b/toys/posix/expand.c @@ -45,9 +45,13 @@ static void expand_file(int fd, char *name) if (!len) break; for (i=0; i<len; i++) { int len = 1; - if (toybuf[i] != '\t') { - if (EOF == putc(toybuf[i], stdout)) perror_exit(0); - if (toybuf[i] == '\n') { + char c = toybuf[i]; + + if (c != '\t') { + if (EOF == putc(c, stdout)) perror_exit(0); + + if (c == '\b' && x) len = -1; + if (c == '\n') { x = stop = 0; continue; } |