diff options
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/util.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c index 42cbc7288f..de366c604f 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -2735,3 +2735,25 @@ int _Insure_trap_error(int a1, int a2, int a3, int a4, int a5, int a6) return ret; } #endif + +uint32 map_share_mode_to_deny_mode(uint32 share_access, uint32 private_options) +{ + switch (share_access) { + case FILE_SHARE_NONE: + return DENY_ALL; + case FILE_SHARE_READ: + return DENY_WRITE; + case FILE_SHARE_WRITE: + return DENY_READ; + case FILE_SHARE_READ|FILE_SHARE_WRITE: + case FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE: + return DENY_NONE; + } + if (private_options & NTCREATEX_OPTIONS_PRIVATE_DENY_DOS) { + return DENY_DOS; + } else if (private_options & NTCREATEX_OPTIONS_PRIVATE_DENY_FCB) { + return DENY_FCB; + } + + return (uint32)-1; +} |