From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14767 invoked from network); 31 Mar 2005 17:14:40 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 31 Mar 2005 17:14:40 -0000 Received: (qmail 24209 invoked from network); 31 Mar 2005 17:14:34 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 31 Mar 2005 17:14:34 -0000 Received: (qmail 7892 invoked by alias); 31 Mar 2005 17:14:30 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 21077 Received: (qmail 7878 invoked from network); 31 Mar 2005 17:14:28 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 31 Mar 2005 17:14:28 -0000 Received: (qmail 23887 invoked from network); 31 Mar 2005 17:14:28 -0000 Received: from dan.emsphone.com (199.67.51.101) by a.mx.sunsite.dk with SMTP; 31 Mar 2005 17:14:23 -0000 Received: (from dan@localhost) by dan.emsphone.com (8.13.1/8.13.3) id j2VHELBE083623 for zsh-workers@sunsite.dk; Thu, 31 Mar 2005 11:14:21 -0600 (CST) (envelope-from dan) Date: Thu, 31 Mar 2005 11:14:21 -0600 From: Dan Nelson To: zsh-workers@sunsite.dk Subject: Re: Parse errors don't cause a non-zero exit code? Message-ID: <20050331171421.GG46288@dan.emsphone.com> References: <20050329231719.GH51674@dan.emsphone.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050329231719.GH51674@dan.emsphone.com> X-OS: FreeBSD 5.4-PRERELEASE X-message-flag: Outlook Error User-Agent: Mutt/1.5.8i X-Spam-Checker-Version: SpamAssassin 3.0.2 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, score=-2.6 required=6.0 tests=BAYES_00 autolearn=ham version=3.0.2 X-Spam-Hits: -2.6 In the last episode (Mar 29), Dan Nelson said: > $ echo "'" > /tmp/test ; zsh -f /tmp/test ; echo $? > /tmp/test:2: unmatched ' > 0 > > ksh93, ash, and bash all return non-zero here, and it looks like > http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_08 > wants a non-zero result also. I'm thinking something like this, but I don't know enough about zsh internals to say that propagating errflag into lastval here is the right fix. It doesn't break the testsuite at least: --- Src/init.c~ Thu Mar 31 00:49:30 2005 +++ Src/init.c Thu Mar 31 00:49:30 2005 @@ -983,6 +983,8 @@ init_misc(void) bshin = fdopen(SHIN, "r"); execstring(cmd, 0, 1); stopmsg = 1; + if (errflag) + lastval = errflag; zexit(lastval, 0); } @@ -1277,6 +1277,8 @@ zsh_main(UNUSED(int argc), char **argv) while (tok != ENDINPUT && (tok != LEXERR || isset(SHINSTDIN))); if (tok == LEXERR) { stopmsg = 1; + if (errflag) + lastval = errflag; zexit(lastval, 0); } if (!(isset(IGNOREEOF) && interact)) { --- Src/lex.c~ Thu Mar 31 00:58:03 2005 +++ Src/lex.c Thu Mar 31 00:58:03 2005 @@ -330,7 +330,6 @@ lexrestore(void) ecssub = lstack->ecssub; ecnfunc = lstack->ecnfunc; hlinesz = lstack->hlinesz; - errflag = 0; ln = lstack->next; free(lstack); -- Dan Nelson dnelson@allantgroup.com