Forget about code in rc.conf. Put the logic in the the scripts. Or,
better, put the logic in rc.suck (well, find a better name... :),
and . /etc/rc.suck instead.

"Jordan K. Hubbard" wrote:
> 
> OK, so it seems everyone's found something to like and dislike about
> the new scheme.  In that regard, it seems pretty much equivalent to
> the previous layout when that was first introduced. :)
> 
> However, incremental refinement for this stuff has always been the
> order of the day, so in that spirit, here's my proposal to deal with
> the most recent set of gripes: That rc.conf contains "code" in
> addition to data.
> 
> The following diffs make rc.conf a variable-only file, at the cost of
> distributing the hook-calling mechanism into all the former clients of
> rc.conf.  That really doesn't bother me if it doesn't bother you, and
> further optimization of it can always be another future incremental
> refinement.  Another incremental, albeit contraversial, refinement
> would be to change /etc/defaults/rc.conf and friends into something
> truely machine-parsable, changing statements like this:
> 
>        if [ -f /some/conf/file ]; then
>             . /some/conf/file
>        fi
> 
> Into something like this:
> 
>        if [ -f /some/conf/file ]; then
>             eval `/sbin/rcvtosh /some/conf/file`
>        fi
> 
> But these changes do not attempt to do that, they simply attempt to
> make the existing rc.conf format somewhat easier to parse.  Comments
> requested.
> 
> Index: netstart
> ===================================================================
> RCS file: /home/ncvs/src/etc/netstart,v
> retrieving revision 1.53
> diff -u -u -r1.53 netstart
> --- netstart    1999/02/10 18:08:16     1.53
> +++ netstart    1999/03/22 01:54:16
> @@ -12,8 +12,11 @@
>  # If there is a global system configuration file, suck it in.
>  if [ -f /etc/defaults/rc.conf ]; then
>         . /etc/defaults/rc.conf
> -elif [ -f /etc/rc.conf ]; then
> -       . /etc/rc.conf
> +       for i in ${rc_conf_files}; do
> +               if [ -f $i ]; then
> +                       . $i
> +               fi
> +       done
>  fi
> 
>  if [ -f /etc/rc.network ]; then
> Index: pccard_ether
> ===================================================================
> RCS file: /home/ncvs/src/etc/pccard_ether,v
> retrieving revision 1.11
> diff -u -u -r1.11 pccard_ether
> --- pccard_ether        1999/02/22 02:55:18     1.11
> +++ pccard_ether        1999/03/22 01:55:27
> @@ -7,11 +7,14 @@
>  # example: pccard_ether ep0 -link0
>  #
> 
> -# Suck in the configuration variables
> +# If there is a global system configuration file, suck it in.
>  if [ -f /etc/defaults/rc.conf ]; then
>         . /etc/defaults/rc.conf
> -elif [ -f /etc/rc.conf ]; then
> -       . /etc/rc.conf
> +       for i in ${rc_conf_files}; do
> +               if [ -f $i ]; then
> +                       . $i
> +               fi
> +       done
>  fi
> 
>  if [ "x$pccard_ifconfig" != "xNO" ] ; then
> Index: rc
> ===================================================================
> RCS file: /home/ncvs/src/etc/rc,v
> retrieving revision 1.183
> diff -u -u -r1.183 rc
> --- rc  1999/03/17 04:00:04     1.183
> +++ rc  1999/03/22 01:56:24
> @@ -33,11 +33,13 @@
>  fi
> 
>  # If there is a global system configuration file, suck it in.
> -#
>  if [ -f /etc/defaults/rc.conf ]; then
>         . /etc/defaults/rc.conf
> -elif [ -f /etc/rc.conf ]; then
> -       . /etc/rc.conf
> +       for i in ${rc_conf_files}; do
> +               if [ -f $i ]; then
> +                       . $i
> +               fi
> +       done
>  fi
> 
>  # Configure ccd devices.
> Index: rc.devfs
> ===================================================================
> RCS file: /home/ncvs/src/etc/rc.devfs,v
> retrieving revision 1.4
> diff -u -u -r1.4 rc.devfs
> --- rc.devfs    1999/02/10 18:08:16     1.4
> +++ rc.devfs    1999/03/22 01:56:39
> @@ -1,11 +1,15 @@
>  #
>  # $Id: rc.devfs,v 1.4 1999/02/10 18:08:16 jkh Exp $
>  #
> +
>  # If there is a global system configuration file, suck it in.
>  if [ -f /etc/defaults/rc.conf ]; then
>         . /etc/defaults/rc.conf
> -elif [ -f /etc/rc.conf ]; then
> -       . /etc/rc.conf
> +       for i in ${rc_conf_files}; do
> +               if [ -f $i ]; then
> +                       . $i
> +               fi
> +       done
>  fi
> 
>  # Setup DEVFS, ie permisisons, links etc.
> Index: rc.diskless2
> ===================================================================
> RCS file: /home/ncvs/src/etc/rc.diskless2,v
> retrieving revision 1.2
> diff -u -u -r1.2 rc.diskless2
> --- rc.diskless2        1999/02/10 18:08:16     1.2
> +++ rc.diskless2        1999/03/22 01:57:04
> @@ -2,11 +2,13 @@
>  #
> 
>  # If there is a global system configuration file, suck it in.
> -#
>  if [ -f /etc/defaults/rc.conf ]; then
>         . /etc/defaults/rc.conf
> -elif [ -f /etc/rc.conf ]; then
> -       . /etc/rc.conf
> +       for i in ${rc_conf_files}; do
> +               if [ -f $i ]; then
> +                       . $i
> +               fi
> +       done
>  fi
> 
>  mount_mfs -s ${var_run_sectors:=2048} -T qp120at dummy /var/run
> Index: rc.firewall
> ===================================================================
> RCS file: /home/ncvs/src/etc/rc.firewall,v
> retrieving revision 1.20
> diff -u -u -r1.20 rc.firewall
> --- rc.firewall 1999/02/10 18:08:16     1.20
> +++ rc.firewall 1999/03/22 01:57:16
> @@ -2,11 +2,14 @@
>  # Setup system for firewall service.
>  # $Id: rc.firewall,v 1.20 1999/02/10 18:08:16 jkh Exp $
> 
> -# Suck in the configuration variables.
> +# If there is a global system configuration file, suck it in.
>  if [ -f /etc/defaults/rc.conf ]; then
>         . /etc/defaults/rc.conf
> -elif [ -f /etc/rc.conf ]; then
> -       . /etc/rc.conf
> +       for i in ${rc_conf_files}; do
> +               if [ -f $i ]; then
> +                       . $i
> +               fi
> +       done
>  fi
> 
>  ############
> Index: defaults/rc.conf
> ===================================================================
> RCS file: /home/ncvs/src/etc/defaults/rc.conf,v
> retrieving revision 1.4
> diff -u -u -r1.4 rc.conf
> --- rc.conf     1999/03/17 04:00:04     1.4
> +++ rc.conf     1999/03/22 01:58:02
> @@ -202,16 +202,3 @@
>  kern_securelevel="-1"  # range: -1..3 ; `-1' is the most insecure
>  update_motd="YES"      # update version info in /etc/motd (or NO)
>  vinum_drives=""                # put in names of disks containing vinum 
> drives
> -
> -##############################################################
> -### Allow local configuration override at the very end here ##
> -##############################################################
> -#
> -#
> -
> -for i in ${rc_conf_files}; do
> -       if [ -f $i ]; then
> -               . $i
> -       fi
> -done
> -
> 
> To Unsubscribe: send mail to majord...@freebsd.org
> with "unsubscribe freebsd-current" in the body of the message

--
Daniel C. Sobral                        (8-DCS)
d...@newsguy.com
d...@freebsd.org

        "What happened?"
        "It moved, sir!"



To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to