[git commit] uudecode: special-case "/dev/stdout", closes 14241

Denys Vlasenko vda.linux at googlemail.com
Sat Dec 11 23:34:15 UTC 2021


commit: https://git.busybox.net/busybox/commit/?id=c7b90dc4d10ccc4f95940f42676ff907cee73272
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
uudecode_main                                        295     322     +27

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/uudecode.c       | 11 ++++++++++-
 docs/posix_conformance.txt |  2 +-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c
index a607977e9..e90902f52 100644
--- a/coreutils/uudecode.c
+++ b/coreutils/uudecode.c
@@ -155,7 +155,16 @@ int uudecode_main(int argc UNUSED_PARAM, char **argv)
 				break;
 		}
 		dst_stream = stdout;
-		if (NOT_LONE_DASH(outname)) {
+		if (NOT_LONE_DASH(outname)
+/* https://pubs.opengroup.org/onlinepubs/9699919799/utilities/uudecode.html
+ * https://pubs.opengroup.org/onlinepubs/9699919799/utilities/uuencode.html
+ * The above says that output file name specified in input file
+ * or overridden by -o OUTFILE can be special "/dev/stdout" string.
+ * This usually works "implicitly": many systems have /dev/stdout.
+ * If ENABLE_DESKTOP, support that explicitly:
+ */
+		 && (!ENABLE_DESKTOP || strcmp(outname, "/dev/stdout") != 0)
+		) {
 			dst_stream = xfopen_for_write(outname);
 			fchmod(fileno(dst_stream), mode & (S_IRWXU | S_IRWXG | S_IRWXO));
 		}
diff --git a/docs/posix_conformance.txt b/docs/posix_conformance.txt
index f6e8858cc..5e107d74d 100644
--- a/docs/posix_conformance.txt
+++ b/docs/posix_conformance.txt
@@ -690,7 +690,7 @@ uniq Busybox specific options:
 
 uudecode POSIX options
  option           | exists | compliant | remarks
-  -o outfile      |  no    | no        |
+  -o outfile      |  yes   | no        |
 uudecode Busybox specific options: None
 
 uuencode POSIX options


More information about the busybox-cvs mailing list