32 |
int yyerror(char * msg); |
int yyerror(char * msg); |
33 |
|
|
34 |
/* yydebug = 1; */ |
/* yydebug = 1; */ |
|
|
|
35 |
#ifdef DEBUG |
#ifdef DEBUG |
36 |
#define DBG(x) x |
#define DBG(x) x |
37 |
#else |
#else |
39 |
#endif |
#endif |
40 |
|
|
41 |
char *arg1hold; |
char *arg1hold; |
42 |
|
char *arg2hold; |
43 |
|
char *arg3hold; |
44 |
char mime_type[256]; /* global to inherit */ |
char mime_type[256]; /* global to inherit */ |
45 |
|
|
46 |
%} |
%} |
52 |
}; |
}; |
53 |
|
|
54 |
/* boa.conf tokens */ |
/* boa.conf tokens */ |
55 |
%token <cval> STMT_NO_ARGS STMT_ONE_ARG STMT_TWO_ARGS |
%token <cval> STMT_NO_ARGS STMT_ONE_ARG STMT_TWO_ARGS STMT_THREE_ARGS STMT_FOUR_ARGS |
56 |
|
|
57 |
/* mime.type tokens */ |
/* mime.type tokens */ |
58 |
%token <sval> MIMETYPE |
%token <sval> MIMETYPE |
59 |
%token <sval> STRING |
%token <sval> STRING |
60 |
%token <ival> INTEGER |
%token <ival> INTEGER |
61 |
|
%token STRING_SEP ':' |
62 |
|
|
63 |
%start ConfigFiles |
%start ConfigFiles |
64 |
|
|
75 |
StmtNoArgs |
StmtNoArgs |
76 |
| StmtOneArg |
| StmtOneArg |
77 |
| StmtTwoArgs |
| StmtTwoArgs |
78 |
|
| StmtThreeArgs |
79 |
|
| StmtFourArgs |
80 |
; |
; |
81 |
|
|
82 |
StmtNoArgs: STMT_NO_ARGS |
StmtNoArgs: STMT_NO_ARGS |
83 |
{ if ($1->action) { |
{ if ($1->action) { |
84 |
DBG(printf("StmtNoArgs: %s\n",$1->name);) |
DBG(printf("StmtNoArgs: %s\n",$1->name);) |
85 |
$1->action(NULL,NULL,$1->object); |
$1->action(NULL, NULL, NULL,NULL,$1->object); |
86 |
} |
} |
87 |
} |
} |
88 |
; |
; |
90 |
StmtOneArg: STMT_ONE_ARG STRING |
StmtOneArg: STMT_ONE_ARG STRING |
91 |
{ if ($1->action) { |
{ if ($1->action) { |
92 |
DBG(printf("StmtOneArg: %s %s\n",$1->name,$2);) |
DBG(printf("StmtOneArg: %s %s\n",$1->name,$2);) |
93 |
$1->action($2,NULL,$1->object); |
$1->action($2,NULL, NULL, NULL,$1->object); |
94 |
} |
} |
95 |
} |
} |
96 |
; |
; |
101 |
{ if ($1->action) { |
{ if ($1->action) { |
102 |
DBG(printf("StmtTwoArgs: '%s' '%s' '%s'\n", |
DBG(printf("StmtTwoArgs: '%s' '%s' '%s'\n", |
103 |
$1->name,arg1hold,$4);) |
$1->name,arg1hold,$4);) |
104 |
$1->action($4,arg1hold,$1->object); |
$1->action(arg1hold, $4,NULL, NULL, $1->object); |
105 |
|
} |
106 |
|
free(arg1hold); |
107 |
|
} |
108 |
|
; |
109 |
|
|
110 |
|
StmtThreeArgs: STMT_THREE_ARGS STRING |
111 |
|
{ arg1hold = strdup($2); } |
112 |
|
STRING |
113 |
|
{ arg2hold = strdup($4); } |
114 |
|
STRING |
115 |
|
{ if ($1->action) { |
116 |
|
DBG(printf("StmtThreeArgs: '%s' '%s' '%s' '%s'\n", |
117 |
|
$1->name,arg1hold, arg2hold, $6);) |
118 |
|
$1->action(arg1hold, arg2hold, $6, NULL, $1->object); |
119 |
} |
} |
120 |
free(arg1hold); |
free(arg1hold); |
121 |
|
free(arg2hold); |
122 |
} |
} |
123 |
; |
; |
124 |
|
|
125 |
|
StmtFourArgs: STMT_FOUR_ARGS STRING |
126 |
|
{ arg1hold = strdup($2); } |
127 |
|
STRING |
128 |
|
{ arg2hold = strdup($4); } |
129 |
|
STRING |
130 |
|
{ arg3hold = strdup($6); } |
131 |
|
STRING |
132 |
|
{ if ($1->action) { |
133 |
|
DBG(printf("StmtFourArgs: '%s' '%s' '%s' '%s' '%s'\n", |
134 |
|
$1->name,arg1hold, arg2hold, arg3hold, $8);) |
135 |
|
$1->action(arg1hold, arg2hold, arg3hold, $8, $1->object); |
136 |
|
} |
137 |
|
free(arg1hold); |
138 |
|
free(arg2hold); |
139 |
|
free(arg3hold); |
140 |
|
} |
141 |
|
; |
142 |
|
|
143 |
/******************* mime.types **********************/ |
/******************* mime.types **********************/ |
144 |
|
|