Module Name: src Committed By: uebayasi Date: Fri Oct 10 11:09:50 UTC 2014
Modified Files: src/usr.bin/config: gram.y sem.c sem.h Log Message: Allow dependency on undefined attributes, so that attribute definitions can be written out-of-order, like: # b is not defined yet define a: b file a.c a # b is defined here define b fine b.c To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/usr.bin/config/gram.y cvs rdiff -u -r1.54 -r1.55 src/usr.bin/config/sem.c cvs rdiff -u -r1.13 -r1.14 src/usr.bin/config/sem.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/config/gram.y diff -u src/usr.bin/config/gram.y:1.42 src/usr.bin/config/gram.y:1.43 --- src/usr.bin/config/gram.y:1.42 Fri Oct 10 06:13:30 2014 +++ src/usr.bin/config/gram.y Fri Oct 10 11:09:50 2014 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: gram.y,v 1.42 2014/10/10 06:13:30 uebayasi Exp $ */ +/* $NetBSD: gram.y,v 1.43 2014/10/10 11:09:50 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -587,7 +587,7 @@ depends: /* one depend item (which is an attribute) */ depend: - WORD { $$ = getattr($1); } + WORD { $$ = refattr($1); } ; /* list of option depends, may be empty */ Index: src/usr.bin/config/sem.c diff -u src/usr.bin/config/sem.c:1.54 src/usr.bin/config/sem.c:1.55 --- src/usr.bin/config/sem.c:1.54 Fri Oct 10 10:16:19 2014 +++ src/usr.bin/config/sem.c Fri Oct 10 11:09:50 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sem.c,v 1.54 2014/10/10 10:16:19 uebayasi Exp $ */ +/* $NetBSD: sem.c,v 1.55 2014/10/10 11:09:50 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -672,12 +672,14 @@ getattr(const char *name) /* * Implicit attribute definition. */ -void +struct attr * refattr(const char *name) { + struct attr *a; - if ((ht_lookup(attrtab, name)) == NULL) - (void)mkattr(name); + if ((a = ht_lookup(attrtab, name)) == NULL) + a = mkattr(name); + return a; } int Index: src/usr.bin/config/sem.h diff -u src/usr.bin/config/sem.h:1.13 src/usr.bin/config/sem.h:1.14 --- src/usr.bin/config/sem.h:1.13 Fri Oct 10 07:48:50 2014 +++ src/usr.bin/config/sem.h Fri Oct 10 11:09:50 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sem.h,v 1.13 2014/10/10 07:48:50 uebayasi Exp $ */ +/* $NetBSD: sem.h,v 1.14 2014/10/10 11:09:50 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -57,7 +57,7 @@ struct devbase *getdevbase(const char *) struct deva *getdevattach(const char *); struct attr *mkattr(const char *); struct attr *getattr(const char *); -void refattr(const char *); +struct attr *refattr(const char *); int getrefattr(const char *, struct attr **); void expandattr(struct attr *, void (*)(struct attr *)); void selectattr(struct attr *);