[U-Boot] [PATCH] Output strings from echo with puts where easy

Change echo to puts charachters 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 --- common/cmd_echo.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/common/cmd_echo.c b/common/cmd_echo.c index 43a6da5..e04738f 100644 --- a/common/cmd_echo.c +++ b/common/cmd_echo.c @@ -28,19 +28,23 @@ int do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int i; int putnl = 1; + char *nls; /* new-line suppression */
for (i = 1; i < argc; i++) { - char *p = argv[i], c; + char *p = argv[i];
if (i > 1) putc(' '); - while ((c = *p++) != '\0') { - if (c == '\' && *p == 'c') { - putnl = 0; - p++; - } else { - putc(c); - } + + nls = strstr(p, "\c"); + if (nls) { + putnl = 0; + *nls = '\0'; + puts(p); + puts(nls + 2); + *nls = '\'; + } else { + puts(p); } }

On Friday 17 August 2012 16:55:18 Joe Hershberger wrote:
--- a/common/cmd_echo.c +++ b/common/cmd_echo.c
while ((c = *p++) != '\0') {
if (c == '\\' && *p == 'c') {
putnl = 0;
p++;
} else {
putc(c);
}
nls = strstr(p, "\\c");
if (nls) {
putnl = 0;
*nls = '\0';
puts(p);
puts(nls + 2);
*nls = '\\';
} else {
} }puts(p);
what if someone uses \c multiple times ? -mike

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); } }

On Wed, Oct 03, 2012 at 01:09:15PM -0000, Joe Hershberger wrote:
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
Applied to u-boot/master, thanks!
participants (3)
-
Joe Hershberger
-
Mike Frysinger
-
Tom Rini