ash: [PARSER] Do not show prompts in expandstr
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 25 Oct 2016 19:17:52 +0000 (21:17 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 25 Oct 2016 19:17:52 +0000 (21:17 +0200)
Upstream patch:

    Date: Thu, 27 Dec 2007 13:57:07 +1100
    [PARSER] Do not show prompts in expandstr

    Once I fixed the previous problem it became apparent that we never dealt
    with prompts with new-lines in them correctly.  The problem is that we
    showed a secondary prompt for each of them.

    This patch disables prompt generation in expandstr.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function                                             old     new   delta
expandstr                                            102     127     +25

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index 527abc7b113a89876f3fbf88e9ef7878388267c2..dc0f607479fabf9ea28cbeb6d9b5f343f183196f 100644 (file)
@@ -12276,11 +12276,17 @@ static const char *
 expandstr(const char *ps)
 {
        union node n;
+       int saveprompt;
 
        /* XXX Fix (char *) cast. It _is_ a bug. ps is variable's value,
         * and token processing _can_ alter it (delete NULs etc). */
        setinputstring((char *)ps);
+
+       saveprompt = doprompt;
+       doprompt = 0;
        readtoken1(pgetc(), PSSYNTAX, nullstr, 0);
+       doprompt = saveprompt;
+
        popfile();
 
        n.narg.type = NARG;