1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00
samba-mirror/source4/torture/denytest.c
Andrew Tridgell ef2e26c91b first public release of samba4 code
(This used to be commit b0510b5428)
2003-08-13 01:53:07 +00:00

1579 lines
83 KiB
C

/*
Unix SMB/CIFS implementation.
SMB torture tester - deny mode scanning functions
Copyright (C) Andrew Tridgell 2001
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "includes.h"
extern BOOL torture_showall;
enum deny_result {A_0=0, A_X=1, A_R=2, A_W=3, A_RW=5};
static const char *denystr(int denymode)
{
struct {
int v;
const char *name;
} deny_modes[] = {
{DENY_DOS, "DENY_DOS"},
{DENY_ALL, "DENY_ALL"},
{DENY_WRITE, "DENY_WRITE"},
{DENY_READ, "DENY_READ"},
{DENY_NONE, "DENY_NONE"},
{DENY_FCB, "DENY_FCB"},
{-1, NULL}};
int i;
for (i=0;deny_modes[i].name;i++) {
if (deny_modes[i].v == denymode) return deny_modes[i].name;
}
return "DENY_XXX";
}
static const char *openstr(int mode)
{
struct {
int v;
const char *name;
} open_modes[] = {
{O_RDWR, "O_RDWR"},
{O_RDONLY, "O_RDONLY"},
{O_WRONLY, "O_WRONLY"},
{-1, NULL}};
int i;
for (i=0;open_modes[i].name;i++) {
if (open_modes[i].v == mode) return open_modes[i].name;
}
return "O_XXX";
}
static const char *resultstr(enum deny_result res)
{
struct {
enum deny_result res;
const char *name;
} results[] = {
{A_X, "X"},
{A_0, "-"},
{A_R, "R"},
{A_W, "W"},
{A_RW,"RW"}};
int i;
for (i=0;ARRAY_SIZE(results);i++) {
if (results[i].res == res) return results[i].name;
}
return "*";
}
static struct {
int isexe;
int mode1, deny1;
int mode2, deny2;
enum deny_result result;
} denytable2[] = {
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_RW},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_W},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_RW},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_R},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_W},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_0}
};
static struct {
int isexe;
int mode1, deny1;
int mode2, deny2;
enum deny_result result;
} denytable1[] = {
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
{1, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_RW},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_W},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_RW},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_R},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_W},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},
{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{1, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{1, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{1, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{1, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{1, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{1, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{1, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{1, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_RW},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{1, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{1, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{1, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{1, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
{1, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
{1, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{1, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
{1, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
{1, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{1, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
{1, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
{1, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_RW},
{0, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_RW},
{0, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_RW},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_RW},
{0, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_RW},
{0, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_RW},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_READ, A_R},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{0, O_RDWR, DENY_READ, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_W},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{0, O_RDONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_READ, A_W},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_NONE, A_W},
{0, O_WRONLY, DENY_READ, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_READ, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_READ, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_DOS, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{0, O_RDWR, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{0, O_RDWR, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_RW},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_R},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_W},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{0, O_RDONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{0, O_RDONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{0, O_RDONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_DOS, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_DOS, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_READ, A_RW},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_READ, A_R},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_READ, A_W},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_NONE, A_RW},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_NONE, A_R},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_NONE, A_W},
{0, O_WRONLY, DENY_NONE, O_RDWR, DENY_FCB, A_0},
{0, O_WRONLY, DENY_NONE, O_RDONLY, DENY_FCB, A_0},
{0, O_WRONLY, DENY_NONE, O_WRONLY, DENY_FCB, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_READ, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{0, O_RDWR, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
{0, O_RDWR, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
{0, O_RDWR, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{0, O_RDONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
{0, O_RDONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
{0, O_RDONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_DOS, A_RW},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_DOS, A_R},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_DOS, A_W},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_ALL, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_ALL, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_WRITE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_READ, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_READ, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_NONE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_NONE, A_0},
{0, O_WRONLY, DENY_FCB, O_RDWR, DENY_FCB, A_RW},
{0, O_WRONLY, DENY_FCB, O_RDONLY, DENY_FCB, A_RW},
{0, O_WRONLY, DENY_FCB, O_WRONLY, DENY_FCB, A_RW}
};
static void progress_bar(unsigned i, unsigned total)
{
if (i % 10 != 0) return;
printf("%5d/%5d\r", i, total);
fflush(stdout);
}
/*
this produces a matrix of deny mode behaviour for 1 connection
*/
BOOL torture_denytest1(int dummy)
{
static struct cli_state *cli1;
int fnum1, fnum2;
int i;
BOOL correct = True;
const char *fnames[2] = {"\\denytest1.dat", "\\denytest1.exe"};
if (!torture_open_connection(&cli1)) {
return False;
}
printf("starting denytest1\n");
printf("Testing deny modes with 1 connection\n");
for (i=0;i<2;i++) {
cli_unlink(cli1, fnames[i]);
fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
cli_close(cli1, fnum1);
}
printf("testing %d entries\n", ARRAY_SIZE(denytable1));
for (i=0; i<ARRAY_SIZE(denytable1); i++) {
enum deny_result res;
const char *fname = fnames[denytable1[i].isexe];
progress_bar(i, ARRAY_SIZE(denytable1));
fnum1 = cli_open(cli1, fname,
denytable1[i].mode1,
denytable1[i].deny1);
fnum2 = cli_open(cli1, fname,
denytable1[i].mode2,
denytable1[i].deny2);
if (fnum1 == -1) {
res = A_X;
} else if (fnum2 == -1) {
res = A_0;
} else {
char x = 1;
res = A_0;
if (cli_read(cli1, fnum2, (void *)&x, 0, 1) == 1) {
res += A_R;
}
if (cli_write(cli1, fnum2, 0, (void *)&x, 0, 1) == 1) {
res += A_W;
}
}
if (res != denytable1[i].result) {
correct = False;
}
if (torture_showall || res != denytable1[i].result) {
printf("%s %8s %10s %8s %10s %s (correct=%s)\n",
fname,
denystr(denytable1[i].deny1),
openstr(denytable1[i].mode1),
denystr(denytable1[i].deny2),
openstr(denytable1[i].mode2),
resultstr(res),
resultstr(denytable1[i].result));
}
cli_close(cli1, fnum1);
cli_close(cli1, fnum2);
}
for (i=0;i<2;i++) {
cli_unlink(cli1, fnames[i]);
}
if (!torture_close_connection(cli1)) {
correct = False;
}
printf("finshed denytest1\n");
return correct;
}
/*
this produces a matrix of deny mode behaviour with 2 connections
*/
BOOL torture_denytest2(int dummy)
{
static struct cli_state *cli1, *cli2;
int fnum1, fnum2;
int i;
BOOL correct = True;
const char *fnames[2] = {"\\denytest2.dat", "\\denytest2.exe"};
if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
return False;
}
printf("starting denytest2\n");
printf("Testing deny modes with 2 connections\n");
for (i=0;i<2;i++) {
cli_unlink(cli1, fnames[i]);
fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
cli_close(cli1, fnum1);
}
for (i=0; i<ARRAY_SIZE(denytable2); i++) {
enum deny_result res;
const char *fname = fnames[denytable2[i].isexe];
progress_bar(i, ARRAY_SIZE(denytable1));
fnum1 = cli_open(cli1, fname,
denytable2[i].mode1,
denytable2[i].deny1);
fnum2 = cli_open(cli2, fname,
denytable2[i].mode2,
denytable2[i].deny2);
if (fnum1 == -1) {
res = A_X;
} else if (fnum2 == -1) {
res = A_0;
} else {
char x = 1;
res = A_0;
if (cli_read(cli2, fnum2, (void *)&x, 0, 1) == 1) {
res += A_R;
}
if (cli_write(cli2, fnum2, 0, (void *)&x, 0, 1) == 1) {
res += A_W;
}
}
if (res != denytable2[i].result) {
correct = False;
}
if (torture_showall || res != denytable2[i].result) {
printf("%s %8s %10s %8s %10s %s (correct=%s)\n",
fname,
denystr(denytable2[i].deny1),
openstr(denytable2[i].mode1),
denystr(denytable2[i].deny2),
openstr(denytable2[i].mode2),
resultstr(res),
resultstr(denytable2[i].result));
}
cli_close(cli1, fnum1);
cli_close(cli2, fnum2);
}
for (i=0;i<2;i++) {
cli_unlink(cli1, fnames[i]);
}
if (!torture_close_connection(cli1)) {
correct = False;
}
if (!torture_close_connection(cli2)) {
correct = False;
}
printf("finshed denytest2\n");
return correct;
}