diff options
author | Elliott Hughes <enh@google.com> | 2017-04-03 14:12:08 -0700 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2017-04-10 15:20:00 -0500 |
commit | 0956d16785fd8df1a57d8bf063cddd5b5c1ec221 (patch) | |
tree | 5bf256cebe0287e5c7703dba46163dfb3d0330ef | |
parent | fea6d56777a3063b5af8b262df2a4a2573142962 (diff) | |
download | toybox-0956d16785fd8df1a57d8bf063cddd5b5c1ec221.tar.gz |
Add "uudecode -o -" support.
busybox uudecode supports this, and POSIX explicitly mentions it (albeit
only in the "STDOUT" section). Plus Android doesn't have /dev/stdout and
/dev/stdin, so this lets us rewrite the uudecode tests so they pass on
Android too.
-rwxr-xr-x | tests/uudecode.test | 19 | ||||
-rw-r--r-- | toys/posix/uudecode.c | 3 |
2 files changed, 11 insertions, 11 deletions
diff --git a/tests/uudecode.test b/tests/uudecode.test index 2c3bba6a..966359ec 100755 --- a/tests/uudecode.test +++ b/tests/uudecode.test @@ -4,24 +4,23 @@ #testing "name" "command" "result" "infile" "stdin" -testing "uu empty file" "uudecode -o /dev/stdout && echo yes" \ +testing "uu empty file" "uudecode -o - && echo yes" \ "yes\n" "" "begin 744 test\n\`\nend\n" -testing "uu 1-char" "uudecode -o /dev/stdout" "a" "" \ +testing "uu 1-char" "uudecode -o -" "a" "" \ "begin 744 test\n!80 \n\`\nend\n" -testing "uu 2-char" "uudecode -o /dev/stdout" "ab" "" \ +testing "uu 2-char" "uudecode -o -" "ab" "" \ "begin 744 test\n\"86( \n\`\nend\n" -testing "uu 3-char" "uudecode -o /dev/stdout" "abc" "" \ +testing "uu 3-char" "uudecode -o -" "abc" "" \ "begin 744 test\n#86)C\n\`\nend\n" -testing "b64 empty file" "uudecode -o /dev/stdout && echo yes" \ +testing "b64 empty file" "uudecode -o - && echo yes" \ "yes\n" "" "begin-base64 744 test\n====\n" -testing "b64 1-char" "uudecode -o /dev/stdout" "a" "" \ +testing "b64 1-char" "uudecode -o -" "a" "" \ "begin-base64 744 test\nYQ==\n====\n" -testing "b64 2-char" "uudecode -o /dev/stdout" "ab" "" \ +testing "b64 2-char" "uudecode -o -" "ab" "" \ "begin-base64 744 test\nYWI=\n====\n" -testing "b64 3-char" "uudecode -o /dev/stdout" "abc" "" \ +testing "b64 3-char" "uudecode -o -" "abc" "" \ "begin-base64 744 test\nYWJj\n====\n" -testing "filename" "uudecode && echo -ne 'abc' | cmp uudecode-fn-test /dev/stdin && echo -ne yes && rm uudecode-fn-test" \ +testing "filename" "uudecode && echo -ne 'abc' | cmp uudecode-fn-test - && echo -ne yes && rm uudecode-fn-test" \ "yes" "" "begin-base64 744 uudecode-fn-test\nYWJj\n====\n" - diff --git a/toys/posix/uudecode.c b/toys/posix/uudecode.c index 238e27e9..4d2861af 100644 --- a/toys/posix/uudecode.c +++ b/toys/posix/uudecode.c @@ -41,7 +41,8 @@ void uudecode_main(void) } } - ofd = xcreate(TT.o ? TT.o : line+idx, O_WRONLY|O_CREAT|O_TRUNC, + if (TT.o && !strcmp(TT.o, "-")) ofd = 1; + else ofd = xcreate(TT.o ? TT.o : line+idx, O_WRONLY|O_CREAT|O_TRUNC, string_to_mode(mode, 0777^toys.old_umask)); for(;;) { |