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>