/* Unix SMB/CIFS implementation. SMB torture tester - 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 3 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, see <http://www.gnu.org/licenses/>. */ #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) { 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, 0)) { return False; } printf("starting denytest1\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 %ld entries\n", (unsigned long)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, (char *)&x, 0, 1) == 1) { res += A_R; } if (cli_write(cli1, fnum2, 0, (char *)&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, 0) || !torture_open_connection(&cli2, 1)) { return False; } printf("starting denytest2\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(denytable2)); 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, (char *)&x, 0, 1) == 1) { res += A_R; } if (cli_write(cli2, fnum2, 0, (char *)&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)); } if (fnum1 != -1) cli_close(cli1, fnum1); if (fnum2 != -1) 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; }