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;...