klibc-bot for Herbert Xu
2020-Mar-28 21:48 UTC
[klibc] [klibc:update-dash] dash: [EXPAND] Propagate EXP_QPAT in subevalvar
Commit-ID: a4e6b2aab296a5adc38372b157a854eb82054020 Gitweb: http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=a4e6b2aab296a5adc38372b157a854eb82054020 Author: Herbert Xu <herbert at gondor.apana.org.au> AuthorDate: Fri, 23 Aug 2013 20:04:12 +1000 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Sat, 28 Mar 2020 21:42:54 +0000 [klibc] dash: [EXPAND] Propagate EXP_QPAT in subevalvar [ dash commit a7c21a6f4cb42d967854cae954efd4ee66bdea9c ] On Tue, Aug 28, 2012 at 01:27:24PM +0000, Todor Vlaev wrote:> > While playing around with parameter expansion I noticed that the > following didn't work in dash (dash 0.5.5.1-7.4ubuntu1) as compared > to bash even though I believe it should be POSIX-compliant: > > my_str=swan; last_char="${my_str#${my_str%?}}"; echo ${last_char} > > If the double quotes are removed, the last character is printed correctly. > > At a quick glance through the commits after the 0.5.5.1 release I saw > the following bug fix. Could it be related? > > 0d7d66039b614b642c775432fd64aa8c11f9a64d > [EXPAND] Fix quoted pattern patch breakageWe need to propagate EXP_QPAT in subevalvar as otherwise a nested parameter expansion within subevalvar may be expanded incorrectly. Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au> Signed-off-by: Ben Hutchings <ben at decadent.org.uk> --- usr/dash/expand.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/usr/dash/expand.c b/usr/dash/expand.c index 355e924e..c4d52606 100644 --- a/usr/dash/expand.c +++ b/usr/dash/expand.c @@ -650,7 +650,8 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla char *(*scan)(char *, char *, char *, char *, int , int); argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ? - (flag & EXP_QUOTED ? EXP_QPAT : EXP_CASE) : 0)); + (flag & (EXP_QUOTED | EXP_QPAT) ? + EXP_QPAT : EXP_CASE) : 0)); STPUTC('\0', expdest); argbackq = saveargbackq; startp = stackblock() + startloc;
Apparently Analagous Threads
- [klibc:update-dash] [EXPAND] Propagate EXP_QPAT in subevalvar
- [klibc:update-dash] parser: Add syntax stack for recursive parsing
- [klibc:update-dash] dash: parser: Add syntax stack for recursive parsing
- [klibc:update-dash] dash: expand: Do not reprocess data when expanding words
- [klibc:update-dash] dash: expand: Merge syntax/quotes in memtodest with flags