From owner-freebsd-arch@FreeBSD.ORG Wed Oct 8 04:47:28 2003 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6F70516A4B3; Wed, 8 Oct 2003 04:47:28 -0700 (PDT) Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by mx1.FreeBSD.org (Postfix) with ESMTP id AC7A443FD7; Wed, 8 Oct 2003 04:47:26 -0700 (PDT) (envelope-from bde@zeta.org.au) Received: from gamplex.bde.org (katana.zip.com.au [61.8.7.246]) by mailman.zeta.org.au (8.9.3p2/8.8.7) with ESMTP id VAA11652; Wed, 8 Oct 2003 21:47:09 +1000 Date: Wed, 8 Oct 2003 21:45:47 +1000 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: "Adam C. Migus" In-Reply-To: <49955.192.168.4.2.1065074430.squirrel@mail.migus.org> Message-ID: <20031008212302.T4729@gamplex.bde.org> References: <20030925092319.H5418@gamplex.bde.org><49939.204.254.155.35.1064593320.squirrel@mail.migus.org> <49955.192.168.4.2.1065074430.squirrel@mail.migus.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: Stefan Farfeleder cc: arch@FreeBSD.org cc: John Baldwin Subject: Re: sys/conf/DEFAULT[S] X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2003 11:47:28 -0000 On Thu, 2 Oct 2003, Adam C. Migus wrote: > > On Fri, 26 Sep 2003, Adam C. Migus wrote: > > This patch works for me, please let me know if there's any problems > with it or you'd like a PR. % ==== //depot/user/amigus/freebsd-amigus/src/usr.sbin/config/config.y#1 - /src/p4/user/amigus/perforce.freebsd.org/freebsd-amigus/usr.sbin/config/config.y ==== % @@ -118,6 +118,8 @@ % | % Config_spec SEMICOLON % | % + Include % + | % SEMICOLON % | % error SEMICOLON % @@ -164,9 +166,7 @@ % = { % hints = $2; % hintmode = 1; % - } | % - INCLUDE ID % - = { include($2, 0); }; % + }; % % System_spec: % CONFIG System_id System_parameter_list % @@ -265,6 +265,11 @@ % rmdev($2); % } ; % % +Include: % + INCLUDE ID % + = { include($2, 0); }; % + % + % %% % % void I found 1 problem with this: it doesn't require SEMICOLON after "INCLUDE ID", so parsing resumes after "ID" when the input stream is switched back to the includer. You can say things like include FOO device foo and then the "device foo" directive actually works. This can be considered a feature, but the following is not: include GENERIC.local at the end of GENERIC should be a syntax error, but it actually matches ID = GENERIC and includes GENERIC recursively, which gives a confusing error message. There would be a syntax error on switching back but config aborts before then. (Filenames other than single identifiers must be quoted to avoid problems like this. This is not very obvious since config was changed to not require quotes in most contexts.) Stefan's version requires SEMICOLON: % Index: src/usr.sbin/config/config.y % =================================================================== % RCS file: /usr/home/ncvs/src/usr.sbin/config/config.y,v % retrieving revision 1.61 % diff -u -r1.61 config.y % --- src/usr.sbin/config/config.y 6 Jul 2003 02:00:52 -0000 1.61 % +++ src/usr.sbin/config/config.y 27 Sep 2003 10:39:13 -0000 % @@ -118,6 +118,9 @@ % | % Config_spec SEMICOLON % | % + INCLUDE ID SEMICOLON % + = { include($2, 0); }; % + | % SEMICOLON % | % error SEMICOLON % @@ -164,9 +167,7 @@ % = { % hints = $2; % hintmode = 1; % - } | % - INCLUDE ID % - = { include($2, 0); }; % + } % % System_spec: % CONFIG System_id System_parameter_list I lost your examples showing that this doesn't quite work. What is the problem with it? Another old bug is that using "include" defeats the point of the INCLUDE_CONFIG_FILE option (since included files aren't expanded). Bruce