The branch main has been updated by rcm:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=b5f6beefa00abf9ef51d4c53563f46c5a388a18e

commit b5f6beefa00abf9ef51d4c53563f46c5a388a18e
Author:     R. Christian McDonald <r...@freebsd.org>
AuthorDate: 2024-09-10 15:58:57 +0000
Commit:     R. Christian McDonald <r...@freebsd.org>
CommitDate: 2024-09-10 18:58:47 +0000

    rc.subr: ensure run_rc_script return code is not masked by DebugOff
    
    Ensure that run_rc_script returns the true return code of the
    rc command and not the return code of DebugOff
    
    Reviewed by:    sjg
    Approved by:    kp
    MFC after:      1 week
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D46626
---
 libexec/rc/rc.subr | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index 145b626aa01e..4bb2333addc2 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -1844,7 +1844,7 @@ run_rc_script()
                                  trap "echo Script $_file running >&2" 29
                                  set $_arg; . $_file )
                        fi
-                       DebugOff $_file $_file:$_arg rc:${_file##*/} 
rc:${_file##*/}:$_arg ${_file##*/} ${_file##*/}:$_arg
+                       DebugOff rc=$? $_file $_file:$_arg rc:${_file##*/} 
rc:${_file##*/}:$_arg ${_file##*/} ${_file##*/}:$_arg
                fi
                ;;
        esac
@@ -2769,7 +2769,18 @@ $_DEBUG_SH vdot /libexec/debug.sh
 # safe_eval.sh are not found.
 if ! have DebugOn; then
        DebugOn() { return 0; }
-       DebugOff() { return 0; }
+       DebugOff() {
+               local _rc=0
+               while :
+               do
+                       case "$1" in
+                       -[eo]) shift;; # ignore it
+                       rc=*) eval "_$1"; shift;;
+                       *) break;;
+                       esac
+               done
+               return $_rc
+       }
 fi
 if ! have save_dot; then
        safe_dot() { dot "$@"; }

Reply via email to