shithub: riscv

Download patch

ref: ebf2c5cd6997eb7a200ff7d79734ff0dfd43a748
parent: 12596736e98355fb64702270554e7911dd0d520d
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat Sep 7 14:42:40 EDT 2013

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.

--- a/sys/src/cmd/mk/lex.c
+++ b/sys/src/cmd/mk/lex.c
@@ -67,7 +67,7 @@
 static int
 bquote(Biobuf *bp, Bufblock *buf)
 {
-	int c, line, term;
+	int c, line, term, depth;
 	int start;
 
 	line = mkinline;
@@ -80,9 +80,12 @@
 	} 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;
--