
Change echo to puts characters together where it knows about them together. This improves netconsole performance by greatly reducing the number of packets that are sent.
Signed-off-by: Joe Hershberger joe.hershberger@ni.com --- Changes in v2: - Check for someone to specify "\c" more than once in each word
common/cmd_echo.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-)
diff --git a/common/cmd_echo.c b/common/cmd_echo.c index 43a6da5..1e499fb 100644 --- a/common/cmd_echo.c +++ b/common/cmd_echo.c @@ -30,17 +30,31 @@ int do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int putnl = 1;
for (i = 1; i < argc; i++) { - char *p = argv[i], c; + char *p = argv[i]; + char *nls; /* new-line suppression */
if (i > 1) putc(' '); - while ((c = *p++) != '\0') { - if (c == '\' && *p == 'c') { - putnl = 0; - p++; - } else { - putc(c); + + nls = strstr(p, "\c"); + if (nls) { + char *prenls = p; + + putnl = 0; + /* + * be paranoid and guess that someone might + * say \c more than once + */ + while (nls) { + *nls = '\0'; + puts(prenls); + *nls = '\'; + prenls = nls + 2; + nls = strstr(prenls, "\c"); } + puts(prenls); + } else { + puts(p); } }