Date: Wed, 19 Dec 2012 08:56:47 -0700 From: Ian Lepore <freebsd@damnhippie.dyndns.org> To: Alfred Perlstein <bright@mu.org> Cc: "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, Andrey Zonov <zont@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, Xin LI <delphij@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org> Subject: Re: svn commit: r244198 - in head: etc/rc.d sbin/sysctl Message-ID: <1355932607.1198.206.camel@revolution.hippie.lan> In-Reply-To: <05CC5BAD-B968-4A7A-8097-A3344D970D63@mu.org> References: <201212132332.qBDNWmK4037503@svn.freebsd.org> <50D1D720.80206@FreeBSD.org> <1355931456.1198.203.camel@revolution.hippie.lan> <05CC5BAD-B968-4A7A-8097-A3344D970D63@mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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. 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. -- Ian On Wed, 2012-12-19 at 07:52 -0800, Alfred Perlstein wrote: > Wouldn't this obfuscate any errors in files? > > Sent from my iPhone > > On Dec 19, 2012, at 7:37 AM, Ian Lepore <freebsd@damnhippie.dyndns.org> wrote: > > > 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 > >>> > >>> Log: > >>> Teach sysctl(8) about parsing a file (while I'm there also give it > >>> capability of parsing both = and : formats). > >>> > >>> Submitted by: hrs (initial version, bugs are mine) > >>> MFC after: 3 months > >>> > >>> Modified: > >>> head/etc/rc.d/sysctl > >>> head/sbin/sysctl/sysctl.8 > >>> head/sbin/sysctl/sysctl.c > >>> > >>> Modified: head/etc/rc.d/sysctl > >>> ============================================================================== > >>> --- 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 > >>> > >>> name="sysctl" > >>> +command="/sbin/sysctl" > >>> stop_cmd=":" > >>> start_cmd="sysctl_start" > >>> reload_cmd="sysctl_start" > >>> lastload_cmd="sysctl_start last" > >>> extra_commands="reload lastload" > >>> > >>> -# > >>> -# Read in a file containing sysctl settings and set things accordingly. > >>> -# > >>> -parse_file() > >>> -{ > >>> - if [ -f $1 ]; then > >>> - while read var comments > >>> - do > >>> - case ${var} in > >>> - \#*|'') > >>> - ;; > >>> - *) > >>> - mib=${var%=*} > >>> - val=${var#*=} > >>> - > >>> - if current_value=`${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" = "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="-i -f" > >>> + ;; > >>> + *) > >>> + command_args="-f" > >>> + ;; > >>> + esac > >>> + > >>> + for _f in /etc/sysctl.conf /etc/sysctl.conf.local; do > >>> + [ -r ${_f} ] && ${command} ${command_args} ${_f} > /dev/null > >>> + done > >>> } > >>> > >>> load_rc_config $name > >> > >> Hi, > >> > >> 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). > >> > >> What do think? > >> > >> 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 > >> > >> - 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/null > >> done > >> } > > > > Instead of running sysctl a bunch of times, how about something > > conceptually similar to > > > > cat /etc/sysctl.d/* /etc/sysctl.conf | sysctl -f - > > > > Along with this (untested) patch to make sysctl understand "-f -". > > > > Hmmm, is /dev/stdin available as early as sysctl.conf runs? If not, the > > attached patch isn't going to work. > > > > -- Ian > > > > diff -r cc5bd6d80aa1 sbin/sysctl/sysctl.c --- sbin/sysctl/sysctl.c Sun Aug 19 11:01:08 2012 -0600 +++ sbin/sysctl/sysctl.c Wed Dec 19 08:31:14 2012 -0700 @@ -112,7 +112,10 @@ main(int argc, char **argv) eflag = 1; break; case 'f': - conffile = optarg; + if (strcmp(optarg, "-") == 0) + conffile = "/dev/stdin"; + else + conffile = optarg; break; case 'h': hflag = 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"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1355932607.1198.206.camel>