← Commit list

a9d7d24e1

Denis Vlasenko
Denis Vlasenko
2007-04-10
FAILED Duration: 16s

Subject

echo: fix regression ("echo" with no arguments didn't print newline. echo: use fputs if no options are given. Code growth ~15 bytes.

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

coreutils/echo.c+11 -8
@@ -29,7 +29,10 @@ int bb_echo(char **argv)
{
const char *arg;
#if !ENABLE_FEATURE_FANCY_ECHO
-#define eflag '\\'
+ enum {
+ eflag = '\\',
+ nflag = 1, /* 1 -- print '\n' */
+ };
++argv;
#else
const char *p;
@@ -39,7 +42,7 @@ int bb_echo(char **argv)
while (1) {
arg = *++argv;
if (!arg)
- goto ret;
+ goto newline_ret;
if (*arg != '-')
break;
@@ -68,10 +71,13 @@ int bb_echo(char **argv)
just_echo:
#endif
while (1) {
- /* arg is already = *argv and isn't NULL */
+ /* arg is already == *argv and isn't NULL */
int c;
- while ((c = *arg++)) {
+ if (!eflag) {
+ /* optimization for very common case */
+ fputs(arg, stdout);
+ } else while ((c = *arg++)) {
if (c == eflag) { /* Check for escape seq. */
if (*arg == 'c') {
/* '\c' means cancel newline and
@@ -101,13 +107,10 @@ int bb_echo(char **argv)
putchar(' ');
}
-#ifdef CONFIG_FEATURE_FANCY_ECHO
+ newline_ret:
if (nflag) {
putchar('\n');
}
-#else
- putchar('\n');
-#endif
ret:
return fflush(stdout);
}