search for: print_escape_str

Displaying 14 results from an estimated 14 matches for "print_escape_str".

2019 Jan 25
0
[klibc:update-dash] builtin: Move echo space/nl handling into print_escape_str
...=b29bd471a98347d6bd6b165062558733152e30f6 Author: Herbert Xu <herbert at gondor.apana.org.au> AuthorDate: Sun, 25 Mar 2018 15:55:40 +0800 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Fri, 25 Jan 2019 02:57:21 +0000 [klibc] 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: Herbert Xu <herbert at gondor.apana.org.au> Signed-off-by...
2020 Mar 28
0
[klibc:update-dash] dash: builtin: Move echo space/nl handling into print_escape_str
...8fc5da9bdcdbfabb501a8af0912cc2f181d Author: Herbert Xu <herbert at gondor.apana.org.au> AuthorDate: Sun, 25 Mar 2018 15:55:40 +0800 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Sat, 28 Mar 2020 21:42:54 +0000 [klibc] dash: builtin: Move echo space/nl handling into print_escape_str [ dash commit 325a460c7942aa79bb97303e129980db8afd177c ] 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: Herbe...
2019 Jan 25
0
[klibc:update-dash] [BUILTIN] Simplify echo command
..., 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 ? ...
2020 Mar 28
0
[klibc:update-dash] dash: [BUILTIN] Simplify echo command
..., 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 ? ...
2019 Jan 25
0
[klibc:update-dash] [BUILTIN] Handle embedded NULs correctly in printf
...switch ((char *)param - (char *)array) { \ + default: \ + ret = xasprintf(sp, f, array[0], array[1], func); \ + break; \ + case sizeof(*param): \ + ret = xasprintf(sp, f, array[0], func); \ + break; \ + case 0: \ + ret = xasprintf(sp, f, func); \ + break; \ + } \ + ret; \ +}) + + +static int print_escape_str(const char *f, int *param, int *array, char *s) +{ + struct stackmark smark; + char *p, *q; + int done; + int len; + int total; + + setstackmark(&smark); + done = conv_escape_str(s, &p); + q = stackblock(); + len = p - q; + + p = makestrspace(len, p); + memset(p, 'X', len - 1); + p[...
2020 Mar 28
0
[klibc:update-dash] dash: [BUILTIN] Handle embedded NULs correctly in printf
...switch ((char *)param - (char *)array) { \ + default: \ + ret = xasprintf(sp, f, array[0], array[1], func); \ + break; \ + case sizeof(*param): \ + ret = xasprintf(sp, f, array[0], func); \ + break; \ + case 0: \ + ret = xasprintf(sp, f, func); \ + break; \ + } \ + ret; \ +}) + + +static int print_escape_str(const char *f, int *param, int *array, char *s) +{ + struct stackmark smark; + char *p, *q; + int done; + int len; + int total; + + setstackmark(&smark); + done = conv_escape_str(s, &p); + q = stackblock(); + len = p - q; + + p = makestrspace(len, p); + memset(p, 'X', len - 1); + p[...
2019 Jan 25
0
[klibc:update-dash] [BUILTIN] Remove unnecessary restoration of format string in printf
...en Hutchings <ben at decadent.org.uk> --- usr/dash/bltin/printf.c | 1 - 1 file changed, 1 deletion(-) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index d49d4454..5cd34a19 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -209,7 +209,6 @@ pc: if (print_escape_str(start, param, array, getstr())) goto out; - *fmt = 'b'; break; case 'c': { int p = getchr();
2019 Jan 25
0
[klibc:update-dash] builtin: Fix echo -n early termination
....c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 78bf388a..9da4ffef 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -465,7 +465,7 @@ echocmd(int argc, char **argv) if (likely(*argv)) nonl += print_escape_str("%s", NULL, NULL, *argv++); - if (nonl > 0) + if (likely((nonl + !*argv) > 1)) break; c = *argv ? ' ' : '\n';
2019 Jan 25
0
[klibc:update-dash] Revert "[BUILTIN] Remove unnecessary restoration of format string in printf"
...n Hutchings <ben at decadent.org.uk> --- usr/dash/bltin/printf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 9da4ffef..1f1fbde7 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -211,6 +211,7 @@ pc: if (print_escape_str(start, param, array, getstr())) goto out; + *fmt = 'b'; break; case 'c': { int p = getchr();
2019 Jan 25
0
[klibc:update-dash] builtin: Fix echo performance regression
...k> --- usr/dash/bltin/printf.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 1f1fbde7..fe055fd2 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -100,20 +100,25 @@ static int print_escape_str(const char *f, int *param, int *array, char *s) int total; setstackmark(&smark); - done = conv_escape_str(s, &p); - q = stackblock(); - len = p - q; + done = conv_escape_str(s, &q); + p = stackblock(); + len = q - p; + total = len - 1; + + if (f[1] == 's') + goto easy;...
2020 Mar 28
0
[klibc:update-dash] dash: [BUILTIN] Remove unnecessary restoration of format string in printf
...en Hutchings <ben at decadent.org.uk> --- usr/dash/bltin/printf.c | 1 - 1 file changed, 1 deletion(-) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index d49d4454..5cd34a19 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -209,7 +209,6 @@ pc: if (print_escape_str(start, param, array, getstr())) goto out; - *fmt = 'b'; break; case 'c': { int p = getchr();
2020 Mar 28
0
[klibc:update-dash] dash: builtin: Fix echo -n early termination
....c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 78bf388a..9da4ffef 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -465,7 +465,7 @@ echocmd(int argc, char **argv) if (likely(*argv)) nonl += print_escape_str("%s", NULL, NULL, *argv++); - if (nonl > 0) + if (likely((nonl + !*argv) > 1)) break; c = *argv ? ' ' : '\n';
2020 Mar 28
0
[klibc:update-dash] dash: Revert "[BUILTIN] Remove unnecessary restoration of format string in printf"
...n Hutchings <ben at decadent.org.uk> --- usr/dash/bltin/printf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 9da4ffef..1f1fbde7 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -211,6 +211,7 @@ pc: if (print_escape_str(start, param, array, getstr())) goto out; + *fmt = 'b'; break; case 'c': { int p = getchr();
2020 Mar 28
0
[klibc:update-dash] dash: builtin: Fix echo performance regression
...k> --- usr/dash/bltin/printf.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/usr/dash/bltin/printf.c b/usr/dash/bltin/printf.c index 1f1fbde7..fe055fd2 100644 --- a/usr/dash/bltin/printf.c +++ b/usr/dash/bltin/printf.c @@ -100,20 +100,25 @@ static int print_escape_str(const char *f, int *param, int *array, char *s) int total; setstackmark(&smark); - done = conv_escape_str(s, &p); - q = stackblock(); - len = p - q; + done = conv_escape_str(s, &q); + p = stackblock(); + len = q - p; + total = len - 1; + + if (f[1] == 's') + goto easy;...