diff --git a/coreutils/echo.c b/coreutils/echo.c index 4c7a91743..e39b466c0 100644 --- a/coreutils/echo.c +++ b/coreutils/echo.c @@ -25,9 +25,13 @@ #include "libbb.h" +/* This is a NOFORK applet. Be very careful! */ + /* argc is unused, but removing it precludes compiler from * using call -> jump optimization */ -int bb_echo(int argc, char **argv) + +int echo_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int echo_main(int argc, char **argv) { const char *arg; #if !ENABLE_FEATURE_FANCY_ECHO @@ -38,7 +42,7 @@ int bb_echo(int argc, char **argv) /* We must check that stdout is not closed. * The reason for this is highly non-obvious. - * bb_echo is used from shell. Shell must correctly handle "echo foo" + * echo_main is used from shell. Shell must correctly handle "echo foo" * if stdout is closed. With stdio, output gets shoveled into * stdout buffer, and even fflush cannot clear it out. It seems that * even if libc receives EBADF on write attempts, it feels determined @@ -135,14 +139,6 @@ int bb_echo(int argc, char **argv) return fflush(stdout); } -/* This is a NOFORK applet. Be very careful! */ - -int echo_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -int echo_main(int argc, char **argv) -{ - return bb_echo(argc, argv); -} - /*- * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. @@ -185,7 +181,7 @@ int echo_main(int argc, char **argv) #ifdef VERSION_WITH_WRITEV /* We can't use stdio. * The reason for this is highly non-obvious. - * bb_echo is used from shell. Shell must correctly handle "echo foo" + * echo_main is used from shell. Shell must correctly handle "echo foo" * if stdout is closed. With stdio, output gets shoveled into * stdout buffer, and even fflush cannot clear it out. It seems that * even if libc receives EBADF on write attempts, it feels determined @@ -195,7 +191,7 @@ int echo_main(int argc, char **argv) * Using writev instead, with 'direct' conversion of argv vector. */ -int bb_echo(int argc, char **argv) +int echo_main(int argc, char **argv) { struct iovec io[argc]; struct iovec *cur_io = io; diff --git a/include/libbb.h b/include/libbb.h index 77392d09c..095647dd4 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -728,7 +728,7 @@ extern void bb_verror_msg(const char *s, va_list p, const char *strerr); /* applets which are useful from another applets */ int bb_cat(char** argv); -int bb_echo(int argc, char** argv); +int echo_main(int argc, char** argv) MAIN_EXTERNALLY_VISIBLE; int test_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int kill_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; #if ENABLE_ROUTE diff --git a/shell/ash.c b/shell/ash.c index 4113ce8e2..7f7531650 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -11003,7 +11003,7 @@ exitcmd(int argc, char **argv) static int echocmd(int argc, char **argv) { - return bb_echo(argc, argv); + return echo_main(argc, argv); } #endif diff --git a/shell/hush.c b/shell/hush.c index a9c1fe7dd..f7e2a4a14 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -853,7 +853,7 @@ static int builtin_echo(char **argv) argc++; argv++; } - return bb_echo(argc, argv - argc); + return echo_main(argc, argv - argc); } /* built-in 'eval' handler */