Let's keep the same values or at least the order as in dash. There were bugs related to handling incoming chars which match "escape chars". For example:
shell/ash_test/ash-quoting/dollar_squote_bash2.tests shell/ash_test/ash-quoting/unicode_8x_chars.tests shell/ash_test/ash-redir/redir7.tests shell/ash_test/ash-redir/redir8.tests If we change values of "escape chars", dash and ash will start exhibiting *different behavior* if there are still bugs in this area => more PITA when debugging. On Fri, Nov 16, 2018 at 2:48 PM Ron Yorston <r...@pobox.com> wrote: > > During the processing of argument strings ash uses non-ASCII values > to indicate particular constructs. These values are arbitrary and > can be changed at will. > > Sampling a number of permutations showed that the current choice > of values results in the largest code. 11% of samples were just > as bad and 89% were better. The average reduction in code size > was 11.77 bytes. > > function old new delta > cmdputs 393 383 -10 > argstr 1313 1301 -12 > .rodata 168610 168594 -16 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-38) Total: -38 bytes > > v2: For completeness also update comments in syntax_index_table. > > Signed-off-by: Ron Yorston <r...@pobox.com> > --- > shell/ash.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/shell/ash.c b/shell/ash.c > index 90eaf6faf..7ae81ec7a 100644 > --- a/shell/ash.c > +++ b/shell/ash.c > @@ -715,15 +715,15 @@ out2str(const char *p) > /* ============ Parser structures */ > > /* control characters in argument strings */ > -#define CTL_FIRST CTLESC > -#define CTLESC ((unsigned char)'\201') /* escape next character */ > +#define CTL_FIRST CTLENDARI > +#define CTLENDARI ((unsigned char)'\201') > #define CTLVAR ((unsigned char)'\202') /* variable defn */ > -#define CTLENDVAR ((unsigned char)'\203') > -#define CTLBACKQ ((unsigned char)'\204') > -#define CTLARI ((unsigned char)'\206') /* arithmetic expression */ > -#define CTLENDARI ((unsigned char)'\207') > -#define CTLQUOTEMARK ((unsigned char)'\210') > -#define CTL_LAST CTLQUOTEMARK > +#define CTLESC ((unsigned char)'\203') /* escape next character */ > +#define CTLQUOTEMARK ((unsigned char)'\204') > +#define CTLENDVAR ((unsigned char)'\205') > +#define CTLBACKQ ((unsigned char)'\206') > +#define CTLARI ((unsigned char)'\207') /* arithmetic expression */ > +#define CTL_LAST CTLARI > > /* variable substitution byte (follows CTLVAR) */ > #define VSTYPE 0x0f /* type of variable substitution */ > @@ -3156,14 +3156,14 @@ static const uint8_t syntax_index_table[] ALIGN1 = { > /* 126 "~" */ CWORD_CCTL_CCTL_CWORD, > /* 127 del */ CWORD_CWORD_CWORD_CWORD, > /* 128 0x80 */ CWORD_CWORD_CWORD_CWORD, > - /* 129 CTLESC */ CCTL_CCTL_CCTL_CCTL, > + /* 129 CTLENDARI */ CCTL_CCTL_CCTL_CCTL, > /* 130 CTLVAR */ CCTL_CCTL_CCTL_CCTL, > - /* 131 CTLENDVAR */ CCTL_CCTL_CCTL_CCTL, > - /* 132 CTLBACKQ */ CCTL_CCTL_CCTL_CCTL, > - /* 133 CTLQUOTE */ CCTL_CCTL_CCTL_CCTL, > - /* 134 CTLARI */ CCTL_CCTL_CCTL_CCTL, > - /* 135 CTLENDARI */ CCTL_CCTL_CCTL_CCTL, > - /* 136 CTLQUOTEMARK */ CCTL_CCTL_CCTL_CCTL, > + /* 131 CTLESC */ CCTL_CCTL_CCTL_CCTL, > + /* 132 CTLQUOTEMARK */ CCTL_CCTL_CCTL_CCTL, > + /* 133 CTLENDVAR */ CCTL_CCTL_CCTL_CCTL, > + /* 134 CTLBACKQ */ CCTL_CCTL_CCTL_CCTL, > + /* 135 CTLARI */ CCTL_CCTL_CCTL_CCTL, > + /* 136 */ CWORD_CWORD_CWORD_CWORD, > /* 137 */ CWORD_CWORD_CWORD_CWORD, > /* 138 */ CWORD_CWORD_CWORD_CWORD, > /* 139 */ CWORD_CWORD_CWORD_CWORD, > -- > 2.19.1 > > _______________________________________________ > busybox mailing list > busybox@busybox.net > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox