You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-shells/dash/files/dash-0.5.8.1-dumb-echo.patch

55 lines
1.1 KiB

http://bugs.gentoo.org/337329
http://bugs.gentoo.org/527848
there's no requirement for `echo` to support escape sequences. bash, by default,
does not, while dash always does. POSIX permits either behavior:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
however, since the behavior is not portable, no one should be relying on echo
having any specific behavior. they should use `printf` when they want an escape
sequence. it also makes dash smaller & faster to disable this logic entirely.
--- a/src/bltin/printf.c
+++ b/src/bltin/printf.c
@@ -439,34 +444,12 @@
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 i;
+ for (i = 1; i < argc; ++i) {
+ outstr(argv[i], out1);
+ if (i < argc - 1)
+ outc(' ', out1);
}
-
- do {
- int c;
-
- nonl += conv_escape_str(*argv);
- outstr(stackblock(), outs);
- if (nonl > 0)
- break;
-
- c = ' ';
- if (!*++argv) {
-end:
- if (nonl) {
- break;
- }
- c = '\n';
- }
- outc(c, outs);
- } while (*argv);
+ outc('\n', out1);
return 0;
}