Ejemplo n.º 1
0
        public static bool IsDirectory(string path)
        {
            FileAttributes fileAttributes = File.GetAttributes(path);

            return(fileAttributes.Is(FileAttributes.Directory));
        }
Ejemplo n.º 2
0
        public uint Load(String path)
        {
            if (!File.Exists(path) && !Directory.Exists(path))
            {
                throw new FileNotFoundException();
            }

            mode = 0;

            FileAttributes fileAttributes = File.GetAttributes(path);
            Boolean        isDirectory    = fileAttributes.Is(FileAttributes.Directory);
            Boolean        canRead        = NfsFileAttributes.CanRead(path);
            Boolean        canWrite       = NfsFileAttributes.CanWrite(path);

            if (!isDirectory)
            {
                type = FileType.NFREG;
                mode = FilePermissions.UPFILE;
            }
            else if (isDirectory)
            {
                type = FileType.NFDIR;
                mode = FilePermissions.UPDIR;
            }
            else
            {
                Console.Error.WriteLine("NfsFileAttributes.Load: " + path + " has unknown type");
                type = FileType.NFNON;
                mode = 0;                 // don't know what kind of file system object this is
            }

            //if (!isDirectory) {
            //	using (var fs = new FileStream(path, FileMode.Open)) {
            //		canRead = fs.CanRead;
            //		canWrite = fs.CanWrite;
            //	}
            //}
            //else {
            //	canRead = true;
            //	canWrite = !fileAttributes.Is(FileAttributes.ReadOnly);
            //}

            if (canRead)
            {
                mode |= FilePermissions.UP_OREAD | FilePermissions.UP_GREAD | FilePermissions.UP_WREAD;
                mode |= FilePermissions.UP_OEXEC | FilePermissions.UP_GEXEC | FilePermissions.UP_WEXEC;
            }
            if (canWrite)
            {
                mode |= FilePermissions.UP_OWRITE | FilePermissions.UP_GWRITE | FilePermissions.UP_WWRITE;
            }

            // from now on assume either file or directory
            if (!isDirectory)
            {
                nlink = 1;
            }
            else               // directories always have 2 links
            {
                nlink = 2;
            }

            FileInfo file = new FileInfo(path);

            uid       = 0;
            gid       = 0;
            size      = isDirectory ? 512 : (uint)(new FileInfo(path).Length);
            blocksize = 512;             // XXX common value, how do I get this in java?
            rdev      = 0;
            blocks    = (size + blocksize - 1) / blocksize;
            fsid      = isDirectory ? 0 : GetFileSystemId(file);
            fileid    = (uint)HandleManager.Current.GetHandle(path);

            lastAccessed = new NfsTime(file.LastAccessTime);
            lastChanged  = new NfsTime(file.LastWriteTime);
            lastModified = new NfsTime(file.LastWriteTime);

            return((uint)NfsReply.OK);
        }