On Sat Sep  7 04:23:05 EDT 2013, f.psi...@gmx.de wrote:
> I don't think that the behavior is really unexpected ... the `{...} part
> is interpreted by mk, but not the text between the braces. You probably
> need to quote it if it contains braces itself.
> 
after looking at the code, it appears to me that this is an oversight,
that does not effect bourne-shell compatabiles.  we simply need to
count the `{s and subtract the }s, and when the count reachs 0
we're done.

(it appears that ' quoting is incorrect for bourne shell compatables,
and the interpretation of \ is incorrect for rc.)

- erik

; diffy -c lex.c
/n/dump/2013/0907/sys/src/cmd/mk/lex.c:67,73 - lex.c:67,73
  static int
  bquote(Biobuf *bp, Bufblock *buf)
  {
-       int c, line, term;
+       int c, line, term, depth;
        int start;
  
        line = mkinline;
/n/dump/2013/0907/sys/src/cmd/mk/lex.c:79,88 - lex.c:79,91
                        ;
        } else
                term = '`';             /* sh style */
+       depth = 1;
  
        start = buf->current-buf->start;
        for(;c > 0; c = nextrune(bp, 0)){
-               if(c == term){
+               if(term == '}' && c == '`')
+                       depth++;
+               if(c == term && --depth == 0){
                        insert(buf, '\n');
                        insert(buf,0);
                        buf->current = buf->start+start;

Reply via email to