aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2014-10-27 16:23:33 +0800
committerBen Hutchings <ben@decadent.org.uk>2020-03-28 21:42:54 +0000
commit1fb4949c5a40f0bb6da7993a2ab034ec3b39477d (patch)
tree10d85d9ca4370e1070432a3364c296547691d3d5
parent298ca1e50131be8fae13c629aca17507928271d3 (diff)
downloadklibc-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.c28
1 files changed, 8 insertions, 20 deletions
diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c
index 0e150d366cfe4..d4ae794d5bb54 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;
}