From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5934 invoked from network); 25 Nov 1999 19:16:53 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 25 Nov 1999 19:16:53 -0000 Received: (qmail 28919 invoked by alias); 25 Nov 1999 19:16:48 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8783 Received: (qmail 28910 invoked from network); 25 Nov 1999 19:16:46 -0000 From: "Bart Schaefer" Message-Id: <991125191641.ZM7582@candle.brasslantern.com> Date: Thu, 25 Nov 1999 19:16:41 +0000 In-Reply-To: <991125190258.ZM7311@candle.brasslantern.com> Comments: In reply to "Bart Schaefer" "PATCH: 3.1.6-pws-9: Line numbers wrong on "unmatched" errors" (Nov 25, 7:02pm) References: <991125190258.ZM7311@candle.brasslantern.com> X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.auc.dk Subject: Re: PATCH: 3.1.6-pws-9: Line numbers wrong on "unmatched" errors MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Nov 25, 7:02pm, Bart Schaefer wrote: } Subject: PATCH: 3.1.6-pws-9: Line numbers wrong on "unmatched" errors } } The ideal thing here would be to print the error message *AFTER* the } hungetc(c); at the "brk:" label, but that requires too much rewriting. Immediately after I sent that, I thought of the obvious way to do it. This goes on top of the previous patch, though only to back it out. Index: Src/lex.c =================================================================== @@ -805,7 +805,7 @@ { int bct = 0, pct = 0, brct = 0, fdpar = 0; int intpos = 1, in_brace_param = 0; - int peek, inquote; + int peek, inquote, unmatched = 0; #ifdef DEBUG int ocmdsp = cmdsp; #endif @@ -1119,9 +1119,7 @@ } ALLOWHIST if (c != '\'') { - lineno -= (c == '\n'); - zerr("unmatched \'", NULL, 0); - lineno += (c == '\n'); + unmatched = '\''; peek = LEXERR; cmdpop(); goto brk; @@ -1143,9 +1141,7 @@ c = dquote_parse('"', sub); cmdpop(); if (c) { - lineno -= (c == '\n'); - zerr("unmatched \"", NULL, 0); - lineno += (c == '\n'); + unmatched = '"'; peek = LEXERR; goto brk; } @@ -1182,9 +1178,7 @@ ALLOWHIST cmdpop(); if (c != '`') { - lineno -= (c == '\n'); - zerr("unmatched `", NULL, 0); - lineno += (c == '\n'); + unmatched = '`'; peek = LEXERR; goto brk; } @@ -1201,6 +1195,8 @@ } brk: hungetc(c); + if (unmatched) + zerr("unmatched %c", NULL, unmatched); if (in_brace_param) { while(bct-- >= in_brace_param) cmdpop(); -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com