Skip to content
Snippets Groups Projects
Commit 325a460c authored by Herbert Xu's avatar Herbert Xu
Browse files

builtin: Move echo space/nl handling into print_escape_str


Currently echocmd uses print_escape_str to do everything apart
from printing the spaces/newlines separating its arguments.  This
patch moves the actual printing into print_escape_str as well
using the format parameter.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 42b730b0
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -103,6 +103,8 @@ static int print_escape_str(const char *f, int *param, int *array, char *s)
len = q - p;
total = len - 1;
 
q[-1] = (!!((f[1] - 's') | done) - 1) & f[2];
total += !!q[-1];
if (f[1] == 's')
goto easy;
 
Loading
Loading
@@ -455,21 +457,22 @@ check_conversion(const char *s, const char *ep)
int
echocmd(int argc, char **argv)
{
const char *lastfmt = snlfmt;
int nonl;
 
nonl = *++argv ? equal(*argv, "-n") : 0;
argv += nonl;
if (*++argv && equal(*argv, "-n")) {
argv++;
lastfmt = "%s";
}
 
do {
int c;
const char *fmt = "%s ";
char *s = *argv;
 
if (likely(*argv))
nonl += print_escape_str("%s", NULL, NULL, *argv++);
if (likely((nonl + !*argv) > 1))
break;
if (!s || !*++argv)
fmt = lastfmt;
 
c = *argv ? ' ' : '\n';
out1c(c);
} while (*argv);
nonl = print_escape_str(fmt, NULL, NULL, s ?: nullstr);
} while (!nonl && *argv);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment