Date: Sun, 13 Oct 1996 22:30:01 -0700 (PDT) From: Steve Price <sprice@hiwaay.net> To: freebsd-bugs Subject: Re: bin/1793: /bin/sh return w/o exitstatus in a function sets exitstatus to true Message-ID: <199610140530.WAA27376@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/1793; it has been noted by GNATS. From: Steve Price <sprice@hiwaay.net> To: george@cia-g.com Cc: freebsd-gnats-submit@FreeBSD.org, GNATS Management <gnats@freefall.freebsd.org>, freebsd-bugs@freefall.freebsd.org, sprice@hiwaay.net Subject: Re: bin/1793: /bin/sh return w/o exitstatus in a function sets exitstatus to true Date: Mon, 14 Oct 1996 00:22:33 -0500 (CDT) On Sun, 13 Oct 1996 george@cia-g.com wrote: # # >Number: 1793 # >Category: bin # >Synopsis: /bin/sh return w/o exitstatus in a function sets exitstatus to true # >Confidential: no # >Severity: non-critical # >Priority: low # >Responsible: freebsd-bugs # >State: open # >Class: sw-bug # >Submitter-Id: current-users # >Arrival-Date: Sun Oct 13 20:10:01 PDT 1996 # >Last-Modified: # >Originator: George Simunovich # >Organization: # >Release: 2.2-current # >Environment: # 2.2-CURRENT FreeBSD 2.2-CURRENT #0: Sat Oct 12 13:26:46 MDT 1996 # >Description: # A return without an exit status in a sh functino sets the exit status # to true. # # bash works as does /bin/sh on FreeBSD 2.1.0-RELEASE # >How-To-Repeat: # When the following script is run it echos "True Condition". # # #!/bin/sh # # Tester() # { # false # return # } # # if Tester # then # echo "True Condition" # else # echo "Not True Condition" # fi # # >Fix: # use bash? # # >Audit-Trail: # >Unformatted: # Try doing a 'return $?' to return the exitstatus of the previously executed command. Attached is a one-liner that fixes the case above but breaks this new case (at least wrt /bin/bash). steve[~]$ cat > testing tester() { return } false if tester then echo "true" else echo "false" fi ^D steve[~] /tmp/sh testing true steve[~] /bin/bash testing false steve[~] I will look into this some more and see what I can find. Steve Index: eval.c =================================================================== RCS file: /home/ncvs/src/bin/sh/eval.c,v retrieving revision 1.6 diff -u -r1.6 eval.c --- eval.c 1996/10/06 15:17:19 1.6 +++ eval.c 1996/10/14 05:02:36 @@ -958,7 +958,7 @@ { int ret; - ret = exitstatus; + ret = oexitstatus; if (argc > 1) ret = number(argv[1]); if (funcnest) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610140530.WAA27376>