diff options
| author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-09-24 16:22:25 +0800 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2007-09-24 16:22:25 +0800 |
| commit | dd721f71292be8ae2ef0ac1d2d8910b1541dcf88 (patch) | |
| tree | 17c4fecd06f5e6e90308537d7d05a7703504d3b4 /src | |
| parent | [EXPAND] Do not quote back slashes in parameter expansions outside quotes (diff) | |
| download | dash-dd721f71292be8ae2ef0ac1d2d8910b1541dcf88.tar.gz dash-dd721f71292be8ae2ef0ac1d2d8910b1541dcf88.zip | |
[EXPAND] Perform tilde expansion in all parameter expansion words
Previously tilde expansion was not carried out for =?#% expansion words.
This is contrary to the POSIX specification.
Test case:
a=~root:~root
echo ${a#~root}
Old result:
/root:/root
New result:
:/root
Diffstat (limited to 'src')
| -rw-r--r-- | src/expand.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/expand.c b/src/expand.c index 3956112..1443c14 100644 --- a/src/expand.c +++ b/src/expand.c @@ -683,7 +683,8 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla char *(*scan)(char *, char *, char *, char *, int , int); herefd = -1; - argstr(p, subtype != VSASSIGN && subtype != VSQUESTION ? EXP_CASE : 0); + argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ? + EXP_CASE : 0)); STPUTC('\0', expdest); herefd = saveherefd; argbackq = saveargbackq; |