Module Name:    src
Committed By:   martin
Date:           Sat Dec  7 18:45:20 UTC 2024

Modified Files:
        src/distrib/sets/lists/man: mi
        src/distrib/sets/lists/manhtml: mi
        src/etc: rc.shutdown
        src/share/man/man8: Makefile rc.8

Log Message:
Now that shutdown(8) provides info why we are shutting down to the
shutdown scripts, add an optional local hook /etc/rc.shutdown.final
called last in the shutdown sequence and passed the reason.

This allows for easy local integration of special UPS commands before
we power down (e.g. to restart the UPS after some delay in case
utility power is restored too early and the machine has already powered
down and will only restart when it's power input is restored after being
off for a few seconds)


To generate a diff of this commit:
cvs rdiff -u -r1.1790 -r1.1791 src/distrib/sets/lists/man/mi
cvs rdiff -u -r1.12 -r1.13 src/distrib/sets/lists/manhtml/mi
cvs rdiff -u -r1.9 -r1.10 src/etc/rc.shutdown
cvs rdiff -u -r1.111 -r1.112 src/share/man/man8/Makefile
cvs rdiff -u -r1.39 -r1.40 src/share/man/man8/rc.8

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/man/mi
diff -u src/distrib/sets/lists/man/mi:1.1790 src/distrib/sets/lists/man/mi:1.1791
--- src/distrib/sets/lists/man/mi:1.1790	Mon Nov  4 20:43:38 2024
+++ src/distrib/sets/lists/man/mi	Sat Dec  7 18:45:20 2024
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1790 2024/11/04 20:43:38 brad Exp $
+# $NetBSD: mi,v 1.1791 2024/12/07 18:45:20 martin Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 ./etc/mtree/set.man				man-sys-root
@@ -3283,6 +3283,7 @@
 ./usr/share/man/cat8/rc.d.0			man-rc-catman		.cat
 ./usr/share/man/cat8/rc.local.0			man-rc-catman		.cat
 ./usr/share/man/cat8/rc.shutdown.0		man-rc-catman		.cat
+./usr/share/man/cat8/rc.shutdown.final.0	man-rc-catman		.cat
 ./usr/share/man/cat8/rc.subr.0			man-rc-catman		.cat
 ./usr/share/man/cat8/rcorder.0			man-sysutil-catman	.cat
 ./usr/share/man/cat8/rdate.0			man-netutil-catman	.cat
@@ -6850,6 +6851,7 @@
 ./usr/share/man/man8/rc.d.8			man-rc-man		.man
 ./usr/share/man/man8/rc.local.8			man-rc-man		.man
 ./usr/share/man/man8/rc.shutdown.8		man-rc-man		.man
+./usr/share/man/man8/rc.shutdown.final.8	man-rc-man		.man
 ./usr/share/man/man8/rc.subr.8			man-rc-man		.man
 ./usr/share/man/man8/rcorder.8			man-sysutil-man		.man
 ./usr/share/man/man8/rdate.8			man-netutil-man		.man

Index: src/distrib/sets/lists/manhtml/mi
diff -u src/distrib/sets/lists/manhtml/mi:1.12 src/distrib/sets/lists/manhtml/mi:1.13
--- src/distrib/sets/lists/manhtml/mi:1.12	Mon Nov  4 20:43:39 2024
+++ src/distrib/sets/lists/manhtml/mi	Sat Dec  7 18:45:20 2024
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.12 2024/11/04 20:43:39 brad Exp $
+# $NetBSD: mi,v 1.13 2024/12/07 18:45:20 martin Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -2915,6 +2915,7 @@
 ./usr/share/man/html8/rc.html			man-rc-htmlman		html
 ./usr/share/man/html8/rc.local.html		man-rc-htmlman		html
 ./usr/share/man/html8/rc.shutdown.html		man-rc-htmlman		html
+./usr/share/man/html8/rc.shutdown.final.html	man-rc-htmlman		html
 ./usr/share/man/html8/rc.subr.html		man-rc-htmlman		html
 ./usr/share/man/html8/rcorder.html		man-sysutil-htmlman	html
 ./usr/share/man/html8/rdate.html		man-netutil-htmlman	html

Index: src/etc/rc.shutdown
diff -u src/etc/rc.shutdown:1.9 src/etc/rc.shutdown:1.10
--- src/etc/rc.shutdown:1.9	Mon Jun 25 07:22:45 2012
+++ src/etc/rc.shutdown	Sat Dec  7 18:45:20 2024
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: rc.shutdown,v 1.9 2012/06/25 07:22:45 jnemeth Exp $
+# $NetBSD: rc.shutdown,v 1.10 2024/12/07 18:45:20 martin Exp $
 #
 # rc.shutdown --
 #	Run the scripts in /etc/rc.d with reverse rcorder.
@@ -19,6 +19,9 @@ if ! checkyesno do_rcshutdown; then
 	exit 0
 fi
 
+_rcshutdown_action="$1"
+set --
+
 stty status '^T'
 
 #	Set shell to ignore SIGINT, but not children;
@@ -55,6 +58,14 @@ for _rc_elem in $(reverse_list $files); 
 	run_rc_script $_rc_elem stop
 done
 
+#
+#	Run final local handlers (if any exist)
+#
+if [ -r /etc/rc.shutdown.final ]; then
+	set -- "$_rcshutdown_action"
+	. /etc/rc.shutdown.final
+fi
+
 
 #	Terminate the background watchdog timer (if it is running)
 #

Index: src/share/man/man8/Makefile
diff -u src/share/man/man8/Makefile:1.111 src/share/man/man8/Makefile:1.112
--- src/share/man/man8/Makefile:1.111	Fri Aug 28 12:13:09 2020
+++ src/share/man/man8/Makefile	Sat Dec  7 18:45:20 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.111 2020/08/28 12:13:09 christos Exp $
+#	$NetBSD: Makefile,v 1.112 2024/12/07 18:45:20 martin Exp $
 #	from: @(#)Makefile	8.1 (Berkeley) 6/5/93
 
 MAN=	MAKEDEV.8 MAKEDEV.local.8 afterboot.8 boot.8 compat_30.8 \
@@ -17,6 +17,7 @@ MLINKS+=nis.8 yp.8
 MLINKS+=rc.8 rc.d.8
 MLINKS+=rc.8 rc.local.8
 MLINKS+=rc.8 rc.shutdown.8
+MLINKS+=rc.8 rc.shutdown.final.8
 
 SUBDIR= man8.acorn32 man8.alpha man8.amiga man8.atari \
 	man8.cobalt man8.dreamcast man8.emips man8.evbarm \

Index: src/share/man/man8/rc.8
diff -u src/share/man/man8/rc.8:1.39 src/share/man/man8/rc.8:1.40
--- src/share/man/man8/rc.8:1.39	Sat Oct 14 21:21:51 2017
+++ src/share/man/man8/rc.8	Sat Dec  7 18:45:20 2024
@@ -1,4 +1,4 @@
-.\" 	$NetBSD: rc.8,v 1.39 2017/10/14 21:21:51 lukem Exp $
+.\" 	$NetBSD: rc.8,v 1.40 2024/12/07 18:45:20 martin Exp $
 .\"
 .\" Copyright (c) 2000-2017 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -27,13 +27,14 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd October 15, 2017
+.Dd December 7, 2024
 .Dt RC 8
 .Os
 .Sh NAME
 .Nm rc ,
 .Nm rc.local ,
 .Nm rc.shutdown ,
+.Nm rc.shutdown.final ,
 .Nm rc.d/
 .Nd startup and shutdown scripts
 .Sh SYNOPSIS
@@ -179,6 +180,30 @@ and sources the script in a sub-shell.
 If the script has a
 .Sq .sh
 suffix then it is sourced directly into the current shell.
+.It
+Runs
+.Pa /etc/rc.shutdown.final
+if it exists, passing the currently ongoing shutdown action, which
+will be one of:
+.Bl -bullet
+.It
+shutdown
+when going to single user mode.
+.It
+halt
+when halting the machine (but not powering it down).
+.It
+reboot
+when rebooting the machine.
+.It
+poweroff
+when halting the machine and powering it off.
+.El
+.Pp
+The script may be used for example to controll additional
+actions, e.g. powering off external devices, restarting
+a UPS (in case main power is restored in the interval betweeen
+the computer powering off and the UPS running out of battery).
 .El
 .Ss Contents of rc.d/
 .Nm rc.d/

Reply via email to