From owner-svn-src-all@FreeBSD.ORG Wed Dec 19 19:04:22 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0D7EB5DC; Wed, 19 Dec 2012 19:04:22 +0000 (UTC) (envelope-from bright@mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id DB3DC8FC12; Wed, 19 Dec 2012 19:04:21 +0000 (UTC) Received: from [10.226.124.117] (191.sub-174-253-232.myvzw.com [174.253.232.191]) by elvis.mu.org (Postfix) with ESMTPSA id 84B091A3C2B; Wed, 19 Dec 2012 11:04:19 -0800 (PST) References: <201212132332.qBDNWmK4037503@svn.freebsd.org> <50D1D720.80206@FreeBSD.org> <1355931456.1198.203.camel@revolution.hippie.lan> <05CC5BAD-B968-4A7A-8097-A3344D970D63@mu.org> <1355932607.1198.206.camel@revolution.hippie.lan> Mime-Version: 1.0 (1.0) In-Reply-To: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Message-Id: <8897E6EF-3F09-4EAD-9DE9-7BE77ADD18C4@mu.org> X-Mailer: iPhone Mail (10A523) From: Alfred Perlstein Subject: Re: svn commit: r244198 - in head: etc/rc.d sbin/sysctl Date: Wed, 19 Dec 2012 11:04:17 -0800 To: Ian Lepore Cc: "svn-src-head@freebsd.org" , Andrey Zonov , "src-committers@freebsd.org" , Xin LI , "svn-src-all@freebsd.org" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Dec 2012 19:04:22 -0000 I didn't catch your idea of multiple files to parse. That sounds like a bett= er idea than mine (# based file directives) for sure.=20 Sent from my iPhone On Dec 19, 2012, at 9:37 AM, Alfred Perlstein wrote: > I think that it's a good idea. Maybe there's some way to give sysctl.conf t= he equivalent of #file preprocessor directives? >=20 > Sent from my iPhone >=20 > On Dec 19, 2012, at 7:56 AM, Ian Lepore wr= ote: >=20 >> Hrm. Yeah, it would. Or at least, it might. If the error message >> cites the text of the line it chokes on, maybe that's not a problem. >>=20 >> Running sysctl once passing it a list of files would fix that, but would >> probably be more complexity than it's worth. I just always try to find >> ways to reduce rc processing time on wimpy platforms, so these wild >> ideas pop into my head. >>=20 >> -- Ian >>=20 >> On Wed, 2012-12-19 at 07:52 -0800, Alfred Perlstein wrote: >>> Wouldn't this obfuscate any errors in files? >>>=20 >>> Sent from my iPhone >>>=20 >>> On Dec 19, 2012, at 7:37 AM, Ian Lepore w= rote: >>>=20 >>>> On Wed, 2012-12-19 at 19:02 +0400, Andrey Zonov wrote: >>>>> On 12/14/12 3:32 AM, Xin LI wrote: >>>>>> Author: delphij >>>>>> Date: Thu Dec 13 23:32:47 2012 >>>>>> New Revision: 244198 >>>>>> URL: http://svnweb.freebsd.org/changeset/base/244198 >>>>>>=20 >>>>>> Log: >>>>>> Teach sysctl(8) about parsing a file (while I'm there also give it >>>>>> capability of parsing both =3D and : formats). >>>>>>=20 >>>>>> Submitted by: hrs (initial version, bugs are mine) >>>>>> MFC after: 3 months >>>>>>=20 >>>>>> Modified: >>>>>> head/etc/rc.d/sysctl >>>>>> head/sbin/sysctl/sysctl.8 >>>>>> head/sbin/sysctl/sysctl.c >>>>>>=20 >>>>>> Modified: head/etc/rc.d/sysctl >>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >>>>>> --- head/etc/rc.d/sysctl Thu Dec 13 23:19:13 2012 (r244197) >>>>>> +++ head/etc/rc.d/sysctl Thu Dec 13 23:32:47 2012 (r244198) >>>>>> @@ -8,51 +8,27 @@ >>>>>> . /etc/rc.subr >>>>>>=20 >>>>>> name=3D"sysctl" >>>>>> +command=3D"/sbin/sysctl" >>>>>> stop_cmd=3D":" >>>>>> start_cmd=3D"sysctl_start" >>>>>> reload_cmd=3D"sysctl_start" >>>>>> lastload_cmd=3D"sysctl_start last" >>>>>> extra_commands=3D"reload lastload" >>>>>>=20 >>>>>> -# >>>>>> -# Read in a file containing sysctl settings and set things according= ly. >>>>>> -# >>>>>> -parse_file() >>>>>> -{ >>>>>> - if [ -f $1 ]; then >>>>>> - while read var comments >>>>>> - do >>>>>> - case ${var} in >>>>>> - \#*|'') >>>>>> - ;; >>>>>> - *) >>>>>> - mib=3D${var%=3D*} >>>>>> - val=3D${var#*=3D} >>>>>> - >>>>>> - if current_value=3D`${SYSCTL} -n ${mib} 2>/dev/null`= ; then >>>>>> - case ${current_value} in >>>>>> - ${val}) >>>>>> - ;; >>>>>> - *) >>>>>> - if ! sysctl "${var}" >/dev/null 2>&1; then >>>>>> - warn "unable to set ${var}" >>>>>> - fi >>>>>> - ;; >>>>>> - esac >>>>>> - elif [ "$2" =3D "last" ]; then >>>>>> - warn "sysctl ${mib} does not exist." >>>>>> - fi >>>>>> - ;; >>>>>> - esac >>>>>> - done < $1 >>>>>> - fi >>>>>> -} >>>>>> - >>>>>> sysctl_start() >>>>>> { >>>>>> - >>>>>> - parse_file /etc/sysctl.conf $1 >>>>>> - parse_file /etc/sysctl.conf.local $1 >>>>>> + case $1 in >>>>>> + last) >>>>>> + command_args=3D"-i -f" >>>>>> + ;; >>>>>> + *) >>>>>> + command_args=3D"-f" >>>>>> + ;; >>>>>> + esac >>>>>> + >>>>>> + for _f in /etc/sysctl.conf /etc/sysctl.conf.local; do >>>>>> + [ -r ${_f} ] && ${command} ${command_args} ${_f} > /dev/null= >>>>>> + done >>>>>> } >>>>>>=20 >>>>>> load_rc_config $name >>>>>=20 >>>>> Hi, >>>>>=20 >>>>> I'd really like to see something like the patch bellow in the tree. I= >>>>> found it very useful with cfengine configuration (as like as cron.d). >>>>>=20 >>>>> What do think? >>>>>=20 >>>>> diff --git a/etc/rc.d/sysctl b/etc/rc.d/sysctl >>>>> index 36f1414..014e4c5 100755 >>>>> --- a/etc/rc.d/sysctl >>>>> +++ b/etc/rc.d/sysctl >>>>> @@ -26,7 +26,7 @@ sysctl_start() >>>>> ;; >>>>> esac >>>>>=20 >>>>> - for _f in /etc/sysctl.conf /etc/sysctl.conf.local; do >>>>> + for _f in `ls /etc/sysctl.d/* 2> /dev/null` /etc/sysctl.conf >>>>> /etc/sysctl.conf.local; do >>>>> [ -r ${_f} ] && ${command} ${command_args} ${_f} > /dev/n= ull >>>>> done >>>>> } >>>>=20 >>>> Instead of running sysctl a bunch of times, how about something >>>> conceptually similar to >>>>=20 >>>> cat /etc/sysctl.d/* /etc/sysctl.conf | sysctl -f - >>>>=20 >>>> Along with this (untested) patch to make sysctl understand "-f -". >>>>=20 >>>> Hmmm, is /dev/stdin available as early as sysctl.conf runs? If not, th= e >>>> attached patch isn't going to work. >>>>=20 >>>> -- Ian >>>>=20 >>>> diff -r cc5bd6d80aa1 sbin/sysctl/sysctl.c --- sbin/sysctl/sysctl.c S= un Aug 19 11:01:08 2012 -0600 +++ sbin/sysctl/sysctl.c Wed Dec 19 08:31:1= 4 2012 -0700 @@ -112,7 +112,10 @@ main(int argc, char **argv) eflag =3D 1; b= reak; case 'f': - conffile =3D optarg; + if (strcmp(optarg, "-") =3D=3D 0= ) + conffile =3D "/dev/stdin"; + else + conffile =3D optarg; break; c= ase 'h': hflag =3D 1; >>> _______________________________________________ >>> svn-src-all@freebsd.org mailing list >>> http://lists.freebsd.org/mailman/listinfo/svn-src-all >>> To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" >=20