From ebf2c5cd6997eb7a200ff7d79734ff0dfd43a748 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 7 Sep 2013 18:42:40 +0200 Subject: [PATCH] mk: handle rc blocks in shell quote this is so we cna handle: foo = `{echo `{echo bar}} thanks to erik and friedrich psiorz on 9fans for bringing the issue up. --- sys/src/cmd/mk/lex.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/src/cmd/mk/lex.c b/sys/src/cmd/mk/lex.c index d942918f3..5c4bc99be 100644 --- a/sys/src/cmd/mk/lex.c +++ b/sys/src/cmd/mk/lex.c @@ -67,7 +67,7 @@ eof: static int bquote(Biobuf *bp, Bufblock *buf) { - int c, line, term; + int c, line, term, depth; int start; line = mkinline; @@ -80,9 +80,12 @@ bquote(Biobuf *bp, Bufblock *buf) } else term = '`'; /* sh style */ + depth = 1; start = buf->current-buf->start; for(;c > 0; c = nextrune(bp, 0)){ - if(c == term){ + if(c == '{' && term == '}') + depth++; + if(c == term && --depth == 0){ insert(buf, '\n'); insert(buf,0); buf->current = buf->start+start;