From b966576f1e740966b35579d612050f4dfc09606c Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Mon, 4 Jul 2011 11:57:55 +0200 Subject: milestone: added BSD-style blocks --- grammar/debian.conf | 4 ++++ grammar/rscript.l | 8 ++++++-- grammar/rscript.y | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) (limited to 'grammar') diff --git a/grammar/debian.conf b/grammar/debian.conf index 79c1f07d..91a67307 100644 --- a/grammar/debian.conf +++ b/grammar/debian.conf @@ -110,6 +110,10 @@ news.notice -/var/log/news/news.notice # NOTE: adjust the list below, or you'll go crazy if you have a reasonably # busy site.. # +!ThisTag ++host1 +-host2 ++* daemon.*;mail.*;\ news.err;\ *.=debug;*.=info;\ diff --git a/grammar/rscript.l b/grammar/rscript.l index 7e7ab925..a4c37c81 100644 --- a/grammar/rscript.l +++ b/grammar/rscript.l @@ -122,9 +122,10 @@ char *currfn; /* name of currently processed file */ ^[ \t]*[,\*a-z]+\.[,!=;\.\*a-z]+ { printf("token prifilt '%s'\n", yytext); yylval.s = strdup(yytext); return PRIFILT; } "*" | +\-\/[^*][^\n]* | \/[^*][^\n]* | [\|\.\-\@:~][^\n]+ | -[a-z0-9_\-\+]+ { yylval.s = strdup(yytext); return LEGACY_ACTION; } +[a-z0-9_][a-z0-9_\-\+]* { yylval.s = strdup(yytext); printf("LEGACY_ACT: '%s'\n", yytext);return LEGACY_ACTION; } ")" { BEGIN INITIAL; return ENDOBJ; } [a-z][a-z0-9_\.]* { yylval.estr = es_newStrFromCStr(yytext, yyleng); return NAME; } @@ -141,7 +142,6 @@ char *currfn; /* name of currently processed file */ [ \n\t] . { printf("INOBJ: invalid char '%s'\n", yytext); } - /* CFSYSLINE is valid in all modes */ \$[a-z]+.*$ { /* see common on $IncludeConfig above */ if(!strncasecmp(yytext, "$includeconfig ", 14)) { yyless(14); @@ -151,6 +151,10 @@ char *currfn; /* name of currently processed file */ return CFSYSLINE; } } +![^ \t\n]+[ \t]*$ { printf("BSD TAG '%s'\n", yytext); yylval.s = strdup(yytext); return BSD_TAG_SELECTOR; } +[+-]\*[ \t\n]*#.*$ { printf("BSD HOST '%s'\n", yytext); yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } +[+-]\*[ \t\n]*$ { printf("BSD HOST '%s'\n", yytext); yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } +^[ \t]*[+-][a-z0-9.:-]+[ \t]*$ { printf("BSD HOST '%s'\n", yytext); yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } \#.*\n /* skip comments in input */ [\n\t ] /* drop whitespace */ diff --git a/grammar/rscript.y b/grammar/rscript.y index 440a5525..186d0981 100644 --- a/grammar/rscript.y +++ b/grammar/rscript.y @@ -27,6 +27,8 @@ extern int yylineno; %token LEGACY_ACTION %token PRIFILT %token PROPFILT +%token BSD_TAG_SELECTOR +%token BSD_HOST_SELECTOR %token IF %token THEN %token OR @@ -73,8 +75,10 @@ extern int yylineno; %% conf: /* empty (to end recursion) */ | obj conf - | cfsysline conf | rule conf + | cfsysline conf + | BSD_TAG_SELECTOR conf + | BSD_HOST_SELECTOR conf obj: BEGINOBJ nvlst ENDOBJ { $$ = cnfobjNew($1, $2); cnfobjPrint($$); -- cgit