ash: fix $HOME/.profile reading if !ASH_EXPAND_PRMT, take 2
authorDenys Vlasenko <vda.linux@googlemail.com>
Sat, 1 Jul 2017 21:24:48 +0000 (23:24 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 1 Jul 2017 21:26:12 +0000 (23:26 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index 22c726043ea13a0e551698197eab8be49ff4acf1..6d46e3719bba33e03fd36f67315264bc12526178 100644 (file)
@@ -2484,10 +2484,10 @@ setprompt_if(smallint do_set, int whichprompt)
        }
 #if ENABLE_ASH_EXPAND_PRMT
        pushstackmark(&smark, stackblocksize());
-#endif
        putprompt(expandstr(prompt));
-#if ENABLE_ASH_EXPAND_PRMT
        popstackmark(&smark);
+#else
+       putprompt(prompt);
 #endif
 }
 
@@ -11534,9 +11534,7 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs)
        smallint dblquote;
        smallint oldstyle;
        IF_FEATURE_SH_MATH(smallint prevsyntax;) /* syntax before arithmetic */
-#if ENABLE_ASH_EXPAND_PRMT
        smallint pssyntax;   /* we are expanding a prompt string */
-#endif
        int varnest;         /* levels of variables expansion */
        IF_FEATURE_SH_MATH(int arinest;)    /* levels of arithmetic expansion */
        IF_FEATURE_SH_MATH(int parenlevel;) /* levels of parens in arithmetic */
@@ -11548,11 +11546,9 @@ 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;
-#endif
        dblquote = (syntax == DQSYNTAX);
        varnest = 0;
        IF_FEATURE_SH_MATH(arinest = 0;)
@@ -11606,12 +11602,10 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs)
                        } else if (c == '\n') {
                                nlprompt();
                        } else {
-#if ENABLE_ASH_EXPAND_PRMT
                                if (c == '$' && pssyntax) {
                                        USTPUTC(CTLESC, out);
                                        USTPUTC('\\', out);
                                }
-#endif
                                /* Backslash is retained if we are in "str" and next char isn't special */
                                if (dblquote
                                 && c != '\\'