private static FileModeFlags BuildMode(FileSystemInfo/*!*/info, FileAttributes attributes, string path)
{
// Simulates the UNIX file mode.
FileModeFlags rv;
if ((attributes & FileAttributes.Directory) != 0)
{
// a directory:
rv = FileModeFlags.Directory;
//if (EnvironmentUtils.IsDotNetFramework)
//{
// rv |= GetFileMode((DirectoryInfo)info);
// // PHP on Windows always shows that directory isn't executable
// rv &= ~FileModeFlags.Execute;
//}
//else
{
rv |= FileModeFlags.Read | FileModeFlags.Execute | FileModeFlags.Write;
}
}
else
{
// a file:
rv = FileModeFlags.File;
//if (EnvironmentUtils.IsDotNetFramework)
//{
// rv |= GetFileMode((FileInfo)info);
// if ((attributes & FileAttributes.ReadOnly) != 0 && (rv & FileModeFlags.Write) != 0)
// rv &= ~FileModeFlags.Write;
// if ((rv & FileModeFlags.Execute) == 0)
// {
// // PHP on Windows checks the file internaly wheather it is executable
// // we just look on the extension
// string ext = Path.GetExtension(path);
// if ((ext.EqualsOrdinalIgnoreCase(".exe")) || (ext.EqualsOrdinalIgnoreCase(".com")) || (ext.EqualsOrdinalIgnoreCase(".bat")))
// rv |= FileModeFlags.Execute;
// }
//}
//else
{
rv |= FileModeFlags.Read; // | FileModeFlags.Execute;
if ((attributes & FileAttributes.ReadOnly) == 0)
rv |= FileModeFlags.Write;
}
}
//
return rv;
}