From 2c232f1e60fc42230c4e14bc7c548ac0e6593173 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Tue, 9 Apr 2024 09:50:59 +0100 Subject: libbb: use full_write1_str() to shrink busybox_main() 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 Signed-off-by: Denys Vlasenko --- 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; -- cgit v1.2.3-55-g6feb