From a8ad84893be3f8949d0d3ba220bd78a93db88d3b Mon Sep 17 00:00:00 2001 From: ru Date: Sun, 1 Oct 2006 17:17:29 +0000 Subject: Added rudimentary support for the "include" directive (inside "files"). This will be used to split sys/conf/files into multiple files similar to how this is done in NetBSD. --- usr.sbin/config/mkmakefile.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'usr.sbin/config/mkmakefile.c') diff --git a/usr.sbin/config/mkmakefile.c b/usr.sbin/config/mkmakefile.c index 0bf5620..47a1db0 100644 --- a/usr.sbin/config/mkmakefile.c +++ b/usr.sbin/config/mkmakefile.c @@ -305,6 +305,7 @@ makeenv(void) static void read_file(char *fname) { + char ifname[MAXPATHLEN]; FILE *fp; struct file_list *tp; struct device *dp; @@ -318,6 +319,7 @@ read_file(char *fname) err(1, "%s", fname); next: /* + * include "filename" * filename [ standard | mandatory | optional ] * [ dev* [ | dev* ... ] | profiling-routine ] [ no-obj ] * [ compile-with "compile rule" [no-implicit-rule] ] @@ -337,6 +339,18 @@ next: ; goto next; } + if (eq(wd, "include")) { + next_quoted_word(fp, wd); + if (wd == 0) { + printf("%s: missing include filename.\n", fname); + exit(1); + } + (void) snprintf(ifname, sizeof(ifname), "../../%s", wd); + read_file(ifname); + while (((wd = get_word(fp)) != (char *)EOF) && wd) + ; + goto next; + } this = ns(wd); next_word(fp, wd); if (wd == 0) { -- cgit v1.1