Module: sip-router Branch: master Commit: 4c5120b7925eae1d9b5e1215c7fc579441201e41 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=4c5120b7...
Author: Alex Hermann alex@speakup.nl Committer: Alex Hermann alex@speakup.nl Date: Thu Jun 16 16:01:33 2011 +0200
core: Allow SUBST in include_file and import_file.
---
cfg.lex | 20 ++++++++++++++------ 1 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/cfg.lex b/cfg.lex index 7b984f1..82b4cdc 100644 --- a/cfg.lex +++ b/cfg.lex @@ -1298,21 +1298,29 @@ IMPORTFILE "import_file"
<INCLF>[ \t]* /* eat the whitespace */ <INCLF>[^ \t\n]+ { /* get the include file name */ - if(sr_push_yy_state(yytext, 0)<0) + memset(&s_buf, 0, sizeof(s_buf)); + addstr(&s_buf, yytext, yyleng); + r = pp_subst_run(&s_buf.s); + if(sr_push_yy_state(s_buf.s, 0)<0) { LOG(L_CRIT, "error at %s line %d\n", (finame)?finame:"cfg", line); exit(-1); } + memset(&s_buf, 0, sizeof(s_buf)); BEGIN(INITIAL); }
<IMPTF>[ \t]* /* eat the whitespace */ <IMPTF>[^ \t\n]+ { /* get the import file name */ - if(sr_push_yy_state(yytext, 1)<0) + memset(&s_buf, 0, sizeof(s_buf)); + addstr(&s_buf, yytext, yyleng); + r = pp_subst_run(&s_buf.s); + if(sr_push_yy_state(s_buf.s, 1)<0) { LOG(L_CRIT, "error at %s line %d\n", (finame)?finame:"cfg", line); exit(-1); } + memset(&s_buf, 0, sizeof(s_buf)); BEGIN(INITIAL); }
@@ -1496,12 +1504,12 @@ static int sr_push_yy_state(char *fin, int mode) l = strlen(fin); if(l>=MAX_INCLUDE_FNAME) { - LOG(L_CRIT, "included file name too long\n"); + LOG(L_CRIT, "included file name too long: %s\n", fin); return -1; } if(fin[0]!='"' || fin[l-1]!='"') { - LOG(L_CRIT, "included file name must be between quotes\n"); + LOG(L_CRIT, "included file name must be between quotes: %s\n", fin); return -1; } j = 0; @@ -1511,7 +1519,7 @@ static int sr_push_yy_state(char *fin, int mode) case '\': if(i+1==l-1) { - LOG(L_CRIT, "invalid escape in included file name\n"); + LOG(L_CRIT, "invalid escape at %d in included file name: %s\n", i, fin); return -1; } i++; @@ -1535,7 +1543,7 @@ static int sr_push_yy_state(char *fin, int mode) } if(j==0) { - LOG(L_CRIT, "invalid included file name\n"); + LOG(L_CRIT, "invalid included file name: %s\n", fin); return -1; } fbuf[j] = '\0';