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.
---
 tests/uudecode.test   | 19 +++++++++----------
 toys/posix/uudecode.c |  3 ++-
 2 files changed, 11 insertions(+), 11 deletions(-)
From 78bc238fcfbd2e4c77e2154b54a9e382b6062bd0 Mon Sep 17 00:00:00 2001
From: Elliott Hughes <e...@google.com>
Date: Mon, 3 Apr 2017 14:12:08 -0700
Subject: [PATCH] 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.
---
 tests/uudecode.test   | 19 +++++++++----------
 toys/posix/uudecode.c |  3 ++-
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/tests/uudecode.test b/tests/uudecode.test
index 2c3bba6..966359e 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 238e27e..4d2861a 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(;;) {
-- 
2.12.2.715.g7642488e1d-goog

_______________________________________________
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to