Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 May 2011 17:57:05 -0700
From:      Devin Teske <dteske@vicor.com>
To:        Jason Hellenthal <jhell@DataIX.net>
Cc:        Garrett Cooper <yanegomi@gmail.com>, freebsd-rc@freebsd.org
Subject:   Re: [RFC][Change-Request] Create usefulness in rc.subr etc/rc.conf.d/*.conf namespace.
Message-ID:  <2E9FCA3F-79B7-4FE8-883E-EA1D45EECE56@vicor.com>
In-Reply-To: <20110509002349.GI3527@DataIX.net>
References:  <20110508191336.GC3527@DataIX.net> <C7EC90A2-936C-44E1-BC5E-E249399AF9AB@gmail.com> <5474DF9C-500A-4B51-948F-F56A66051476@vicor.com> <20110508215432.GG3527@DataIX.net> <F7C06E06-1913-4D29-B37F-7B07A0AE121A@vicor.com> <D0B755B8-B222-49F4-BC6D-545231B7384A@vicor.com> <20110509002349.GI3527@DataIX.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On May 8, 2011, at 5:23 PM, Jason Hellenthal wrote:

>=20
> Devin,
>=20
> On Sun, May 08, 2011 at 03:52:06PM -0700, Devin Teske wrote:
>>=20
>> I second Jilles all-builtin solution using `for' globbing (no forking ex=
ternal processes or sub-shells).
>>=20
>> Slight modification for brevity:
>>=20
>> 	for _modular_conf in /etc/rc.conf.d/*.conf; do
>> 		[ -f "$_modular_conf" -a -x "$_modular_conf" ] || continue
>> 		debug "Sourcing $_modular_conf"
>> 		. "$_modular_conf"
>> 	done
>>=20
>> Though I still think it ought to be:
>>=20
>> 	for _modular_conf in /etc/rc.conf.d/*.conf; do
>> 		[ -f "$_modular_conf" ] || continue
>> 		debug "Sourcing $_modular_conf"
>> 		. "$_modular_conf"
>> 	done
>>=20
>=20
> Keeping with the examples of the rest of the style of rc.subr and plenty=
=20
> of other shell scripts here. This would be a distortion of the=20
> functionality that the original loop is doing and should be avoided.
>=20

I've picked up this tid-bit over the years:

1. Since a conditional block causes all code within to be indented...
2. if you have a condition which can cause a continuance within a looping b=
ock...
3. utilizing said conditional early-on can prevent unnecessary indentation =
in the following lines.

It's kind of moot for such a small example, but if you get to nesting 300+ =
lines at multiple levels of nesting then it's worth re-evaluating the use o=
f "early continuances".

Here's the basic idea...

	for item in list; do
		: condition to continue
		: what the loop does
	done

opposed to:

	for item in list; do
		if : condition to not continue; then
			: what the loop does
		fi
	done

How about this half-and-half approach (actual code):

	for _modular_conf in /etc/rc.conf.d/*.conf; do
		if [ ! -f "$_modular_conf" ]; then
			continue
		fi
		debug "Sourcing $_modular_conf"
		. "$_modular_conf"
	done

Of course, one's interpretation of the above syntax is conditional on memor=
izing that "!" is pronounced "not" (just as my previous syntax hinges on me=
morizing that "||" is pronounced "or"/"else" -- allowing either syntax to b=
e read/interpreted with ease).

Just thought I'd share my experiences. Not everyone develops the same style=
(9) for every language.
--=20
Devin

_____________

The information contained in this message is proprietary and/or confidentia=
l. If you are not the intended recipient, please: (i) delete the message an=
d all copies; (ii) do not disclose, distribute or use the message in any ma=
nner; and (iii) notify the sender immediately. In addition, please be aware=
 that any message addressed to our domain is subject to archiving and revie=
w by persons other than the intended recipient. Thank you.
_____________



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2E9FCA3F-79B7-4FE8-883E-EA1D45EECE56>