Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Nov 2018 19:33:15 +0100
From:      Oliver Pinter <oliver.pinter@hardenedbsd.org>
To:        Devin Teske <dteske@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r339971 - in head: libexec/rc share/man/man5 share/man/man8
Message-ID:  <CAPQ4ffuLjtFyj1MVXmPyktnUEkmw=f-H9bFzw0ujhquvyEFp1Q@mail.gmail.com>
In-Reply-To: <201810312037.w9VKbCCX029120@repo.freebsd.org>
References:  <201810312037.w9VKbCCX029120@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, October 31, 2018, Devin Teske <dteske@freebsd.org> wrote:

> Author: dteske
> Date: Wed Oct 31 20:37:12 2018
> New Revision: 339971
> URL: https://svnweb.freebsd.org/changeset/base/339971
>
> Log:
>   Add new rc keywords: enable, disable, delete
>
>   This adds new keywords to rc/service to enable/disable a service's
>   rc.conf(5) variable and "delete" to remove the variable.
>
>   When the "service_delete_empty" variable in rc.conf(5) is set to "YES"
>   (default is "NO") an rc.conf.d file (in /etc/ or /usr/local/etc) is
>   deleted if empty after modification using "service $foo delete".
>
>   Submitted by: lme (modified)
>   Reviewed by:  0mp (previous version), lme, bcr
>   Relnotes:     yes
>   Sponsored by: Smule, Inc.
>   Differential Revision:        https://reviews.freebsd.org/D17113



Hi!

Really nice. Do you plan to MFC this commit to stable branches?


>
> Modified:
>   head/libexec/rc/rc.conf
>   head/libexec/rc/rc.subr
>   head/share/man/man5/rc.conf.5
>   head/share/man/man8/rc.8
>
> Modified: head/libexec/rc/rc.conf
> ============================================================
> ==================
> --- head/libexec/rc/rc.conf     Wed Oct 31 19:59:20 2018        (r339970)
> +++ head/libexec/rc/rc.conf     Wed Oct 31 20:37:12 2018        (r339971)
> @@ -617,6 +617,7 @@ savecore_enable="YES"       # Extract core from dump
> devices
>  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).
>
> Modified: head/libexec/rc/rc.subr
> ============================================================
> ==================
> --- head/libexec/rc/rc.subr     Wed Oct 31 19:59:20 2018        (r339970)
> +++ head/libexec/rc/rc.subr     Wed Oct 31 20:37:12 2018        (r339971)
> @@ -922,7 +922,7 @@ run_rc_command()
>         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 @@ run_rc_command()
>                 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
> @@ -1028,6 +1029,31 @@ run_rc_command()
>
>                 extracommands)
>                         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)
>
> Modified: head/share/man/man5/rc.conf.5
> ============================================================
> ==================
> --- head/share/man/man5/rc.conf.5       Wed Oct 31 19:59:20 2018
> (r339970)
> +++ head/share/man/man5/rc.conf.5       Wed Oct 31 20:37:12 2018
> (r339971)
> @@ -24,7 +24,7 @@
>  .\"
>  .\" $FreeBSD$
>  .\"
> -.Dd August 22, 2018
> +.Dd October 24, 2018
>  .Dt RC.CONF 5
>  .Os
>  .Sh NAME
> @@ -4509,6 +4509,14 @@ at boot time.
>  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 @@ The default directory is
>  .Xr rwhod 8 ,
>  .Xr savecore 8 ,
>  .Xr sdpd 8 ,
> +.Xr service 8 ,
>  .Xr sshd 8 ,
>  .Xr swapon 8 ,
>  .Xr sysctl 8 ,
>
> Modified: head/share/man/man8/rc.8
> ============================================================
> ==================
> --- head/share/man/man8/rc.8    Wed Oct 31 19:59:20 2018        (r339970)
> +++ head/share/man/man8/rc.8    Wed Oct 31 20:37:12 2018        (r339971)
> @@ -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
> @@ -327,6 +327,21 @@ If the script starts a process (rather than performing
>  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
> _______________________________________________
> svn-src-head@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffuLjtFyj1MVXmPyktnUEkmw=f-H9bFzw0ujhquvyEFp1Q>