Thank you, applied both.
On Tue, Apr 9, 2024 at 10:52 AM Ron Yorston <[email protected]> wrote: > > POSIX generally requires normal output to go to stdout and > diagnostic (i.e. error) output to go to stderr. > > When usage messages for BusyBox applets are specifically requested > by the user (e.g. 'find --help') they should go to stdout; when > they're emitted due to an error they should go to stderr. > > function old new delta > bb_show_usage 148 146 -2 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-2) Total: -2 bytes > > Signed-off-by: Avi Halachmi <[email protected]> > Signed-off-by: Ron Yorston <[email protected]> > --- > libbb/appletlib.c | 30 +++++++++++++++++------------- > 1 file changed, 17 insertions(+), 13 deletions(-) > > diff --git a/libbb/appletlib.c b/libbb/appletlib.c > index ad373ae1c..d2e5900b5 100644 > --- a/libbb/appletlib.c > +++ b/libbb/appletlib.c > @@ -127,17 +127,19 @@ static const char packed_usage[] ALIGN1 = { > PACKED_USAGE }; > void FAST_FUNC bb_show_usage(void) > { > if (ENABLE_SHOW_USAGE) { > + ssize_t FAST_FUNC (*full_write_fn)(const char *) = > + xfunc_error_retval ? full_write2_str : > full_write1_str; > #ifdef SINGLE_APPLET_STR > /* Imagine that this applet is "true". Dont link in printf! */ > const char *usage_string = unpack_usage_messages(); > > if (usage_string) { > if (*usage_string == '\b') { > - full_write2_str("No help available\n"); > + full_write_fn("No help available\n"); > } else { > - full_write2_str("Usage: "SINGLE_APPLET_STR" > "); > - full_write2_str(usage_string); > - full_write2_str("\n"); > + full_write_fn("Usage: "SINGLE_APPLET_STR" "); > + full_write_fn(usage_string); > + full_write_fn("\n"); > } > if (ENABLE_FEATURE_CLEAN_UP) > dealloc_usage_messages((char*)usage_string); > @@ -153,19 +155,19 @@ void FAST_FUNC bb_show_usage(void) > while (*p++) continue; > ap--; > } > - full_write2_str(bb_banner); > - full_write2_str(" multi-call binary.\n"); /* common string */ > + full_write_fn(bb_banner); > + full_write_fn(" multi-call binary.\n"); /* common string */ > if (*p == '\b') > - full_write2_str("\nNo help available\n"); > + full_write_fn("\nNo help available\n"); > else { > - full_write2_str("\nUsage: "); > - full_write2_str(applet_name); > + full_write_fn("\nUsage: "); > + full_write_fn(applet_name); > if (p[0]) { > if (p[0] != '\n') > - full_write2_str(" "); > - full_write2_str(p); > + full_write_fn(" "); > + full_write_fn(p); > } > - full_write2_str("\n"); > + full_write_fn("\n"); > } > if (ENABLE_FEATURE_CLEAN_UP) > dealloc_usage_messages((char*)usage_string); > @@ -268,8 +270,10 @@ void lbb_prepare(const char *applet > && !(ENABLE_TRUE && strcmp(applet_name, "true") == 0) > && !(ENABLE_FALSE && strcmp(applet_name, "false") == 0) > && !(ENABLE_ECHO && strcmp(applet_name, "echo") == 0) > - ) > + ) { > + xfunc_error_retval = 0; > bb_show_usage(); > + } > } > #endif > } > -- > 2.44.0 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
