Author: markj
Date: Sun Apr 10 01:25:12 2016
New Revision: 297772
URL: https://svnweb.freebsd.org/changeset/base/297772

Log:
  nextboot(8): add a -a option for appending to a configuration.
  
  By default, a nextboot invocation will clobber any existing nextboot
  configuration.
  
  MFC after:    2 weeks
  Relnotes:     yes

Modified:
  head/sbin/reboot/nextboot.8
  head/sbin/reboot/nextboot.sh

Modified: head/sbin/reboot/nextboot.8
==============================================================================
--- head/sbin/reboot/nextboot.8 Sun Apr 10 01:24:27 2016        (r297771)
+++ head/sbin/reboot/nextboot.8 Sun Apr 10 01:25:12 2016        (r297772)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 17, 2015
+.Dd April 9, 2016
 .Dt NEXTBOOT 8
 .Os
 .Sh NAME
@@ -32,6 +32,7 @@
 .Nd "specify an alternate kernel and boot flags for the next reboot"
 .Sh SYNOPSIS
 .Nm
+.Op Fl a
 .Op Fl e Ar variable=value
 .Op Fl f
 .Op Fl k Ar kernel
@@ -53,6 +54,12 @@ configuration.
 .Pp
 The options are as follows:
 .Bl -tag -width ".Fl o Ar options"
+.It Fl a
+This option causes
+.Nm
+to append to an existing configuration in
+.Pa /boot/nextboot.conf .
+By default any existing configuration is overwritten.
 .It Fl D
 Invoking
 .Nm

Modified: head/sbin/reboot/nextboot.sh
==============================================================================
--- head/sbin/reboot/nextboot.sh        Sun Apr 10 01:24:27 2016        
(r297771)
+++ head/sbin/reboot/nextboot.sh        Sun Apr 10 01:25:12 2016        
(r297772)
@@ -26,6 +26,7 @@
 #
 # $FreeBSD$
 
+append="NO"
 delete="NO"
 kenv=
 force="NO"
@@ -48,12 +49,17 @@ add_kenv()
 }
 
 display_usage() {
-       echo "Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options]"
-       echo "       nextboot -D"
+       cat <<-EOF
+       Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options]
+              nextboot -D
+       EOF
 }
 
-while getopts "De:fk:o:" argument ; do
+while getopts "aDe:fk:o:" argument ; do
        case "${argument}" in
+       a)
+               append="YES"
+               ;;
        D)
                delete="YES"
                ;;
@@ -106,7 +112,19 @@ df -Tn "/boot/" 2>/dev/null | while read
        EOF
 done
 
-cat > ${nextboot_file} << EOF
+set -e
+
+nextboot_tmp=$(mktemp $(dirname ${nextboot_file})/nextboot.XXXXXX)
+
+if [ ${append} = "YES" -a -f ${nextboot_file} ]; then
+       cp -f ${nextboot_file} ${nextboot_tmp}
+fi
+
+cat >> ${nextboot_tmp} << EOF
 nextboot_enable="YES"
 $kenv
 EOF
+
+fsync ${nextboot_tmp}
+
+mv ${nextboot_tmp} ${nextboot_file}
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to