From 5f0a75f24b5afdedf5b67a7f42184ed196e1a5c9 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 29 Jul 2017 22:58:44 +0200 Subject: ash: if !ENABLE_ASH_EXPAND_PRMT, disable PSSYNTAX code Signed-off-by: Denys Vlasenko --- shell/ash.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'shell') diff --git a/shell/ash.c b/shell/ash.c index e2b4eee95..52fcc7944 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -2494,7 +2494,9 @@ static const char *expandstr(const char *ps, int syntax_type); #define DQSYNTAX 1 /* in double quotes */ #define SQSYNTAX 2 /* in single quotes */ #define ARISYNTAX 3 /* in arithmetic */ -#define PSSYNTAX 4 /* prompt. never passed to SIT() */ +#if ENABLE_ASH_EXPAND_PRMT +# define PSSYNTAX 4 /* prompt. never passed to SIT() */ +#endif /* PSSYNTAX expansion is identical to DQSYNTAX, except keeping '\$' as '\$' */ /* @@ -11594,9 +11596,13 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs) bqlist = NULL; quotef = 0; IF_FEATURE_SH_MATH(prevsyntax = 0;) +#if ENABLE_ASH_EXPAND_PRMT pssyntax = (syntax == PSSYNTAX); if (pssyntax) syntax = DQSYNTAX; +#else + pssyntax = 0; /* constant */ +#endif dblquote = (syntax == DQSYNTAX); varnest = 0; IF_FEATURE_SH_MATH(arinest = 0;) @@ -11650,7 +11656,7 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs) } else if (c == '\n') { nlprompt(); } else { - if (c == '$' && pssyntax) { + if (pssyntax && c == '$') { USTPUTC(CTLESC, out); USTPUTC('\\', out); } -- cgit v1.2.3