summaryrefslogtreecommitdiff
path: root/Src/subst.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/subst.c')
-rw-r--r--Src/subst.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/Src/subst.c b/Src/subst.c
index 55b5444c6..eef0dc75b 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -53,16 +53,25 @@ keyvalpairelement(LinkList list, LinkNode node)
if ((start = (char *)getdata(node)) &&
start[0] == Inbrack &&
(end = strchr(start+1, Outbrack)) &&
- end[1] == Equals) {
+ /* ..]=value or ]+=Value */
+ (end[1] == Equals ||
+ (end[1] == '+' && end[2] == Equals))) {
static char marker[2] = { Marker, '\0' };
+ static char marker_plus[3] = { Marker, '+', '\0' };
*end = '\0';
dat = start + 1;
singsub(&dat);
untokenize(dat);
- setdata(node, marker);
- node = insertlinknode(list, node, dat);
- dat = end + 2;
+ if (end[1] == '+') {
+ setdata(node, marker_plus);
+ node = insertlinknode(list, node, dat);
+ dat = end + 3;
+ } else {
+ setdata(node, marker);
+ node = insertlinknode(list, node, dat);
+ dat = end + 2;
+ }
singsub(&dat);
untokenize(dat);
return insertlinknode(list, node, dat);