I think that it's a good idea. Maybe there's some way to give sysctl.conf the equivalent of #file preprocessor directives?
Sent from my iPhone On Dec 19, 2012, at 7:56 AM, Ian Lepore <free...@damnhippie.dyndns.org> wrote: > 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 <free...@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-unsubscr...@freebsd.org" > > _______________________________________________ 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-unsubscr...@freebsd.org"