Ver código fonte

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 <joe.hershberger@ni.com>
Joe Hershberger 12 anos atrás
pai
commit
bb64d1c92f
1 arquivos alterados com 21 adições e 7 exclusões
  1. 21 7
      common/cmd_echo.c

+ 21 - 7
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;
 	int putnl = 1;
 
 
 	for (i = 1; i < argc; i++) {
 	for (i = 1; i < argc; i++) {
-		char *p = argv[i], c;
+		char *p = argv[i];
+		char *nls; /* new-line suppression */
 
 
 		if (i > 1)
 		if (i > 1)
 			putc(' ');
 			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);
 		}
 		}
 	}
 	}