* case $? fails @ 1997-02-27 19:08 Roderick Schertler 1997-02-27 21:50 ` Zoltan T. Hidvegi 0 siblings, 1 reply; 6+ messages in thread From: Roderick Schertler @ 1997-02-27 19:08 UTC (permalink / raw) To: zsh-workers Running this script #!/bin/zsh -f print "version $ZSH_VERSION" false case $? in 0) print "case says \$? is 0";; esac false print "\$? was actually $?" gives me this buggy result version 3.0.3-test4 case says $? is 0 $? was actually 1 on both freebsd and dgux. -- Roderick Schertler roderick@argon.org ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: case $? fails 1997-02-27 19:08 case $? fails Roderick Schertler @ 1997-02-27 21:50 ` Zoltan T. Hidvegi 1997-02-28 16:20 ` Bart Schaefer [not found] ` <hzoli@vnet.ibm.com> 0 siblings, 2 replies; 6+ messages in thread From: Zoltan T. Hidvegi @ 1997-02-27 21:50 UTC (permalink / raw) To: Roderick Schertler; +Cc: zsh-workers Roderick Schertler wrote: > Running this script > > #!/bin/zsh -f > > print "version $ZSH_VERSION" > > false > case $? in > 0) print "case says \$? is 0";; > esac > > false > print "\$? was actually $?" > > gives me this buggy result > > version 3.0.3-test4 > case says $? is 0 > $? was actually 1 while has the same problem unfortunately. Similarily for ((i=$?;;)) do echo $i; break; done prints zero. The patch below fixes these. The for syntax is new in zsh-3.1 so the first two hunks should be removed if the patch is applied against zsh-3.0.3-test4. Note that the case bug was not present in zsh-3.0.2 but the while bug was there. Zoltan *** Src/loop.c 1997/02/11 14:23:47 3.1.2.0 --- Src/loop.c 1997/02/27 21:26:13 *************** *** 41,47 **** int val; LinkList args; - lastval = 0; node = cmd->u.forcmd; args = cmd->args; if (node->condition) { --- 41,46 ---- *************** *** 58,63 **** --- 57,63 ---- for (x = pparams; *x; x++) addlinknode(args, ztrdup(*x)); } + lastval = 0; loops++; pushheap(); for (;;) { *************** *** 267,277 **** olderrexit = noerrexit; node = cmd->u.whilecmd; ! lastval = 0; pushheap(); loops++; for (;;) { - oldval = lastval; list = (List) dupstruct(node->cont); noerrexit = 1; execlist(list, 1, 0); --- 267,276 ---- olderrexit = noerrexit; node = cmd->u.whilecmd; ! oldval = 0; pushheap(); loops++; for (;;) { list = (List) dupstruct(node->cont); noerrexit = 1; execlist(list, 1, 0); *************** *** 295,300 **** --- 294,300 ---- lastval = 1; break; } + oldval = lastval; } popheap(); loops--; *************** *** 381,390 **** l = node->lists; p = node->pats; - lastval = 0; word = *p++; singsub(&word); untokenize(word); if (node) { while (*p) { --- 381,390 ---- l = node->lists; p = node->pats; word = *p++; singsub(&word); untokenize(word); + lastval = 0; if (node) { while (*p) { ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: case $? fails 1997-02-27 21:50 ` Zoltan T. Hidvegi @ 1997-02-28 16:20 ` Bart Schaefer 1997-02-28 16:23 ` Zoltan T. Hidvegi [not found] ` <hzoli@vnet.ibm.com> 1 sibling, 1 reply; 6+ messages in thread From: Bart Schaefer @ 1997-02-28 16:20 UTC (permalink / raw) To: Zoltan T. Hidvegi, zsh-workers On Feb 27, 4:50pm, (Zoltan T. Hidvegi) wrote: } Subject: Re: case $? fails } } prints zero. The patch below fixes these. The for syntax is new in } zsh-3.1 so the first two hunks should be removed if the patch is applied } against zsh-3.0.3-test4. The first two hunks? Or the second two hunks? I've now tried this a couple of different ways and can't get it to apply to 3.0.3-test4. Could you send a patch specifically for that? -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.nbn.com/people/lantern ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: case $? fails 1997-02-28 16:20 ` Bart Schaefer @ 1997-02-28 16:23 ` Zoltan T. Hidvegi 1997-02-28 17:52 ` Bart Schaefer 0 siblings, 1 reply; 6+ messages in thread From: Zoltan T. Hidvegi @ 1997-02-28 16:23 UTC (permalink / raw) To: Zsh workers list Bart Schaefer wrote: > } prints zero. The patch below fixes these. The for syntax is new in > } zsh-3.1 so the first two hunks should be removed if the patch is applied > } against zsh-3.0.3-test4. > > The first two hunks? Or the second two hunks? > > I've now tried this a couple of different ways and can't get it to apply > to 3.0.3-test4. Could you send a patch specifically for that? It applied cleanly for me after removing the first two hunks. But here is the patch for 3.0.3-test4 anyway. Zoltan *** loop.c 1996/12/29 01:47:11 3.0.2.1 --- loop.c 1997/02/28 16:16:48 *************** *** 168,178 **** olderrexit = noerrexit; node = cmd->u.whilecmd; ! lastval = 0; pushheap(); loops++; for (;;) { - oldval = lastval; list = (List) dupstruct(node->cont); noerrexit = 1; execlist(list, 1, 0); --- 168,177 ---- olderrexit = noerrexit; node = cmd->u.whilecmd; ! oldval = 0; pushheap(); loops++; for (;;) { list = (List) dupstruct(node->cont); noerrexit = 1; execlist(list, 1, 0); *************** *** 196,201 **** --- 195,201 ---- lastval = 1; break; } + oldval = lastval; } popheap(); loops--; *************** *** 282,291 **** l = node->lists; p = node->pats; - lastval = 0; word = *p++; singsub(&word); untokenize(word); if (node) { while (*p) { --- 282,291 ---- l = node->lists; p = node->pats; word = *p++; singsub(&word); untokenize(word); + lastval = 0; if (node) { while (*p) { ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: case $? fails 1997-02-28 16:23 ` Zoltan T. Hidvegi @ 1997-02-28 17:52 ` Bart Schaefer 0 siblings, 0 replies; 6+ messages in thread From: Bart Schaefer @ 1997-02-28 17:52 UTC (permalink / raw) To: Zoltan T. Hidvegi, Zsh workers list On Feb 28, 11:23am, (Zoltan T. Hidvegi) wrote: } Subject: Re: case $? fails } } Bart Schaefer wrote: } > I've now tried this a couple of different ways and can't get it to apply } > to 3.0.3-test4. Could you send a patch specifically for that? } } It applied cleanly for me after removing the first two hunks. But here is } the patch for 3.0.3-test4 anyway. Zoltan, all the tabs in your email message have been converted to spaces. That's why the patch failed to apply for me; this latest one fails, too. If I re-tabify with `unexpand -a` then it applies. I hope this doesn't have something to do with mailing from IBM's network. If you can't figure out why this is happening, you may have to start base64-ing or uuencoding you patches. :-( -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.nbn.com/people/lantern ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <hzoli@vnet.ibm.com>]
* Re: case $? fails [not found] ` <hzoli@vnet.ibm.com> @ 1997-02-28 16:31 ` Bart Schaefer 0 siblings, 0 replies; 6+ messages in thread From: Bart Schaefer @ 1997-02-28 16:31 UTC (permalink / raw) To: zsh-workers On Feb 27, 4:50pm, (Zoltan T. Hidvegi) wrote: } Subject: Re: case $? fails } } while has the same problem unfortunately. Similarily } for ((i=$?;;)) do echo $i; break; done } prints zero. The patch below fixes these. The for syntax is new in } zsh-3.1 so the first two hunks should be removed if the patch is applied } against zsh-3.0.3-test4. Here's what I came up with as a patch for 3.0.3-test4 by manually applying the patch from Zoltan. I *did* include the first two hunks (with one additional change that moved the increment of the "loops" counter, to match the context in the patch) -- so this patch may be flawed. Can somebody tell me if this patch is correct? Or have I broken something that I haven't encountered yet? --- Src/loop.c.orig Fri Jan 31 21:24:10 1997 +++ Src/loop.c Fri Feb 28 08:25:09 1997 @@ -40,8 +40,6 @@ char *str; LinkList args; - loops++; - lastval = 0; node = cmd->u.forcmd; args = cmd->args; if (!node->inflag) { @@ -51,6 +49,8 @@ for (x = pparams; *x; x++) addlinknode(args, ztrdup(*x)); } + lastval = 0; + loops++; pushheap(); while ((str = (char *)ugetnode(args))) { setsparam(node->name, ztrdup(str)); @@ -168,11 +168,10 @@ olderrexit = noerrexit; node = cmd->u.whilecmd; - lastval = 0; + oldval = 0; pushheap(); loops++; for (;;) { - oldval = lastval; list = (List) dupstruct(node->cont); noerrexit = 1; execlist(list, 1, 0); @@ -196,6 +195,7 @@ lastval = 1; break; } + oldval = lastval; } popheap(); loops--; @@ -282,10 +282,10 @@ l = node->lists; p = node->pats; - lastval = 0; word = *p++; singsub(&word); untokenize(word); + lastval = 0; if (node) { while (*p) { -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.nbn.com/people/lantern ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~1997-02-28 17:51 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 1997-02-27 19:08 case $? fails Roderick Schertler 1997-02-27 21:50 ` Zoltan T. Hidvegi 1997-02-28 16:20 ` Bart Schaefer 1997-02-28 16:23 ` Zoltan T. Hidvegi 1997-02-28 17:52 ` Bart Schaefer [not found] ` <hzoli@vnet.ibm.com> 1997-02-28 16:31 ` Bart Schaefer
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).