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