X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=secnet.git;a=blobdiff_plain;f=conffile.fl;h=2cfa21b10f96202635e8d33431802d136a6ca791;hp=66caa1f04cb9d789aa3f499cc28fbf948ff52dd3;hb=a25b1149662cae9a8fad70405d195b73f74f3fdd;hpb=4f5e39ecfaa49376b0a5c3a4c384e91a828c1105 diff --git a/conffile.fl b/conffile.fl index 66caa1f..2cfa21b 100644 --- a/conffile.fl +++ b/conffile.fl @@ -1,7 +1,13 @@ /* the "incl" state is used for picking up the name of an include file */ %x incl +%option nounput +%option noinput +%option never-interactive + %{ +#include +#include #include #include #include @@ -24,13 +30,13 @@ do{ \ struct include_stack_item { YY_BUFFER_STATE bst; uint32_t lineno; - string_t file; + cstring_t file; }; struct include_stack_item include_stack[MAX_INCLUDE_DEPTH]; int include_stack_ptr=0; -uint32_t config_lineno=0; -string_t config_file="xxx"; +int config_lineno=0; +cstring_t config_file="xxx"; static struct p_node *leafnode(uint32_t type) { @@ -92,6 +98,15 @@ include BEGIN(incl); yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); BEGIN(INITIAL); } +\n { /* include with no filename */ + Message(M_FATAL,"config file %s line %d: %s\n",config_file, + config_lineno,"``include'' requires a filename"); + BEGIN(INITIAL); + assert(config_lineno < INT_MAX); + ++config_lineno; + ++yynerrs; +} + <> { if (--include_stack_ptr < 0) { yyterminate();