From d36d838df5f726e1f6845fe0e6e5c188426ac00d Mon Sep 17 00:00:00 2001 From: Pavel Machek Date: Wed, 17 Mar 1999 10:19:07 +0000 Subject: accept & reject should now work --- filter/config.Y | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'filter/config.Y') diff --git a/filter/config.Y b/filter/config.Y index 103acd8..3577b19 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -19,7 +19,8 @@ CF_HDR CF_DECLS -CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, DIE, IF) +CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, IF, + ACCEPT, REJECT, ERROR, QUITBIRD) %type term %type block @@ -30,11 +31,12 @@ CF_GRAMMAR CF_ADDTO(conf, function) function: FUNCTION SYM '(' ')' '{' cmds '}' { - extern struct f_inst *last_func; + extern struct f_inst *autoexec_func; if ($2->class != SYM_VOID) cf_error("Symbol already defined" ); $2->class = SYM_FUNCTION; $2->def = $6; - last_func = $6; + if (!strcasecmp($2->name, "autoexec")) + autoexec_func = $6; printf("Hmm, we've got one function here\n"); } ; @@ -150,9 +152,25 @@ term: $$->code = 'd'; $$->arg1 = $3; } - | DIE { + | QUITBIRD { $$ = f_new_inst(); $$->code = '!'; + (int) $$->arg1 = F_QUITBIRD; + } + | ACCEPT { + $$ = f_new_inst(); + $$->code = '!'; + (int) $$->arg1 = F_ACCEPT; + } + | REJECT { + $$ = f_new_inst(); + $$->code = '!'; + (int) $$->arg1 = F_REJECT; + } + | ERROR { + $$ = f_new_inst(); + $$->code = '!'; + (int) $$->arg1 = F_ERROR; } | PRINTDEBUG { $$ = f_new_inst(); -- cgit v1.2.3