There are two calls to dup2() in busybox_main().  These were
introduced to coerce full_write2_str() into writing to stdout.

The relevant commits were: 21278dff7 (busybox: do not print help
to fd 2, print it to fd 1) and 5a7c72015 (busybox --list option.
+140 bytes. Rob wanted it.)

Later, in commit 729ecb87b (bbconfig: make it independent from
printf functions), the function full_write1_str() was added.

Using this in busybox_main() allows us to drop the dup2() calls.

function                                             old     new   delta
run_applet_and_exit                                  796     760     -36
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-36)             Total: -36 bytes

Signed-off-by: Ron Yorston <r...@pobox.com>
---
 libbb/appletlib.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index d9cc48423..ad373ae1c 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -776,10 +776,9 @@ int busybox_main(int argc UNUSED_PARAM, char **argv)
  help:
                output_width = get_terminal_width(2);
 
-               dup2(1, 2);
-               full_write2_str(bb_banner); /* reuse const string */
-               full_write2_str(" multi-call binary.\n"); /* reuse */
-               full_write2_str(
+               full_write1_str(bb_banner); /* reuse const string */
+               full_write1_str(" multi-call binary.\n"); /* reuse */
+               full_write1_str(
                        "BusyBox is copyrighted by many authors between 
1998-2015.\n"
                        "Licensed under GPLv2. See source distribution for 
detailed\n"
                        "copyright notices.\n"
@@ -817,20 +816,20 @@ int busybox_main(int argc UNUSED_PARAM, char **argv)
                while (*a) {
                        int len2 = strlen(a) + 2;
                        if (col >= (int)output_width - len2) {
-                               full_write2_str(",\n");
+                               full_write1_str(",\n");
                                col = 0;
                        }
                        if (col == 0) {
                                col = 6;
-                               full_write2_str("\t");
+                               full_write1_str("\t");
                        } else {
-                               full_write2_str(", ");
+                               full_write1_str(", ");
                        }
-                       full_write2_str(a);
+                       full_write1_str(a);
                        col += len2;
                        a += len2 - 1;
                }
-               full_write2_str("\n");
+               full_write1_str("\n");
                return 0;
        }
 
@@ -850,14 +849,13 @@ int busybox_main(int argc UNUSED_PARAM, char **argv)
        if (is_prefixed_with(argv[1], "--list")) {
                unsigned i = 0;
                const char *a = applet_names;
-               dup2(1, 2);
                while (*a) {
 #  if ENABLE_FEATURE_INSTALLER
                        if (argv[1][6]) /* --list-full? */
-                               
full_write2_str(install_dir[APPLET_INSTALL_LOC(i)] + 1);
+                               
full_write1_str(install_dir[APPLET_INSTALL_LOC(i)] + 1);
 #  endif
-                       full_write2_str(a);
-                       full_write2_str("\n");
+                       full_write1_str(a);
+                       full_write1_str("\n");
                        i++;
                        while (*a++ != '\0')
                                continue;
-- 
2.44.0

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to