| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using ChocolArm64.Memory;
- using System.IO;
- using static Ryujinx.OsHle.Objects.ObjHelper;
- namespace Ryujinx.OsHle.Objects
- {
- class FspSrvIFileSystem
- {
- public string FilePath { get; private set; }
- public FspSrvIFileSystem(string Path)
- {
- this.FilePath = Path;
- }
- public static long GetEntryType(ServiceCtx Context)
- {
- FspSrvIFileSystem FileSystem = Context.GetObject<FspSrvIFileSystem>();
- long Position = Context.Request.PtrBuff[0].Position;
- string Name = AMemoryHelper.ReadAsciiString(Context.Memory, Position);
- string FileName = Context.Ns.VFs.GetFullPath(FileSystem.FilePath, Name);
- if (FileName == null)
- {
- //TODO: Correct error code.
- return -1;
- }
- bool IsFile = File.Exists(FileName);
- Context.ResponseData.Write(IsFile ? 1 : 0);
- return 0;
- }
- public static long OpenFile(ServiceCtx Context)
- {
- FspSrvIFileSystem FileSystem = Context.GetObject<FspSrvIFileSystem>();
- long Position = Context.Request.PtrBuff[0].Position;
- int FilterFlags = Context.RequestData.ReadInt32();
- string Name = AMemoryHelper.ReadAsciiString(Context.Memory, Position);
- string FileName = Context.Ns.VFs.GetFullPath(FileSystem.FilePath, Name);
- if (FileName == null)
- {
- //TODO: Correct error code.
- return -1;
- }
- FileStream Stream = new FileStream(FileName, FileMode.OpenOrCreate);
- MakeObject(Context, new FspSrvIFile(Stream));
- return 0;
- }
- public static long Commit(ServiceCtx Context)
- {
- return 0;
- }
- }
- }
|