summaryrefslogtreecommitdiffstats
path: root/bin/sh/expand.c
diff options
context:
space:
mode:
authorstefanf <stefanf@FreeBSD.org>2006-11-05 18:36:05 +0000
committerstefanf <stefanf@FreeBSD.org>2006-11-05 18:36:05 +0000
commitd02f26394e8614923870babd1d3518dde707c61a (patch)
tree03b401ffcd1d70294e77fc5bb3a1d899575f0939 /bin/sh/expand.c
parentdb8b5b89e2af712352769edf1c4350214fe10657 (diff)
downloadFreeBSD-src-d02f26394e8614923870babd1d3518dde707c61a.zip
FreeBSD-src-d02f26394e8614923870babd1d3518dde707c61a.tar.gz
When parsing an invalid parameter expansion (eg. ${} or ${foo@bar}) do not
issue a syntax error immediately but save the information that it is erroneous for later when the parameter expansion is actually done. This means eg. "false && ${}" will not generate an error which seems to be required by POSIX. Include the invalid parameter expansion in the error message (sometimes abbreviated with ... because recovering it would require a lot of code). PR: 105078 Submitted by: emaste
Diffstat (limited to 'bin/sh/expand.c')
-rw-r--r--bin/sh/expand.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/bin/sh/expand.c b/bin/sh/expand.c
index 7fd2ba5..f26a999 100644
--- a/bin/sh/expand.c
+++ b/bin/sh/expand.c
@@ -763,6 +763,11 @@ record:
goto record;
break;
+ case VSERROR:
+ c = p - var - 1;
+ error("${%.*s%s}: Bad substitution", c, var,
+ (c > 0 && *p != CTLENDVAR) ? "..." : "");
+
default:
abort();
}
OpenPOWER on IntegriCloud