librpc: Shorten dcerpc_binding_handle_call a bit
[Samba/vl.git] / source3 / torture / denytest.c
blob5b0eeec2fa75d8f1acbab1783d32866f7f2a1eed
1 /*
2 Unix SMB/CIFS implementation.
3 SMB torture tester - scanning functions
4 Copyright (C) Andrew Tridgell 2001
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include "includes.h"
21 #include "system/filesys.h"
22 #include "torture/proto.h"
23 #include "libsmb/libsmb.h"
25 extern bool torture_showall;
27 enum deny_result {A_0=0, A_X=1, A_R=2, A_W=3, A_RW=5};
30 static const char *denystr(int denymode)
32 struct {
33 int v;
34 const char *name;
35 } deny_modes[] = {
36 {DENY_DOS, "DENY_DOS"},
37 {DENY_ALL, "DENY_ALL"},
38 {DENY_WRITE, "DENY_WRITE"},
39 {DENY_READ, "DENY_READ"},
40 {DENY_NONE, "DENY_NONE"},
41 {DENY_FCB, "DENY_FCB"},
42 {-1, NULL}};
43 int i;
44 for (i=0;deny_modes[i].name;i++) {
45 if (deny_modes[i].v == denymode) return deny_modes[i].name;
47 return "DENY_XXX";
50 static const char *openstr(int mode)
52 struct {
53 int v;
54 const char *name;
55 } open_modes[] = {
56 {O_RDWR, "O_RDWR"},
57 {O_RDONLY, "O_RDONLY"},
58 {O_WRONLY, "O_WRONLY"},
59 {-1, NULL}};
60 int i;
61 for (i=0;open_modes[i].name;i++) {
62 if (open_modes[i].v == mode) return open_modes[i].name;
64 return "O_XXX";
67 static const char *resultstr(enum deny_result res)
69 struct {
70 enum deny_result res;
71 const char *name;
72 } results[] = {
73 {A_X, "X"},
74 {A_0, "-"},
75 {A_R, "R"},
76 {A_W, "W"},
77 {A_RW,"RW"}};
78 int i;
79 for (i=0;ARRAY_SIZE(results);i++) {
80 if (results[i].res == res) return results[i].name;
82 return "*";
85 static struct {
86 int isexe;
87 int mode1, deny1;
88 int mode2, deny2;
89 enum deny_result result;
90 } denytable2[] = {
91 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
92 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
93 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
94 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
95 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
96 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
97 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
98 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
99 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
100 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
101 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
102 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
103 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
104 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
105 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
106 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},
107 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
108 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
109 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
110 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
111 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
112 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
113 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
114 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
115 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_RW},
116 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
117 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_W},
118 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
119 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
120 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
121 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
122 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
123 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
124 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
125 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
126 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
127 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
128 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
129 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
130 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
131 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
132 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
133 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
134 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
135 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
136 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_RW},
137 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_R},
138 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_W},
139 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
140 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
141 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
142 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
143 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
144 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
145 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
146 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
147 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
148 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
149 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
150 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
151 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
152 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
153 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
154 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
155 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
156 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
157 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
158 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
159 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
160 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
161 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
162 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
163 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
164 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
165 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
166 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
167 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
168 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
169 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
170 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
171 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
172 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
173 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
174 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
175 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
176 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
177 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
178 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
179 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
180 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
181 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
182 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
183 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
184 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
185 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
186 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
187 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
188 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
189 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
190 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
191 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
192 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
193 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
194 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
195 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
196 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
197 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
198 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
199 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
200 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
201 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
202 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
203 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
204 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
205 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
206 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
207 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
208 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
209 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
210 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
211 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
212 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
213 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
214 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
215 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
216 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
217 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
218 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
219 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
220 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
221 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
222 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
223 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
224 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
225 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
226 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
227 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
228 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
229 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
230 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
231 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
232 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
233 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
234 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
235 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
236 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
237 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
238 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
239 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
240 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
241 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
242 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
243 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
244 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
245 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
246 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
247 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
248 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
249 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
250 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
251 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
252 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
253 {1, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
254 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
255 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_W},
256 {1, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
257 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
258 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
259 {1, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
260 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
261 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
262 {1, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
263 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
264 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
265 {1, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
266 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
267 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
268 {1, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
269 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
270 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
271 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
272 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
273 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
274 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
275 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
276 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
277 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
278 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
279 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
280 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
281 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
282 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
283 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
284 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
285 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
286 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
287 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
288 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
289 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
290 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
291 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
292 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
293 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
294 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
295 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
296 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
297 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
298 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
299 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
300 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
301 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
302 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
303 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
304 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
305 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
306 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
307 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
308 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
309 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
310 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
311 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
312 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
313 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
314 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
315 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
316 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
317 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
318 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
319 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
320 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
321 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
322 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
323 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
324 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
325 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
326 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
327 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
328 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
329 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
330 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
331 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
332 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
333 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
334 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
335 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
336 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
337 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
338 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
339 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
340 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
341 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
342 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
343 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
344 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
345 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
346 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
347 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
348 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
349 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
350 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
351 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
352 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
353 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
354 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
355 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
356 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
357 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
358 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
359 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
360 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
361 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_0},
362 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
363 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
364 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
365 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
366 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
367 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
368 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
369 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
370 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
371 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
372 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
373 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
374 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
375 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
376 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_0},
377 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
378 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
379 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
380 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
381 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
382 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
383 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
384 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
385 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
386 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
387 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
388 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
389 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
390 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
391 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
392 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
393 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
394 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
395 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
396 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
397 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
398 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
399 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
400 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
401 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
402 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
403 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
404 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
405 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
406 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
407 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
408 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
409 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
410 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
411 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
412 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
413 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
414 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
415 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_0},
416 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_0},
417 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
418 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
419 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
420 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
421 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
422 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
423 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
424 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
425 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
426 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
427 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_0},
428 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
429 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
430 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},
431 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
432 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
433 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_0},
434 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
435 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
436 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
437 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
438 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
439 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
440 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
441 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
442 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
443 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
444 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
445 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
446 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
447 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
448 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
449 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
450 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
451 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_0},
452 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_0},
453 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
454 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
455 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
456 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
457 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
458 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
459 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
460 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
461 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
462 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
463 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
464 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
465 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
466 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
467 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
468 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
469 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
470 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
471 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
472 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
473 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
474 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
475 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
476 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
477 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
478 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
479 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
480 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
481 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
482 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
483 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
484 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
485 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
486 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
487 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
488 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
489 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
490 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
491 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
492 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
493 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
494 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
495 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
496 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
497 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
498 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
499 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
500 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
501 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
502 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
503 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
504 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
505 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
506 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
507 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
508 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
509 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
510 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
511 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
512 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
513 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
514 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
515 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
516 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
517 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
518 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
519 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
520 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
521 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
522 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
523 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
524 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
525 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
526 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
527 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
528 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
529 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
530 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
531 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
532 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
533 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
534 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
535 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
536 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
537 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
538 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
539 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
540 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
541 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
542 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
543 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
544 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
545 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
546 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
547 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
548 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
549 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
550 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
551 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
552 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
553 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
554 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
555 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
556 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
557 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
558 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
559 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
560 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
561 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
562 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
563 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
564 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
565 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
566 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
567 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
568 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
569 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
570 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
571 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
572 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
573 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
574 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
575 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
576 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
577 {0, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
578 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
579 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_0},
580 {0, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
581 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
582 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
583 {0, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
584 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
585 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
586 {0, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
587 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
588 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
589 {0, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
590 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
591 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
592 {0, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
593 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
594 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
595 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
596 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
597 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
598 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
599 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
600 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
601 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
602 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
603 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
604 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
605 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
606 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
607 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
608 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
609 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
610 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
611 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
612 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
613 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
614 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
615 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
616 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
617 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
618 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
619 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
620 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
621 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
622 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
623 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
624 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
625 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
626 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
627 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
628 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
629 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
630 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
631 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_0},
632 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
633 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
634 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
635 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
636 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
637 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
638 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
639 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
640 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
641 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
642 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
643 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
644 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
645 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
646 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
647 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
648 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
649 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
650 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
651 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
652 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
653 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
654 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
655 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
656 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
657 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
658 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
659 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
660 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
661 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
662 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
663 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
664 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
665 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
666 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
667 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
668 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
669 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
670 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
671 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
672 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
673 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
674 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
675 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
676 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
677 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
678 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
679 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
680 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
681 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
682 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
683 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
684 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
685 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_0},
686 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
687 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
688 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
689 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
690 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
691 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
692 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
693 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
694 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
695 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
696 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
697 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
698 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
699 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
700 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_0},
701 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
702 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
703 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
704 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
705 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
706 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
707 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
708 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
709 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
710 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
711 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
712 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
713 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
714 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
715 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
716 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
717 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
718 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
719 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
720 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
721 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
722 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
723 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
724 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
725 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
726 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
727 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
728 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
729 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
730 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
731 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
732 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
733 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
734 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
735 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
736 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
737 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
738 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0}
742 static struct {
743 int isexe;
744 int mode1, deny1;
745 int mode2, deny2;
746 enum deny_result result;
747 } denytable1[] = {
748 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
749 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
750 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
751 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
752 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
753 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
754 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
755 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
756 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
757 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
758 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
759 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
760 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
761 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
762 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
763 {1, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},
764 {1, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
765 {1, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
766 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
767 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
768 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
769 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
770 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
771 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
772 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_RW},
773 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
774 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_W},
775 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
776 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
777 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
778 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
779 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
780 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
781 {1, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
782 {1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
783 {1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
784 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
785 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
786 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
787 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
788 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
789 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
790 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
791 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
792 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
793 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_RW},
794 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_R},
795 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_W},
796 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
797 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
798 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
799 {1, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
800 {1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
801 {1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
802 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
803 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
804 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
805 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
806 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
807 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
808 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
809 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
810 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
811 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
812 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
813 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
814 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
815 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
816 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
817 {1, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
818 {1, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
819 {1, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
820 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
821 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
822 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
823 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
824 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
825 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
826 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
827 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
828 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
829 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
830 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
831 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
832 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
833 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
834 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
835 {1, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
836 {1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
837 {1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
838 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
839 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
840 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
841 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
842 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
843 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
844 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
845 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
846 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
847 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
848 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
849 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
850 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
851 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
852 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
853 {1, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
854 {1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
855 {1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
856 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
857 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
858 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
859 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
860 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
861 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
862 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
863 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
864 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
865 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
866 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
867 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
868 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
869 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
870 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
871 {1, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
872 {1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
873 {1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
874 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
875 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
876 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
877 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
878 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
879 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
880 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
881 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
882 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
883 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
884 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
885 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
886 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
887 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
888 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
889 {1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
890 {1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
891 {1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
892 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
893 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
894 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
895 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
896 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
897 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
898 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
899 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
900 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
901 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
902 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
903 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
904 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
905 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
906 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
907 {1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
908 {1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
909 {1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
910 {1, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
911 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
912 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_W},
913 {1, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
914 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
915 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
916 {1, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
917 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
918 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
919 {1, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
920 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
921 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
922 {1, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
923 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
924 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
925 {1, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
926 {1, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
927 {1, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
928 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
929 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
930 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
931 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
932 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
933 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
934 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
935 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
936 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
937 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
938 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
939 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
940 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
941 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
942 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
943 {1, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
944 {1, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
945 {1, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
946 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
947 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
948 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
949 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
950 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
951 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
952 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
953 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
954 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
955 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
956 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
957 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
958 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
959 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
960 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
961 {1, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
962 {1, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
963 {1, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
964 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
965 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
966 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
967 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
968 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
969 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
970 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
971 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
972 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
973 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
974 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
975 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
976 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
977 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
978 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
979 {1, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
980 {1, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
981 {1, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
982 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
983 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
984 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
985 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
986 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
987 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
988 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
989 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
990 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
991 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
992 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
993 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
994 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
995 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
996 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
997 {1, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
998 {1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
999 {1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
1000 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
1001 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
1002 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
1003 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
1004 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
1005 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
1006 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
1007 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
1008 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
1009 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
1010 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
1011 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
1012 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
1013 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
1014 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
1015 {1, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
1016 {1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
1017 {1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
1018 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
1019 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
1020 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
1021 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
1022 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
1023 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
1024 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
1025 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
1026 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
1027 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
1028 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
1029 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
1030 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
1031 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
1032 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
1033 {1, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
1034 {1, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
1035 {1, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
1036 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
1037 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
1038 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
1039 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
1040 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
1041 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
1042 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
1043 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
1044 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
1045 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
1046 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
1047 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
1048 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
1049 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
1050 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
1051 {1, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
1052 {1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
1053 {1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
1054 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
1055 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
1056 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
1057 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
1058 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
1059 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
1060 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
1061 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
1062 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
1063 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
1064 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
1065 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
1066 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
1067 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
1068 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
1069 {1, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
1070 {1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
1071 {1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
1072 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
1073 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
1074 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
1075 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
1076 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
1077 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
1078 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
1079 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
1080 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
1081 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
1082 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
1083 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
1084 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_0},
1085 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
1086 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
1087 {0, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_RW},
1088 {0, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_RW},
1089 {0, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_RW},
1090 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_0},
1091 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
1092 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
1093 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
1094 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
1095 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
1096 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
1097 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
1098 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
1099 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
1100 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
1101 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
1102 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
1103 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
1104 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
1105 {0, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
1106 {0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
1107 {0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
1108 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
1109 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
1110 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
1111 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
1112 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
1113 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
1114 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
1115 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
1116 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
1117 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
1118 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
1119 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
1120 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
1121 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
1122 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
1123 {0, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_RW},
1124 {0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_RW},
1125 {0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_RW},
1126 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
1127 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
1128 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
1129 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
1130 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
1131 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
1132 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
1133 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
1134 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
1135 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
1136 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
1137 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
1138 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
1139 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
1140 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
1141 {0, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
1142 {0, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
1143 {0, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
1144 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
1145 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
1146 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
1147 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
1148 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
1149 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
1150 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
1151 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
1152 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
1153 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
1154 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
1155 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
1156 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
1157 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
1158 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
1159 {0, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
1160 {0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
1161 {0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
1162 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
1163 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
1164 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
1165 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
1166 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
1167 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
1168 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
1169 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
1170 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
1171 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
1172 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
1173 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
1174 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
1175 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
1176 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
1177 {0, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
1178 {0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
1179 {0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
1180 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
1181 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
1182 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
1183 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
1184 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
1185 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
1186 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
1187 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
1188 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
1189 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
1190 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
1191 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
1192 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
1193 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
1194 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
1195 {0, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
1196 {0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
1197 {0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
1198 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
1199 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
1200 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
1201 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
1202 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
1203 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
1204 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
1205 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
1206 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
1207 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
1208 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
1209 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
1210 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
1211 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
1212 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
1213 {0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
1214 {0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
1215 {0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
1216 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
1217 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
1218 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
1219 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
1220 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
1221 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
1222 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
1223 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
1224 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
1225 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
1226 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
1227 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
1228 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
1229 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
1230 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
1231 {0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
1232 {0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
1233 {0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
1234 {0, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
1235 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
1236 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_0},
1237 {0, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
1238 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
1239 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
1240 {0, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
1241 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
1242 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
1243 {0, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
1244 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
1245 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
1246 {0, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
1247 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
1248 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
1249 {0, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
1250 {0, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
1251 {0, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
1252 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
1253 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
1254 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
1255 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
1256 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
1257 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
1258 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
1259 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
1260 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
1261 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
1262 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
1263 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
1264 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
1265 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
1266 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
1267 {0, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
1268 {0, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
1269 {0, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
1270 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
1271 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
1272 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
1273 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
1274 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
1275 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
1276 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
1277 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
1278 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
1279 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
1280 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
1281 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
1282 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
1283 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
1284 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
1285 {0, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
1286 {0, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
1287 {0, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
1288 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_0},
1289 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
1290 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
1291 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
1292 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
1293 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
1294 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
1295 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
1296 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
1297 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
1298 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
1299 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
1300 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
1301 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
1302 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
1303 {0, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
1304 {0, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
1305 {0, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
1306 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
1307 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
1308 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
1309 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
1310 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
1311 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
1312 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
1313 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
1314 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
1315 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
1316 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
1317 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
1318 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
1319 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
1320 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
1321 {0, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
1322 {0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
1323 {0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
1324 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
1325 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
1326 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
1327 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
1328 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
1329 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
1330 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
1331 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
1332 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
1333 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
1334 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
1335 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
1336 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
1337 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
1338 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
1339 {0, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
1340 {0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
1341 {0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
1342 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
1343 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
1344 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
1345 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
1346 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
1347 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
1348 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
1349 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
1350 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
1351 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
1352 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
1353 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
1354 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
1355 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
1356 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
1357 {0, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
1358 {0, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
1359 {0, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
1360 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
1361 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
1362 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
1363 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
1364 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
1365 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
1366 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
1367 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
1368 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
1369 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
1370 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
1371 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
1372 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
1373 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
1374 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
1375 {0, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
1376 {0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
1377 {0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
1378 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
1379 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
1380 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
1381 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
1382 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
1383 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
1384 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
1385 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
1386 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
1387 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
1388 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
1389 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
1390 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
1391 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
1392 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
1393 {0, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
1394 {0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
1395 {0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW}
1399 static void progress_bar(unsigned i, unsigned total)
1401 if (i % 10 != 0) return;
1402 printf("%5d/%5d\r", i, total);
1403 fflush(stdout);
1407 this produces a matrix of deny mode behaviour for 1 connection
1409 bool torture_denytest1(int dummy)
1411 struct cli_state *cli1;
1412 uint16_t fnum1, fnum2;
1413 int i;
1414 bool correct = True;
1415 NTSTATUS ret1, ret2, status;
1416 const char *fnames[2] = {"\\denytest1.dat", "\\denytest1.exe"};
1417 size_t nread;
1419 if (!torture_open_connection(&cli1, 0)) {
1420 return False;
1423 printf("starting denytest1\n");
1425 for (i=0;i<2;i++) {
1426 cli_unlink(cli1, fnames[i], FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
1427 cli_openx(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE, &fnum1);
1428 cli_writeall(cli1, fnum1, 0, (const uint8_t *)fnames[i], 0,
1429 strlen(fnames[i]), NULL);
1430 cli_close(cli1, fnum1);
1433 printf("testing %ld entries\n", (unsigned long)ARRAY_SIZE(denytable1));
1435 for (i=0; i<ARRAY_SIZE(denytable1); i++) {
1436 enum deny_result res;
1437 const char *fname = fnames[denytable1[i].isexe];
1439 progress_bar(i, ARRAY_SIZE(denytable1));
1441 ret1 = cli_openx(cli1, fname,
1442 denytable1[i].mode1,
1443 denytable1[i].deny1, &fnum1);
1444 ret2 = cli_openx(cli1, fname,
1445 denytable1[i].mode2,
1446 denytable1[i].deny2, &fnum2);
1448 if (!NT_STATUS_IS_OK(ret1)) {
1449 res = A_X;
1450 } else if (!NT_STATUS_IS_OK(ret2)) {
1451 res = A_0;
1452 } else {
1453 char x = 1;
1454 res = A_0;
1456 status = cli_read(cli1, fnum2, (char *)&x, 0, 1,
1457 &nread);
1458 if (NT_STATUS_IS_OK(status) && nread == 1) {
1459 res += A_R;
1461 if (NT_STATUS_IS_OK(cli_writeall(cli1, fnum2, 0,
1462 (uint8_t *)&x, 0, 1,
1463 NULL))) {
1464 res += A_W;
1468 if (res != denytable1[i].result) {
1469 correct = False;
1472 if (torture_showall || res != denytable1[i].result) {
1473 printf("%s %8s %10s %8s %10s %s (correct=%s)\n",
1474 fname,
1475 denystr(denytable1[i].deny1),
1476 openstr(denytable1[i].mode1),
1477 denystr(denytable1[i].deny2),
1478 openstr(denytable1[i].mode2),
1479 resultstr(res),
1480 resultstr(denytable1[i].result));
1483 if (NT_STATUS_IS_OK(ret1)) {
1484 cli_close(cli1, fnum1);
1486 if (NT_STATUS_IS_OK(ret2)) {
1487 cli_close(cli1, fnum2);
1491 for (i=0;i<2;i++) {
1492 cli_unlink(cli1, fnames[i], FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
1495 if (!torture_close_connection(cli1)) {
1496 correct = False;
1499 printf("finshed denytest1\n");
1500 return correct;
1505 this produces a matrix of deny mode behaviour with 2 connections
1507 bool torture_denytest2(int dummy)
1509 static struct cli_state *cli1, *cli2;
1510 uint16_t fnum1, fnum2;
1511 int i;
1512 bool correct = True;
1513 NTSTATUS ret1, ret2, status;
1514 const char *fnames[2] = {"\\denytest2.dat", "\\denytest2.exe"};
1515 size_t nread;
1517 if (!torture_open_connection(&cli1, 0) || !torture_open_connection(&cli2, 1)) {
1518 return False;
1521 printf("starting denytest2\n");
1523 for (i=0;i<2;i++) {
1524 cli_unlink(cli1, fnames[i], FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
1525 cli_openx(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE, &fnum1);
1526 cli_writeall(cli1, fnum1, 0, (const uint8_t *)fnames[i], 0,
1527 strlen(fnames[i]), NULL);
1528 cli_close(cli1, fnum1);
1531 for (i=0; i<ARRAY_SIZE(denytable2); i++) {
1532 enum deny_result res;
1533 const char *fname = fnames[denytable2[i].isexe];
1535 progress_bar(i, ARRAY_SIZE(denytable2));
1537 ret1 = cli_openx(cli1, fname,
1538 denytable2[i].mode1,
1539 denytable2[i].deny1, &fnum1);
1540 ret2 = cli_openx(cli2, fname,
1541 denytable2[i].mode2,
1542 denytable2[i].deny2, &fnum2);
1544 if (!NT_STATUS_IS_OK(ret1)) {
1545 res = A_X;
1546 } else if (!NT_STATUS_IS_OK(ret2)) {
1547 res = A_0;
1548 } else {
1549 char x = 1;
1550 res = A_0;
1552 status = cli_read(cli2, fnum2, (char *)&x, 0, 1,
1553 &nread);
1554 if (NT_STATUS_IS_OK(status) && nread == 1) {
1555 res += A_R;
1557 if (NT_STATUS_IS_OK(cli_writeall(cli2, fnum2, 0,
1558 (uint8_t *)&x, 0, 1,
1559 NULL))) {
1560 res += A_W;
1564 if (res != denytable2[i].result) {
1565 correct = False;
1568 if (torture_showall || res != denytable2[i].result) {
1569 printf("%s %8s %10s %8s %10s %s (correct=%s)\n",
1570 fname,
1571 denystr(denytable2[i].deny1),
1572 openstr(denytable2[i].mode1),
1573 denystr(denytable2[i].deny2),
1574 openstr(denytable2[i].mode2),
1575 resultstr(res),
1576 resultstr(denytable2[i].result));
1579 if (NT_STATUS_IS_OK(ret1)) {
1580 cli_close(cli1, fnum1);
1582 if (NT_STATUS_IS_OK(ret2)) {
1583 cli_close(cli2, fnum2);
1587 for (i=0;i<2;i++) {
1588 cli_unlink(cli1, fnames[i], FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
1591 if (!torture_close_connection(cli1)) {
1592 correct = False;
1594 if (!torture_close_connection(cli2)) {
1595 correct = False;
1598 printf("finshed denytest2\n");
1599 return correct;