diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2004-10-24 09:38:41 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2004-10-24 09:38:41 +0000 |
commit | 9b736ef9e62df55e151501d1c3cfd515c7980b2d (patch) | |
tree | 66b03d905fba74255773f605269278ffeb832448 /usr.sbin | |
parent | 7d9aed9c4c45a27594bd33521295b8f13f2bb77a (diff) | |
download | src-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.l | 10 |
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)); |