mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0028391: Foundation Classes - OSD_Directory returns incorrect protection flags for shared directory on Windows
Redirect Folder reading flags to File reading flags when Folder flags are not found.
This commit is contained in:
parent
06bc0a59fa
commit
2b3e2b780d
@ -2601,113 +2601,48 @@ static OSD_SingleProtection __fastcall _get_protection ( DWORD mask ) {
|
|||||||
|
|
||||||
} // end _get_protection
|
} // end _get_protection
|
||||||
|
|
||||||
static OSD_SingleProtection __fastcall _get_protection_dir ( DWORD mask ) {
|
static OSD_SingleProtection __fastcall _get_protection_dir (DWORD theMask)
|
||||||
|
{
|
||||||
OSD_SingleProtection retVal;
|
switch (theMask)
|
||||||
|
{
|
||||||
switch ( mask ) {
|
case GENERIC_READ:
|
||||||
|
return OSD_R;
|
||||||
case GENERIC_READ:
|
case GENERIC_WRITE:
|
||||||
|
return OSD_W;
|
||||||
retVal = OSD_R;
|
case GENERIC_READ | GENERIC_WRITE:
|
||||||
|
return OSD_RW;
|
||||||
break;
|
case GENERIC_EXECUTE:
|
||||||
|
return OSD_X;
|
||||||
case GENERIC_WRITE:
|
case GENERIC_READ | GENERIC_EXECUTE:
|
||||||
|
return OSD_RX;
|
||||||
retVal = OSD_W;
|
case GENERIC_WRITE | GENERIC_EXECUTE:
|
||||||
|
return OSD_WX;
|
||||||
break;
|
case GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE:
|
||||||
|
return OSD_RWX;
|
||||||
case GENERIC_READ | GENERIC_WRITE:
|
case DELETE:
|
||||||
|
return OSD_D;
|
||||||
retVal = OSD_RW;
|
case GENERIC_READ | DELETE:
|
||||||
|
return OSD_RD;
|
||||||
break;
|
case GENERIC_WRITE | DELETE:
|
||||||
|
return OSD_WD;
|
||||||
case GENERIC_EXECUTE:
|
case GENERIC_READ | GENERIC_WRITE | DELETE:
|
||||||
|
return OSD_RWD;
|
||||||
retVal = OSD_X;
|
case GENERIC_EXECUTE | DELETE:
|
||||||
|
return OSD_XD;
|
||||||
break;
|
case GENERIC_READ | GENERIC_EXECUTE | DELETE:
|
||||||
|
return OSD_RXD;
|
||||||
case GENERIC_READ | GENERIC_EXECUTE:
|
case GENERIC_WRITE | GENERIC_EXECUTE | DELETE:
|
||||||
|
return OSD_WXD;
|
||||||
retVal = OSD_RX;
|
case FILE_ALL_ACCESS:
|
||||||
|
case GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | DELETE:
|
||||||
break;
|
return OSD_RWXD;
|
||||||
|
case 0:
|
||||||
case GENERIC_WRITE | GENERIC_EXECUTE:
|
return OSD_None;
|
||||||
|
default:
|
||||||
retVal = OSD_WX;
|
// remote directories (on Samba server) have flags like for files
|
||||||
|
return _get_protection (theMask);
|
||||||
break;
|
}
|
||||||
|
}
|
||||||
case GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE:
|
|
||||||
|
|
||||||
retVal = OSD_RWX;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_D;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GENERIC_READ | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_RD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GENERIC_WRITE | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_WD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GENERIC_READ | GENERIC_WRITE | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_RWD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GENERIC_EXECUTE | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_XD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GENERIC_READ | GENERIC_EXECUTE | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_RXD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GENERIC_WRITE | GENERIC_EXECUTE | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_WXD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FILE_ALL_ACCESS:
|
|
||||||
case GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | DELETE:
|
|
||||||
|
|
||||||
retVal = OSD_RWXD;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0:
|
|
||||||
default:
|
|
||||||
|
|
||||||
retVal = OSD_None;
|
|
||||||
|
|
||||||
} // end switch
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
|
|
||||||
} // end _get_protection_dir
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Standard_Boolean OSD_File::IsReadable()
|
Standard_Boolean OSD_File::IsReadable()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user