Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142629972
D17113.id49572.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D17113.id49572.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D17113: Add new rc keywords: enable, disable, delete
Attached
Detach File
Event Timeline
Log In to Comment