Date: Thu, 31 Oct 2002 18:21:06 -0600 (CST) From: "Scot W. Hetzel" <hetzels@westbend.net> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Gordon <gordon@FreeBSD.org> Subject: conf/44800: RC_NG for local rc scripts Message-ID: <200211010021.gA10L6vR007899@WBIw009.westbend.net>
next in thread | raw e-mail | index | archive | help
>Number: 44800 >Category: conf >Synopsis: RC_NG for local rc scripts >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Oct 31 16:30:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Scot W. Hetzel >Release: FreeBSD 5.0-CURRENT i386 >Organization: West Bend Internet >Environment: System: FreeBSD Current.westbend.net 5.0-CURRENT FreeBSD 5.0-CURRENT #3: Sat Oct 26 19:44:41 CDT 2002 root@Current.westbend.net:/usr/obj/usr/src/srcC/sys/GENERIC-SMP i386 >Description: I have converted several ports rc scripts to RC_NG, but I noticed that load_rc_config could only read configuration files from /etc. Attached is a patch that adds load_local_rc_config to /etc/rc.subr. With this patch, ports scripts can read their configuration from the following files and listed order: ${prefix}/etc/rc.conf.d/<name> /etc/default/rc.conf /etc/rc.conf /etc/rc.conf.d/<name> I have submitted the folowing ports PRs with rc.d scripts that support both 5.0-CURRENT and *-STABLE. PR 43667 mail/cyrus_imapd PR 43668 mail/cyrus_imapd2 PR 43669 databases/mysql323-{server,client} PR 43670 net/openldap PR 43671 net/openldap2 PR 43672 security/cyrus-sasl PR 43673 security/cyrus-sasl2 PR 43681 www/apache13-fp Currently, these rc.d scripts are using a different method to read their configuration information from ${prefix}/etc/rc.conf.d/<name>. >How-To-Repeat: >Fix: Attached are patchs for rc.subr and mtree/BSD.local.dist NOTE: BSD.local.dist should be MFC'd to STABLE. Index: rc.subr =================================================================== RCS file: /home/ncvs/src/etc/rc.subr,v retrieving revision 1.6 diff -u -r1.6 rc.subr --- rc.subr 12 Sep 2002 17:27:36 -0000 1.6 +++ rc.subr 31 Oct 2002 22:12:13 -0000 @@ -833,6 +833,48 @@ } # +# load_local_rc_config +# Source in the configuration file for a given local command. +# +# The following globals are used: +# +# Name Needed Purpose +# ---- ------ ------- +# prefix y Base directory that script is located in (i.e /usr/local) +# +# rcvar n Name of variable used to enable the service. +# +load_local_rc_config() +{ + _command=$1 + if [ -z "$_command" ]; then + err 3 "USAGE: load_local_rc_config command" + fi + + if [ -z "$prefix" ]; then + err 3 'load_local_rc_config: $prefix is not set.' + fi + + if [ -f ${prefix}/etc/rc.conf.d/"$_command" ]; then + debug "Sourcing ${prefix}/etc/rc.conf.d/${_command}" + . ${prefix}/etc/rc.conf.d/"$_command" + fi + + # Let either /etc/rc.conf or /etc/rc.conf.d/"$_command" + # override ${prefix}/etc/rc.conf.d/"$_command" + load_rc_config $_command + + # Used for compatibilty with old behavior for local rc scripts. + if [ -n "$rcvar" ]; then + eval _value=\$${rcvar} + if [ -z "${_value}" ]; then + debug "load_local_rc_config: setting ${rcvar} to YES" + eval ${rcvar}=YES + fi + fi +} + +# # rc_usage commands # Print a usage string for $0, with `commands' being a list of # valid commands. Index: BSD.local.dist =================================================================== RCS file: /home/ncvs/src/etc/mtree/BSD.local.dist,v retrieving revision 1.92 diff -u -r1.92 BSD.local.dist --- BSD.local.dist 25 Oct 2002 22:00:34 -0000 1.92 +++ BSD.local.dist 31 Oct 2002 19:51:06 -0000 @@ -10,6 +10,8 @@ etc pam.d .. + rc.conf.d + .. rc.d .. .. >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211010021.gA10L6vR007899>