示例#1
0
文件: Program.cs 项目: Olfy20/ASAPFS
        public static void ChangeDir(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Wrong syntax");
                return;
            }
            Inode newInode = fs.ReadInode(getLastInode(args[0]));

            if (newInode.Type == 2 || newInode.isCanRead(fs.currUserId, fs.currGroupId))
            {
                CurrDirectoryInode = newInode.InodeId;
                if (CurrDirectoryInode == 1)
                {
                    Path = "/";
                    return;
                }
                switch (args[0])
                {
                case ".": break;

                case "..":
                    Inode i = fs.ReadInode(getLastInode(args[0]));
                    Path = fs.ReadDirectory(i).Сontent.FirstOrDefault(x => x.Value == CurrDirectoryInode).Key;
                    break;

                default: Path = args[0].Split('/').Last(); break;
                }
            }
        }
示例#2
0
        public string OpenFile(uint inodeNum)
        {
            string data  = "";
            Inode  inode = ReadInode(inodeNum);

            if (!inode.isCanRead(currUserId, currGroupId))
            {
                return("Cannot read file due to insufficient permissions");
            }
            List <uint> fileAddr = ReadFile(inode.FirstDataBlockNum);

            foreach (uint addr in fileAddr)
            {
                data += Encoding.GetEncoding(1251).GetString(ReadBytes(2044, (int)(Sb.Ssize * Sb.DataBlocksAddr() + Sb.Ssize * addr + 4))).Split('\0')[0];
            }
            return(data);
        }