Pchp.Library.Streams.FileStreamWrapper.BuildMode C# (CSharp) Method

BuildMode() private static method

Creates the UNIX-like file mode depending on the file or directory attributes.
private static BuildMode ( FileSystemInfo info, FileAttributes attributes, string path ) : FileModeFlags
info System.IO.FileSystemInfo Information about file system object.
attributes FileAttributes Attributes of the file.
path string Paths to the file.
return FileModeFlags
        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;
        }