Page MenuHomeFreeBSD

D17113.id49572.diff
No OneTemporary

D17113.id49572.diff

Index: libexec/rc/rc.conf
===================================================================
--- libexec/rc/rc.conf
+++ libexec/rc/rc.conf
@@ -616,6 +616,7 @@
savecore_flags="-m 10" # Used if dumpdev is enabled above, and present.
# By default, only the 10 most recent kernel dumps
# are saved.
+service_delete_empty="NO" # Have 'service delete' remove empty rc.conf.d files.
crashinfo_enable="YES" # Automatically generate crash dump summary.
crashinfo_program="/usr/sbin/crashinfo" # Script to generate crash dump summary.
quota_enable="NO" # turn on quotas on startup (or NO).
Index: libexec/rc/rc.subr
===================================================================
--- libexec/rc/rc.subr
+++ libexec/rc/rc.subr
@@ -922,7 +922,7 @@
eval _override_command=\$${name}_program
command=${_override_command:-$command}
- _keywords="start stop restart rcvar enabled describe extracommands $extra_commands"
+ _keywords="start stop restart rcvar enable disable delete enabled describe extracommands $extra_commands"
rc_pid=
_pidcmd=
_procname=${procname:-${command}}
@@ -977,12 +977,13 @@
if [ "$_elem" != "$rc_arg" ]; then
continue
fi
- # if ${rcvar} is set, $1 is not "rcvar" and not "describe"
- # and ${rc_pid} is not set, then run
+ # if ${rcvar} is set, $1 is not "rcvar", "describe",
+ # "enable" or "delete", and ${rc_pid} is not set, run:
# checkyesno ${rcvar}
# and return if that failed
#
if [ -n "${rcvar}" -a "$rc_arg" != "rcvar" -a "$rc_arg" != "stop" \
+ -a "$rc_arg" != "delete" -a "$rc_arg" != "enable" \
-a "$rc_arg" != "describe" ] ||
[ -n "${rcvar}" -a "$rc_arg" = "stop" -a -z "${rc_pid}" ]; then
if ! checkyesno ${rcvar}; then
@@ -1030,6 +1031,31 @@
echo "$extra_commands"
;;
+ enable)
+ _out=$(/usr/sbin/sysrc -vs "$name" "$rcvar=YES") &&
+ echo "$name enabled in ${_out%%:*}"
+ ;;
+
+ disable)
+ _out=$(/usr/sbin/sysrc -vs "$name" "$rcvar=NO") &&
+ echo "$name disabled in ${_out%%:*}"
+ ;;
+
+ delete)
+ _files=
+ for _file in $(sysrc -lEs "$name"); do
+ _out=$(sysrc -Fif $_file "$rcvar") && _files="$_files $_file"
+ done
+ /usr/sbin/sysrc -x "$rcvar" && echo "$rcvar deleted in ${_files# }"
+ # delete file in rc.conf.d if desired and empty.
+ checkyesno service_delete_empty || _files=
+ for _file in $_files; do
+ [ "$_file" = "${_file#*/rc.conf.d/}" ] && continue
+ [ $(/usr/bin/stat -f%z $_file) -gt 0 ] && continue
+ /bin/rm "$_file" && echo "Empty file $_file removed"
+ done
+ ;;
+
status)
_run_rc_precmd || return 1
if [ -n "$rc_pid" ]; then
Index: share/man/man5/rc.conf.5
===================================================================
--- share/man/man5/rc.conf.5
+++ share/man/man5/rc.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 22, 2018
+.Dd October 24, 2018
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -4509,6 +4509,14 @@
The directory where the files exported by USB LUN are located.
The default directory is
.Pa /var/cfumass .
+.It Va service_delete_empty
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+.Ql Li service delete
+removes empty
+.Dq Li rc.conf.d
+files.
.El
.Sh FILES
.Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact
@@ -4597,6 +4605,7 @@
.Xr rwhod 8 ,
.Xr savecore 8 ,
.Xr sdpd 8 ,
+.Xr service 8 ,
.Xr sshd 8 ,
.Xr swapon 8 ,
.Xr sysctl 8 ,
Index: share/man/man8/rc.8
===================================================================
--- share/man/man8/rc.8
+++ share/man/man8/rc.8
@@ -31,7 +31,7 @@
.\" @(#)rc.8 8.2 (Berkeley) 12/11/93
.\" $FreeBSD$
.\"
-.Dd April 25, 2017
+.Dd September 18, 2018
.Dt RC 8
.Os
.Sh NAME
@@ -326,6 +326,21 @@
operation), show the status of the process.
Otherwise it is not necessary to support this argument.
Defaults to displaying the process ID of the program (if running).
+.It Cm enable
+Enable the service in
+.Xr rc.conf 5 .
+.It Cm disable
+Disable the service in
+.Xr rc.conf 5 .
+.It Cm delete
+Remove the service from
+.Xr rc.conf 5 .
+If
+.Ql Li service_delete_empty
+is set to
+.Dq Li YES ,
+.Pa /etc/rc.conf.d/$servicename
+will be deleted if empty after modification.
.It Cm describe
Print a short description of what the script does.
.It Cm extracommands

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 22, 4:02 PM (17 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27855017
Default Alt Text
D17113.id49572.diff (4 KB)

Event Timeline