source: trunk-3.0/source/torture/denytest.c@ 101

Last change on this file since 101 was 44, checked in by Paul Smedley, 18 years ago

Update source to 3.0.25b

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