r8219: Merge the new open code from HEAD to 3.0. Haven't yet run the torture
[samba.git] / source3 / lib / util.c
index 42cbc7288f913c45be70e0d9c580ca6120dd5472..de366c604ffe688d0b9901e1ec22fbf91b47385a 100644 (file)
@@ -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;
+}