diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/expand.c | 10 | ||||
-rw-r--r-- | src/expand.h | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index 7992485..dacc9b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-09-25 Herbert Xu <herbert@gondor.apana.org.au> + + * Do not expand tilde in parameter expansion within quotes. + 2007-09-24 Herbert Xu <herbert@gondor.apana.org.au> * Do not quote back slashes in parameter expansions outside quotes. diff --git a/src/expand.c b/src/expand.c index 1443c14..c9f09ff 100644 --- a/src/expand.c +++ b/src/expand.c @@ -278,7 +278,7 @@ argstr(char *p, int flag) const char *reject = spclchars; int c; int quotes = flag & QUOTES_ESC; - int breakall = flag & EXP_WORD; + int breakall = (flag & (EXP_WORD | EXP_QUOTED)) == EXP_WORD; int inquotes; size_t length; int startloc; @@ -296,8 +296,6 @@ argstr(char *p, int flag) flag &= ~EXP_TILDE; tilde: q = p; - if (*q == (char)CTLESC && (flag & EXP_QWORD)) - q++; if (*q == '~') p = exptilde(p, q, flag); } @@ -780,10 +778,8 @@ again: if (subtype == VSMINUS) { vsplus: if (varlen < 0) { - argstr( - p, flag | EXP_TILDE | - (quoted ? EXP_QWORD : EXP_WORD) - ); + argstr(p, flag | EXP_TILDE | EXP_WORD | + (quoted ? EXP_QUOTED : 0)); goto end; } if (easy) diff --git a/src/expand.h b/src/expand.h index 6b7d607..be7ec6f 100644 --- a/src/expand.h +++ b/src/expand.h @@ -56,7 +56,7 @@ struct arglist { #define EXP_RECORD 0x20 /* need to record arguments for ifs breakup */ #define EXP_VARTILDE2 0x40 /* expand tildes after colons only */ #define EXP_WORD 0x80 /* expand word in parameter expansion */ -#define EXP_QWORD 0x100 /* expand word in quoted parameter expansion */ +#define EXP_QUOTED 0x100 /* expand word in double quotes */ union node; |