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#define NO_SYSLOG
22
23#include "includes.h"
24
25extern BOOL torture_showall;
26
27enum deny_result {A_0=0, A_X=1, A_R=2, A_W=3, A_RW=5};
28
29
30static const char *denystr(int denymode)
31{
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;
46	}
47	return "DENY_XXX";
48}
49
50static const char *openstr(int mode)
51{
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;
63	}
64	return "O_XXX";
65}
66
67static const char *resultstr(enum deny_result res)
68{
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;
81	}
82	return "*";
83}
84
85static 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}
739};
740
741
742static 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}
1396};
1397
1398
1399static void progress_bar(unsigned i, unsigned total)
1400{
1401	if (i % 10 != 0) return;
1402	printf("%5d/%5d\r", i, total);
1403	fflush(stdout);
1404}
1405
1406/*
1407  this produces a matrix of deny mode behaviour for 1 connection
1408 */
1409BOOL torture_denytest1(int dummy)
1410{
1411	struct cli_state *cli1;
1412	int fnum1, fnum2;
1413	int i;
1414	BOOL correct = True;
1415	const char *fnames[2] = {"\\denytest1.dat", "\\denytest1.exe"};
1416
1417	if (!torture_open_connection(&cli1)) {
1418		return False;
1419	}
1420
1421	printf("starting denytest1\n");
1422
1423	for (i=0;i<2;i++) {
1424		cli_unlink(cli1, fnames[i]);
1425		fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
1426		cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
1427		cli_close(cli1, fnum1);
1428	}
1429
1430	printf("testing %ld entries\n", (unsigned long)ARRAY_SIZE(denytable1));
1431
1432	for (i=0; i<ARRAY_SIZE(denytable1); i++) {
1433		enum deny_result res;
1434		const char *fname = fnames[denytable1[i].isexe];
1435
1436		progress_bar(i, ARRAY_SIZE(denytable1));
1437
1438		fnum1 = cli_open(cli1, fname,
1439				 denytable1[i].mode1,
1440				 denytable1[i].deny1);
1441		fnum2 = cli_open(cli1, fname,
1442				 denytable1[i].mode2,
1443				 denytable1[i].deny2);
1444
1445		if (fnum1 == -1) {
1446			res = A_X;
1447		} else if (fnum2 == -1) {
1448			res = A_0;
1449		} else {
1450			char x = 1;
1451			res = A_0;
1452			if (cli_read(cli1, fnum2, (void *)&x, 0, 1) == 1) {
1453				res += A_R;
1454			}
1455			if (cli_write(cli1, fnum2, 0, (void *)&x, 0, 1) == 1) {
1456				res += A_W;
1457			}
1458		}
1459
1460		if (res != denytable1[i].result) {
1461			correct = False;
1462		}
1463
1464		if (torture_showall || res != denytable1[i].result) {
1465			printf("%s %8s %10s    %8s %10s    %s (correct=%s)\n",
1466			       fname,
1467			       denystr(denytable1[i].deny1),
1468			       openstr(denytable1[i].mode1),
1469			       denystr(denytable1[i].deny2),
1470			       openstr(denytable1[i].mode2),
1471			       resultstr(res),
1472			       resultstr(denytable1[i].result));
1473		}
1474
1475		cli_close(cli1, fnum1);
1476		cli_close(cli1, fnum2);
1477	}
1478
1479	for (i=0;i<2;i++) {
1480		cli_unlink(cli1, fnames[i]);
1481	}
1482
1483	if (!torture_close_connection(cli1)) {
1484		correct = False;
1485	}
1486
1487	printf("finshed denytest1\n");
1488	return correct;
1489}
1490
1491
1492/*
1493  this produces a matrix of deny mode behaviour with 2 connections
1494 */
1495BOOL torture_denytest2(int dummy)
1496{
1497	static struct cli_state *cli1, *cli2;
1498	int fnum1, fnum2;
1499	int i;
1500	BOOL correct = True;
1501	const char *fnames[2] = {"\\denytest2.dat", "\\denytest2.exe"};
1502
1503	if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
1504		return False;
1505	}
1506
1507	printf("starting denytest2\n");
1508
1509	for (i=0;i<2;i++) {
1510		cli_unlink(cli1, fnames[i]);
1511		fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
1512		cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
1513		cli_close(cli1, fnum1);
1514	}
1515
1516	for (i=0; i<ARRAY_SIZE(denytable2); i++) {
1517		enum deny_result res;
1518		const char *fname = fnames[denytable2[i].isexe];
1519
1520		progress_bar(i, ARRAY_SIZE(denytable1));
1521
1522		fnum1 = cli_open(cli1, fname,
1523				 denytable2[i].mode1,
1524				 denytable2[i].deny1);
1525		fnum2 = cli_open(cli2, fname,
1526				 denytable2[i].mode2,
1527				 denytable2[i].deny2);
1528
1529		if (fnum1 == -1) {
1530			res = A_X;
1531		} else if (fnum2 == -1) {
1532			res = A_0;
1533		} else {
1534			char x = 1;
1535			res = A_0;
1536			if (cli_read(cli2, fnum2, (void *)&x, 0, 1) == 1) {
1537				res += A_R;
1538			}
1539			if (cli_write(cli2, fnum2, 0, (void *)&x, 0, 1) == 1) {
1540				res += A_W;
1541			}
1542		}
1543
1544		if (res != denytable2[i].result) {
1545			correct = False;
1546		}
1547
1548		if (torture_showall || res != denytable2[i].result) {
1549			printf("%s %8s %10s    %8s %10s    %s (correct=%s)\n",
1550			       fname,
1551			       denystr(denytable2[i].deny1),
1552			       openstr(denytable2[i].mode1),
1553			       denystr(denytable2[i].deny2),
1554			       openstr(denytable2[i].mode2),
1555			       resultstr(res),
1556			       resultstr(denytable2[i].result));
1557		}
1558
1559		cli_close(cli1, fnum1);
1560		cli_close(cli2, fnum2);
1561	}
1562
1563	for (i=0;i<2;i++) {
1564		cli_unlink(cli1, fnames[i]);
1565	}
1566
1567	if (!torture_close_connection(cli1)) {
1568		correct = False;
1569	}
1570	if (!torture_close_connection(cli2)) {
1571		correct = False;
1572	}
1573
1574	printf("finshed denytest2\n");
1575	return correct;
1576}
1577
1578