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

2012-08-17 Thread Mike Frysinger
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


signature.asc
Description: This is a digitally signed message part.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


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

2012-08-17 Thread Joe Hershberger
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 
---
 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);
}
}
 
-- 
1.7.11.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot