aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2004-10-24 09:38:41 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2004-10-24 09:38:41 +0000
commit9b736ef9e62df55e151501d1c3cfd515c7980b2d (patch)
tree66b03d905fba74255773f605269278ffeb832448 /usr.sbin
parent7d9aed9c4c45a27594bd33521295b8f13f2bb77a (diff)
downloadsrc-9b736ef9e62df55e151501d1c3cfd515c7980b2d.tar.gz
src-9b736ef9e62df55e151501d1c3cfd515c7980b2d.zip
If the file specified in an "include" line does not exist in the current
directory, and its name does not begin with a period or a forward slash, go look for it in ../../conf. Wished for by: scottl MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=136872
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/config/lang.l10
1 files changed, 9 insertions, 1 deletions
diff --git a/usr.sbin/config/lang.l b/usr.sbin/config/lang.l
index 801d5082a859..f43322068d3a 100644
--- a/usr.sbin/config/lang.l
+++ b/usr.sbin/config/lang.l
@@ -215,10 +215,18 @@ include(const char *fname, int ateof)
{
FILE *fp;
struct incl *in;
+ char *fnamebuf;
fp = fopen(fname, "r");
+ if (fp == NULL && fname[0] != '.' && fname[0] != '/') {
+ asprintf(&fnamebuf, "../../conf/%s", fname);
+ if (fnamebuf != NULL) {
+ fp = fopen(fnamebuf, "r");
+ free(fnamebuf);
+ }
+ }
if (fp == NULL) {
- yyerror("cannot open file");
+ yyerror("cannot open included file");
return (-1);
}
in = malloc(sizeof(*in));