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 *);