svn commit: r274068 - head/usr.sbin/sysrc

Devin Teske dteske at FreeBSD.org
Mon Nov 3 23:43:42 UTC 2014


Author: dteske
Date: Mon Nov  3 23:43:41 2014
New Revision: 274068
URL: https://svnweb.freebsd.org/changeset/base/274068

Log:
  Add key+=append syntax to sysrc(8).
  
  Reviewed by:	shurd
  MFC after:	3 days
  X-MFC-to:	stable/10 stable/9

Modified:
  head/usr.sbin/sysrc/sysrc
  head/usr.sbin/sysrc/sysrc.8

Modified: head/usr.sbin/sysrc/sysrc
==============================================================================
--- head/usr.sbin/sysrc/sysrc	Mon Nov  3 23:37:51 2014	(r274067)
+++ head/usr.sbin/sysrc/sysrc	Mon Nov  3 23:43:41 2014	(r274068)
@@ -40,7 +40,7 @@ BSDCFG_SHARE="/usr/share/bsdconfig"
 #
 # Version information
 #
-SYSRC_VERSION="6.1 Jul-18,2014"
+SYSRC_VERSION="6.2 Nov-3,2014"
 
 #
 # Options
@@ -80,7 +80,7 @@ die()
 #
 usage()
 {
-	f_err "Usage: %s [OPTIONS] name[=value] ...\n" "$pgm"
+	f_err "Usage: %s [OPTIONS] name[[+]=value] ...\n" "$pgm"
 	f_err "Try \`%s --help' for more information.\n" "$pgm"
 	die
 }
@@ -94,7 +94,7 @@ help()
 	local optfmt="\t%-11s%s\n"
 	local envfmt="\t%-17s%s\n"
 
-	f_err "Usage: %s [OPTIONS] name[=value] ...\n" "$pgm"
+	f_err "Usage: %s [OPTIONS] name[[+]=value] ...\n" "$pgm"
 
 	f_err "OPTIONS:\n"
 	f_err "$optfmt" "-a" \
@@ -529,6 +529,11 @@ status=$SUCCESS
 while [ $# -gt 0 ]; do
 	NAME="${1%%=*}"
 
+	case "$NAME" in
+	*+) mode=APPEND NAME="${NAME%+}" ;;
+	 *) mode=ASSIGN
+	esac
+
 	[ "$DESCRIBE" ] && \
 		echo "$NAME: $( f_sysrc_desc "$NAME" )"
 
@@ -593,14 +598,25 @@ while [ $# -gt 0 ]; do
 		#
 		if [ ! "$SHOW_VALUE" ]; then
 			echo "$NAME"
-			f_sysrc_set "$NAME" "${1#*}"
+			case "$mode" in
+			APPEND)
+				before=$( f_sysrc_get "$NAME" )
+				f_sysrc_set "$NAME" "$before${1#*=}"
+				;;
+			*)
+				f_sysrc_set "$NAME" "${1#*=}"
+			esac
 		else
 			if [ "$SHOW_FILE" ]; then
 				before=$( f_sysrc_find "$NAME" )
 			else
 				before=$( f_sysrc_get "$NAME" )
 			fi
-			if f_sysrc_set "$NAME" "${1#*=}"; then
+			if case "$mode" in
+				APPEND) f_sysrc_set "$NAME" "$before${1#*=}" ;;
+				     *) f_sysrc_set "$NAME" "${1#*=}"
+				esac
+			then
 				if [ "$SHOW_FILE" ]; then
 					after=$( f_sysrc_find "$NAME" )
 				else

Modified: head/usr.sbin/sysrc/sysrc.8
==============================================================================
--- head/usr.sbin/sysrc/sysrc.8	Mon Nov  3 23:37:51 2014	(r274067)
+++ head/usr.sbin/sysrc/sysrc.8	Mon Nov  3 23:43:41 2014	(r274068)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd Jul 18, 2014
+.Dd November 3, 2014
 .Dt SYSRC 8
 .Os
 .Sh NAME
@@ -35,7 +35,7 @@
 .Op Fl cdDeFhinNqvx
 .Op Fl f Ar file
 .Op Fl j Ar jail | Fl R Ar dir
-.Ar name Ns Op = Ns Ar value
+.Ar name Ns Op Ns Oo + Oc Ns = Ns Ar value
 .Ar ...
 .Nm
 .Op Fl cdDeFhinNqvx
@@ -135,6 +135,10 @@ It shares the `-e' and `-n' options
 and also has the same
 .Ql name[=value]
 syntax for making queries/assignments.
+In addition
+.Pq unlike Xr sysctl 8 ,
+.Ql name+=value
+is supported for appending values.
 .Pp
 However, while
 .Xr sysctl 8


More information about the svn-src-all mailing list