From: Joe Hershberger Date: Wed, 3 Oct 2012 13:09:15 +0000 (+0000) Subject: Output strings from echo with puts where easy X-Git-Tag: v2012.10-rc3~17 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=bb64d1c92fbbc2441772f2eb9b4527499955c04e;p=u-boot Output strings from echo with puts where easy 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 --- diff --git a/common/cmd_echo.c b/common/cmd_echo.c index 43a6da5722..1e499fb0db 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); } }