aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/test/uudecode.test27
-rw-r--r--scripts/test/uuencode.test26
-rw-r--r--toys/pending/uudecode.c1
-rw-r--r--toys/pending/uuencode.c2
4 files changed, 55 insertions, 1 deletions
diff --git a/scripts/test/uudecode.test b/scripts/test/uudecode.test
new file mode 100644
index 00000000..47c1bf7d
--- /dev/null
+++ b/scripts/test/uudecode.test
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+[ -f testing.sh ] && . testing.sh
+
+#testing "name" "command" "result" "infile" "stdin"
+
+testing "uudecode uu empty file" "../../toybox uudecode -o /dev/stdout" "" "" \
+ "begin 744 test\n\`\nend\n"
+testing "uudecode uu 1-char" "../../toybox uudecode -o /dev/stdout" "a" "" \
+ "begin 744 test\n!80 \n\`\nend\n"
+testing "uudecode uu 2-char" "../../toybox uudecode -o /dev/stdout" "ab" "" \
+ "begin 744 test\n\"86( \n\`\nend\n"
+testing "uudecode uu 3-char" "../../toybox uudecode -o /dev/stdout" "abc" "" \
+ "begin 744 test\n#86)C\n\`\nend\n"
+
+testing "uudecode b64 empty file" "../../toybox uudecode -o /dev/stdout" "" "" \
+ "begin-base64 744 test\n====\n"
+testing "uudecode b64 1-char" "../../toybox uudecode -o /dev/stdout" "a" "" \
+ "begin-base64 744 test\nYQ==\n====\n"
+testing "uudecode b64 2-char" "../../toybox uudecode -o /dev/stdout" "ab" "" \
+ "begin-base64 744 test\nYWI=\n====\n"
+testing "uudecode b64 3-char" "../../toybox uudecode -o /dev/stdout" "abc" "" \
+ "begin-base64 744 test\nYWJj\n====\n"
+
+testing "uudecode filename" "../../toybox uudecode && echo -ne 'abc' | cmp uudecode-fn-test /dev/stdin && echo -ne yes && rm uudecode-fn-test" \
+ "yes" "" "begin-base64 744 uudecode-fn-test\nYWJj\n====\n"
+
diff --git a/scripts/test/uuencode.test b/scripts/test/uuencode.test
new file mode 100644
index 00000000..ffe26afe
--- /dev/null
+++ b/scripts/test/uuencode.test
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+[ -f testing.sh ] && . testing.sh
+
+#testing "name" "command" "result" "infile" "stdin"
+
+testing "uuencode not enough args [fail]" "uuencode 2>/dev/null" "" "" ""
+
+testing "uuencode uu empty file" "uuencode test" \
+ "begin 744 test\n\`\nend\n" "" ""
+testing "uuencode uu 1-char" "uuencode test" \
+ "begin 744 test\n!80 \n\`\nend\n" "" "a"
+testing "uuencode uu 2-char" "uuencode test" \
+ "begin 744 test\n\"86( \n\`\nend\n" "" "ab"
+testing "uuencode uu 3-char" "uuencode test" \
+ "begin 744 test\n#86)C\n\`\nend\n" "" "abc"
+
+testing "uuencode b64 empty file" "uuencode -m test" \
+ "begin-base64 744 test\n====\n" "" ""
+testing "uuencode b64 1-char" "uuencode -m test" \
+ "begin-base64 744 test\nYQ==\n====\n" "" "a"
+testing "uuencode b64 2-char" "uuencode -m test" \
+ "begin-base64 744 test\nYWI=\n====\n" "" "ab"
+testing "uuencode b64 3-char" "uuencode -m test" \
+ "begin-base64 744 test\nYWJj\n====\n" "" "abc"
+
diff --git a/toys/pending/uudecode.c b/toys/pending/uudecode.c
index 71774ea2..41d9acf3 100644
--- a/toys/pending/uudecode.c
+++ b/toys/pending/uudecode.c
@@ -171,4 +171,5 @@ void uudecode_main(void)
ofd = xcreate(out_filename,O_WRONLY|O_CREAT|O_TRUNC,mode);
free(line);
decoder(ifd,ofd);
+ if (TOYBOX_CLEANUP) close(ofd);
}
diff --git a/toys/pending/uuencode.c b/toys/pending/uuencode.c
index d6cc5ad2..277cefac 100644
--- a/toys/pending/uuencode.c
+++ b/toys/pending/uuencode.c
@@ -57,7 +57,7 @@ static void uuencode_b64(int fd, const char *name)
xprintf("begin-base64 744 %s\n",name);
do {
len = xread(fd,inbuf,48);
- uuencode_b64_line(outbuf,inbuf,len);
+ if (len > 0) uuencode_b64_line(outbuf,inbuf,len);
} while (len > 0);
xprintf("====\n");
}