diff options
author | asomers <asomers@FreeBSD.org> | 2014-04-10 19:51:33 +0000 |
---|---|---|
committer | asomers <asomers@FreeBSD.org> | 2014-04-10 19:51:33 +0000 |
commit | 2ab6848d6397c8c2d4f1df090f94496307c4af08 (patch) | |
tree | cdbeb9cf60fb322b42638c492b3f0c1f75f3ec64 /usr.sbin/config/main.c | |
parent | 4ebc67638dcb114eea289b35532ed22d0588f5f8 (diff) | |
download | FreeBSD-src-2ab6848d6397c8c2d4f1df090f94496307c4af08.zip FreeBSD-src-2ab6848d6397c8c2d4f1df090f94496307c4af08.tar.gz |
MFC r263429
Fix kern/187712: config(8) does not respect KERNCONFDIR.
The impact of this bug is that you cannot build a kernel if both of the
following are true:
1) The kernel config file is in a non-default location
2) The kernel config file uses the "include" statement from config(5).
usr.sbin/config/main.c
usr.sbin/config/config.8
usr.sbin/config/config.h
usr.sbin/config/lang.l
Added a "-I path" option to config(8). By analogy to cc(1), it adds
an extra path in which the "include" statement will search for
files.
Makefile.inc1
Pass "-I ${KERNCONFDIR}" to config(8).
Diffstat (limited to 'usr.sbin/config/main.c')
-rw-r--r-- | usr.sbin/config/main.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/usr.sbin/config/main.c b/usr.sbin/config/main.c index 78bb13d..86ecfa6 100644 --- a/usr.sbin/config/main.c +++ b/usr.sbin/config/main.c @@ -110,15 +110,25 @@ main(int argc, char **argv) int ch, len; char *p; char *kernfile; + struct includepath* ipath; int printmachine; printmachine = 0; kernfile = NULL; - while ((ch = getopt(argc, argv, "Cd:gmpVx:")) != -1) + SLIST_INIT(&includepath); + while ((ch = getopt(argc, argv, "CI:d:gmpVx:")) != -1) switch (ch) { case 'C': filebased = 1; break; + case 'I': + ipath = (struct includepath *) \ + calloc(1, sizeof (struct includepath)); + if (ipath == NULL) + err(EXIT_FAILURE, "calloc"); + ipath->path = optarg; + SLIST_INSERT_HEAD(&includepath, ipath, path_next); + break; case 'm': printmachine = 1; break; |