示例#1
0
        // CreateFile(u32 mode, u64 size, buffer<bytes<0x301>, 0x19, 0x301> path)
        public long CreateFile(ServiceCtx context)
        {
            string name = ReadUtf8String(context);

            long mode = context.RequestData.ReadInt64();
            int  size = context.RequestData.ReadInt32();

            string fileName = _provider.GetFullPath(name);

            if (fileName == null)
            {
                return(MakeError(ErrorModule.Fs, FsErr.PathDoesNotExist));
            }

            if (_provider.FileExists(fileName))
            {
                return(MakeError(ErrorModule.Fs, FsErr.PathAlreadyExists));
            }

            if (IsPathAlreadyInUse(fileName))
            {
                return(MakeError(ErrorModule.Fs, FsErr.PathAlreadyInUse));
            }

            return(_provider.CreateFile(fileName, size));
        }
示例#2
0
        // CreateFile(u32 mode, u64 size, buffer<bytes<0x301>, 0x19, 0x301> path)
        public long CreateFile(ServiceCtx Context)
        {
            string Name = ReadUtf8String(Context);

            long Mode = Context.RequestData.ReadInt64();
            int  Size = Context.RequestData.ReadInt32();

            string FileName = Provider.GetFullPath(Name);

            if (FileName == null)
            {
                return(MakeError(ErrorModule.Fs, FsErr.PathDoesNotExist));
            }

            if (Provider.FileExists(FileName))
            {
                return(MakeError(ErrorModule.Fs, FsErr.PathAlreadyExists));
            }

            if (IsPathAlreadyInUse(FileName))
            {
                return(MakeError(ErrorModule.Fs, FsErr.PathAlreadyInUse));
            }

            return(Provider.CreateFile(FileName, Size));
        }
示例#3
0
        public void CreateFile(int fileID)
        {
            AuthorizedIdent ident = AuthenticateTicket(Ticket);

            CFile file = new FileSystem(ident, true).GetFile(fileID);

            FileSystemProviderFactory.GetInstance(this);
            m_fs.CreateFile(file);
        }
示例#4
0
        protected void CopyFileData(string dir, string dbase, string sbase)
        {
            string spath = Path.Combine(sbase, dir);
            CFile  sfile = GetFile(spath);

            if (sfile.IsDirectory())
            {
                foreach (CFile dirmem in ListDirectory(sfile))
                {
                    CopyFileData(Path.Combine(dir, dirmem.Name), dbase, sbase);
                }
            }
            else
            {
                string dpath = Path.Combine(dbase, dir);
                CFile  dfile = GetFile(dpath);

                //Copy file
                FileDataWebGateway fds = (FileDataWebGateway)m_fdss[m_ident.Name];
                if (fds != null)
                {
                    try {
                        fds.CreateFile(sfile.ID);
                        fds.CopyFile(sfile.ID, dfile.ID);
                    } catch (Exception) {
                        FileServiceInit(m_ident, true);
                        fds = (FileDataWebGateway)m_fdss[m_ident.Name];
                        try {
                            fds.CreateFile(sfile.ID);
                            fds.CopyFile(sfile.ID, dfile.ID);
                        } catch (Exception) {
                            throw new FileOperationException("Unable to connect to the file system");
                        }
                    }
                }
                else
                {
                    m_fs.CreateFile(sfile);
                    m_fs.CopyFile(sfile, dfile);
                }
            }
        }
示例#5
0
 /// <summary>
 /// Transfer a FS into another compatible FS
 /// </summary>
 public void CopyFileSystem(IFileSystemProvider dest)
 {
     CFile.FileList files = GetAllFiles();
     foreach (CFile file in files)
     {
         if (!file.IsDirectory())
         {
             dest.CreateFile(file);
             LoadFileData(file);
             dest.CommitData(file);
         }
     }
 }