diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2014-10-27 16:23:33 +0800 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2020-03-28 21:42:54 +0000 |
commit | 1fb4949c5a40f0bb6da7993a2ab034ec3b39477d (patch) | |
tree | 10d85d9ca4370e1070432a3364c296547691d3d5 | |
parent | 298ca1e50131be8fae13c629aca17507928271d3 (diff) | |
download | klibc-1fb4949c5a40f0bb6da7993a2ab034ec3b39477d.tar.gz |
[klibc] dash: [BUILTIN] Simplify echo command
[ dash commit 7a784244625d5489c0fc779201c349555dc5f8bc ]
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r-- | usr/dash/bltin/printf.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 0e150d366cfe41..d4ae794d5bb548 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -448,33 +448,21 @@ check_conversion(const char *s, const char *ep) int echocmd(int argc, char **argv) { - int nonl = 0; - struct output *outs = out1; - - if (!*++argv) - goto end; - if (equal(*argv, "-n")) { - nonl = ~nonl; - if (!*++argv) - goto end; - } + int nonl; + + nonl = *++argv ? equal(*argv, "-n") : 0; + argv += nonl; do { int c; - nonl += print_escape_str("%s", NULL, NULL, *argv); + if (likely(*argv)) + nonl += print_escape_str("%s", NULL, NULL, *argv++); if (nonl > 0) break; - c = ' '; - if (!*++argv) { -end: - if (nonl) { - break; - } - c = '\n'; - } - outc(c, outs); + c = *argv ? ' ' : '\n'; + out1c(c); } while (*argv); return 0; } |