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
This commit is contained in:
Mark Johnston 2016-04-10 01:25:12 +00:00
parent 33b454938a
commit 8553156023
2 changed files with 30 additions and 5 deletions

View File

@ -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

View File

@ -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 _fs _type _other ; do
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}