From 3df754990067999706791879c39219e2a62cadd0 Mon Sep 17 00:00:00 2001 From: ajacoutot Date: Sun, 7 Nov 2021 08:26:12 +0000 Subject: [PATCH] Use built-in SECONDS instead of hand roller timer. with a tweak from kn@ ok sthen@ --- etc/rc.d/rc.subr | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/etc/rc.d/rc.subr b/etc/rc.d/rc.subr index eeb34d99333..7809a1b4d21 100644 --- a/etc/rc.d/rc.subr +++ b/etc/rc.d/rc.subr @@ -1,4 +1,4 @@ -# $OpenBSD: rc.subr,v 1.140 2021/11/06 13:33:10 ajacoutot Exp $ +# $OpenBSD: rc.subr,v 1.141 2021/11/07 08:26:12 ajacoutot Exp $ # # Copyright (c) 2010, 2011, 2014-2021 Antoine Jacoutot # Copyright (c) 2010, 2011 Ingo Schwarze @@ -149,20 +149,18 @@ _rc_sendsig() { } _rc_wait() { - local _i=0 if [ X"$1" = X"start" ]; then # prevent hanging the boot sequence trap "_rc_alarm" ALRM - while [ $_i -lt ${daemon_timeout} ]; do + while (( SECONDS < daemon_timeout )); do if _rc_do rc_check; then [ X"${rc_bg}" = X"YES" ] || [ -z "$$" ] && break fi sleep 1 - _i=$((_i+1)) done & wait pkill -ALRM -P $$ return fi - while [ $_i -lt ${daemon_timeout} ]; do + while (( SECONDS < daemon_timeout )); do case "$1" in reload) _rc_do rc_check && return 0 ;; @@ -172,13 +170,12 @@ _rc_wait() { # or a non-default rc_stop() function; do it 2s before # timeout to re-enter the loop one last time which will # give 1s for SIGTERM to terminate the process - ((_i == daemon_timeout-2)) && _rc_do _rc_sendsig TERM + ((SECONDS == daemon_timeout-2)) && _rc_do _rc_sendsig TERM _rc_do rc_check || return 0 ;; *) break ;; esac sleep 1 - _i=$((_i+1)) done # KILL the process -- 2.20.1