--- hydra/src/boa_grammar.y 2002/09/21 13:53:38 1.1 +++ hydra/src/boa_grammar.y 2002/09/24 17:12:47 1.2 @@ -20,7 +20,7 @@ * */ -/* $Id: boa_grammar.y,v 1.1 2002/09/21 13:53:38 nmav Exp $*/ +/* $Id: boa_grammar.y,v 1.2 2002/09/24 17:12:47 nmav Exp $*/ #include #include @@ -40,6 +40,8 @@ #endif char *arg1hold; +char *arg2hold; +char *arg3hold; char mime_type[256]; /* global to inherit */ %} @@ -51,12 +53,13 @@ }; /* boa.conf tokens */ -%token STMT_NO_ARGS STMT_ONE_ARG STMT_TWO_ARGS +%token STMT_NO_ARGS STMT_ONE_ARG STMT_TWO_ARGS STMT_FOUR_ARGS /* mime.type tokens */ %token MIMETYPE %token STRING %token INTEGER +%token STRING_SEP ':' %start ConfigFiles @@ -73,12 +76,13 @@ StmtNoArgs | StmtOneArg | StmtTwoArgs + | StmtFourArgs ; StmtNoArgs: STMT_NO_ARGS { if ($1->action) { DBG(printf("StmtNoArgs: %s\n",$1->name);) - $1->action(NULL,NULL,$1->object); + $1->action(NULL, NULL, NULL,NULL,$1->object); } } ; @@ -86,7 +90,7 @@ StmtOneArg: STMT_ONE_ARG STRING { if ($1->action) { DBG(printf("StmtOneArg: %s %s\n",$1->name,$2);) - $1->action($2,NULL,$1->object); + $1->action($2,NULL, NULL, NULL,$1->object); } } ; @@ -97,13 +101,28 @@ { if ($1->action) { DBG(printf("StmtTwoArgs: '%s' '%s' '%s'\n", $1->name,arg1hold,$4);) - $1->action($4,arg1hold,$1->object); + $1->action($4,arg1hold,NULL, NULL, $1->object); } free(arg1hold); } +StmtFourArgs: STMT_FOUR_ARGS STRING + { arg1hold = strdup($2); } + STRING + { arg2hold = strdup($4); } + STRING + { arg3hold = strdup($6); } + STRING + { if ($1->action) { + DBG(printf("StmtTwoArgs: '%s' '%s' '%s' '%s' '%s'\n", + $1->name,arg1hold, arg2hold, arg3hold, $8);) + $1->action(arg1hold, arg2hold, arg3hold, $8, $1->object); + } + free(arg1hold); + free(arg2hold); + free(arg3hold); + } ; - /******************* mime.types **********************/ MimeTypeStmts: MimeTypeStmts MimeTypeStmt