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>
This commit is contained in:
parent
da83bcd7b3
commit
bb64d1c92f
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user