From owner-freebsd-rc@FreeBSD.ORG Mon Mar 5 19:31:28 2007 Return-Path: X-Original-To: freebsd-rc@FreeBSD.org Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DCFCE16A406; Mon, 5 Mar 2007 19:31:28 +0000 (UTC) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (comp.chem.msu.su [158.250.32.97]) by mx1.freebsd.org (Postfix) with ESMTP id 1A27513C4A8; Mon, 5 Mar 2007 19:31:27 +0000 (UTC) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (localhost [127.0.0.1]) by comp.chem.msu.su (8.13.4/8.13.4) with ESMTP id l25JVPIT072352; Mon, 5 Mar 2007 22:31:26 +0300 (MSK) (envelope-from yar@comp.chem.msu.su) Received: (from yar@localhost) by comp.chem.msu.su (8.13.4/8.13.4/Submit) id l25JVPXR072351; Mon, 5 Mar 2007 22:31:25 +0300 (MSK) (envelope-from yar) Date: Mon, 5 Mar 2007 22:31:25 +0300 From: Yar Tikhiy To: Doug Barton Message-ID: <20070305193125.GG57253@comp.chem.msu.su> References: <200703031011.l23ABYhb039755@repoman.freebsd.org> <45EA68AF.6000700@FreeBSD.org> <20070304130408.GJ40430@comp.chem.msu.su> <45EB4DC1.6040903@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45EB4DC1.6040903@FreeBSD.org> User-Agent: Mutt/1.5.9i Cc: freebsd-rc@FreeBSD.org Subject: Re: cvs commit: doc/en_US.ISO8859-1/articles/rc-scripting article.sgml X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Mar 2007 19:31:29 -0000 On Sun, Mar 04, 2007 at 02:52:49PM -0800, Doug Barton wrote: > Yar Tikhiy wrote: > >On Sat, Mar 03, 2007 at 10:35:27PM -0800, Doug Barton wrote: > >>Yar Tikhiy wrote: > >>>yar 2007-03-03 10:11:34 UTC > >>> > >>> FreeBSD doc repository > >>> > >>> Modified files: > >>> en_US.ISO8859-1/articles/rc-scripting article.sgml > >>> Log: > >>> Explain how an rc.d script can use extra command-line arguments. > >>> > >>> Revision Changes Path > >>> 1.9 +138 -0 > >>> doc/en_US.ISO8859-1/articles/rc-scripting/article.sgml > >>> > >>>http://www.FreeBSD.org/cgi/cvsweb.cgi/doc/en_US.ISO8859-1/articles/rc-scripting/article.sgml.diff?&r1=1.8&r2=1.9&f=h > >>Yar, > >> > >>This good stuff, thanks! I have one quibble with the last paragraph. > >>The shift in rc.subr isn't "apparent" as you phrase it, it's literal: > > > >Yeah, I tried to hide a thing from the reader which he should already > >have known: the shift command. :-) > > Again, looking at it from the point of view of a naive reader, there > is a difference between "I know that the shift command exists, and > sort of know what it does" and "I know how the shift command is used > by rc.subr to affect the command line arguments to my script." Your > article is (to some extent) about teaching the latter, so I think it's > reasonable to spend some time spoon feeding the reader until they are > ready for some meat. Agreed! The new revision tries to do that better. > >>run_rc_command() > >>{ > >> ... > >> # Don't repeat the first argument when passing additional command- > >> # line arguments to the command subroutines. > >> # > >> shift 1 > >> rc_extra_args="$*" > > > >Oh my... Now I see why existing rc.d scripts use this bogus command: > > > > run_rc_command "$*" > > > >It's because rc.subr will mess up the arguments anyway. > > I think it's more likely that someone would use $* vs. $@ out of force > of habit. :) It's a bad habit IMHO unless one really means $* :-) > >Perhaps > >we should investigate if "$@" can be used consistently to preserve > >original boundaries between arguments to an rc.d script... > > I wouldn't object to some testing on that. I'll change my local copy > and see how it behaves. I took a look at that and found that, as long as we support for random shell expressions in $foo_cmd, the magic wand of "$@" cannot help us without some additional black magic. If $foo_cmd were guaranteed to be merely the name of a function or simple command, then we would need no final eval to execute $foo_cmd. But stuffing shell expressions in $foo_cmd is neat and should be supported. Perhaps we should just tell people that they cannot pass hairy arguments to rc.d scripts -- each argument must be a simple word. -- Yar