From 543f63b8dc758a4508506526535f62954136bc87 Mon Sep 17 00:00:00 2001 From: jilles Date: Fri, 27 May 2011 15:56:13 +0000 Subject: sh: Fix unquoted $@/$* if IFS=''. If IFS is null, unquoted $@/$* should still expand to separate words. This differs from quoted $@ (which does not depend on IFS) in that pathname generation is performed and empty words are removed. --- bin/sh/expand.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'bin') diff --git a/bin/sh/expand.c b/bin/sh/expand.c index b3c4962..108a77c 100644 --- a/bin/sh/expand.c +++ b/bin/sh/expand.c @@ -761,7 +761,8 @@ again: /* jump here after setting a variable with ${var=text} */ break; record: recordregion(startloc, expdest - stackblock(), - varflags & VSQUOTE); + varflags & VSQUOTE || (ifsset() && ifsval()[0] == '\0' && + (*var == '@' || *var == '*'))); break; case VSPLUS: @@ -947,7 +948,9 @@ numvar: sep = ' '; for (ap = shellparam.p ; (p = *ap++) != NULL ; ) { strtodest(p, flag, subtype, quoted); - if (*ap && sep) + if (!*ap) + break; + if (sep || (flag & EXP_FULL && !quoted && **ap != '\0')) STPUTC(sep, expdest); } break; -- cgit v1.1