diff options
author | Ron Yorston <rmy@pobox.com> | 2015-05-18 09:51:35 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-05-18 09:51:35 +0200 |
commit | eb6b48ba743d510ad9e6f9c3a8b3899d1eb9b5f3 (patch) | |
tree | 7db919fa839cfddeae720dccb60f8e969bd5d6c9 /shell | |
parent | d68d1fbd6cb31a61975112acb1c792735a063847 (diff) | |
download | busybox-w32-eb6b48ba743d510ad9e6f9c3a8b3899d1eb9b5f3.tar.gz busybox-w32-eb6b48ba743d510ad9e6f9c3a8b3899d1eb9b5f3.tar.bz2 busybox-w32-eb6b48ba743d510ad9e6f9c3a8b3899d1eb9b5f3.zip |
ash: perform tilde expansion in all parameter expansion words
Previously tilde expansion was not carried out for =?#% expansion words.
Test case:
a=~root:~root
echo ${a#~root}
Old result:
/root:/root
New result:
:/root
Based on commit dd721f71 from git://git.kernel.org/pub/scm/utils/dash/dash.git
by Herbert Xu
function old new delta
subevalvar 1152 1153 +1
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 4 | ||||
-rw-r--r-- | shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.right | 1 | ||||
-rwxr-xr-x | shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.tests | 2 |
3 files changed, 5 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c index a81922add..4c43f1f30 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -6361,8 +6361,8 @@ subevalvar(char *p, char *varname, int strloc, int subtype, | |||
6361 | // p, varname, strloc, subtype, startloc, varflags, quotes); | 6361 | // p, varname, strloc, subtype, startloc, varflags, quotes); |
6362 | 6362 | ||
6363 | herefd = -1; | 6363 | herefd = -1; |
6364 | argstr(p, (subtype != VSASSIGN && subtype != VSQUESTION) ? EXP_CASE : 0, | 6364 | argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ? |
6365 | var_str_list); | 6365 | EXP_CASE : 0), var_str_list); |
6366 | STPUTC('\0', expdest); | 6366 | STPUTC('\0', expdest); |
6367 | herefd = saveherefd; | 6367 | herefd = saveherefd; |
6368 | argbackq = saveargbackq; | 6368 | argbackq = saveargbackq; |
diff --git a/shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.right b/shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.right new file mode 100644 index 000000000..2357750c5 --- /dev/null +++ b/shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.right | |||
@@ -0,0 +1 @@ | |||
:/root | |||
diff --git a/shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.tests b/shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.tests new file mode 100755 index 000000000..6605315d0 --- /dev/null +++ b/shell/ash_test/ash-vars/var-expand-tilde-in-parameter-expansion.tests | |||
@@ -0,0 +1,2 @@ | |||
1 | a=~root:~root | ||
2 | echo ${a#~root} | ||