ash: if !ENABLE_ASH_EXPAND_PRMT, disable PSSYNTAX code
authorDenys Vlasenko <vda.linux@googlemail.com>
Sat, 29 Jul 2017 20:58:44 +0000 (22:58 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 29 Jul 2017 20:58:44 +0000 (22:58 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index e2b4eee955801bb0a2af13fb1a6c707e1e57c839..52fcc7944214c774dcf4dfe85ac6ae9af4db1d9a 100644 (file)
@@ -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);
                                }