mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Add ReadOnlyFileSystem
This commit is contained in:
parent
279e180466
commit
1876e3b671
3 changed files with 125 additions and 0 deletions
22
src/LibHac/Fs/ReadOnlyDirectory.cs
Normal file
22
src/LibHac/Fs/ReadOnlyDirectory.cs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace LibHac.Fs
|
||||||
|
{
|
||||||
|
public class ReadOnlyDirectory : IDirectory
|
||||||
|
{
|
||||||
|
private IDirectory BaseDir { get; }
|
||||||
|
public IFileSystem ParentFileSystem { get; }
|
||||||
|
|
||||||
|
public string FullPath => BaseDir.FullPath;
|
||||||
|
public OpenDirectoryMode Mode => BaseDir.Mode;
|
||||||
|
|
||||||
|
public ReadOnlyDirectory(IFileSystem parentFileSystem, IDirectory baseDirectory)
|
||||||
|
{
|
||||||
|
ParentFileSystem = parentFileSystem;
|
||||||
|
BaseDir = baseDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<DirectoryEntry> Read() => BaseDir.Read();
|
||||||
|
public int GetEntryCount() => BaseDir.GetEntryCount();
|
||||||
|
}
|
||||||
|
}
|
28
src/LibHac/Fs/ReadOnlyFile.cs
Normal file
28
src/LibHac/Fs/ReadOnlyFile.cs
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace LibHac.Fs
|
||||||
|
{
|
||||||
|
public class ReadOnlyFile : FileBase
|
||||||
|
{
|
||||||
|
private IFile BaseFile { get; }
|
||||||
|
|
||||||
|
public ReadOnlyFile(IFile baseFile)
|
||||||
|
{
|
||||||
|
BaseFile = baseFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int Read(Span<byte> destination, long offset)
|
||||||
|
{
|
||||||
|
return BaseFile.Read(destination, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override long GetSize()
|
||||||
|
{
|
||||||
|
return BaseFile.GetSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Flush() { }
|
||||||
|
public override void Write(ReadOnlySpan<byte> source, long offset) => throw new NotSupportedException();
|
||||||
|
public override void SetSize(long size) => throw new NotSupportedException();
|
||||||
|
}
|
||||||
|
}
|
75
src/LibHac/Fs/ReadOnlyFileSystem.cs
Normal file
75
src/LibHac/Fs/ReadOnlyFileSystem.cs
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace LibHac.Fs
|
||||||
|
{
|
||||||
|
public class ReadOnlyFileSystem : IFileSystem
|
||||||
|
{
|
||||||
|
private IFileSystem BaseFs { get; }
|
||||||
|
|
||||||
|
public ReadOnlyFileSystem(IFileSystem baseFileSystem)
|
||||||
|
{
|
||||||
|
BaseFs = baseFileSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDirectory OpenDirectory(string path, OpenDirectoryMode mode)
|
||||||
|
{
|
||||||
|
IDirectory baseDir = BaseFs.OpenDirectory(path, mode);
|
||||||
|
return new ReadOnlyDirectory(this, baseDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IFile OpenFile(string path, OpenMode mode)
|
||||||
|
{
|
||||||
|
IFile baseFile = BaseFs.OpenFile(path, mode);
|
||||||
|
return new ReadOnlyFile(baseFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DirectoryExists(string path)
|
||||||
|
{
|
||||||
|
return BaseFs.DirectoryExists(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool FileExists(string path)
|
||||||
|
{
|
||||||
|
return BaseFs.FileExists(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DirectoryEntryType GetEntryType(string path)
|
||||||
|
{
|
||||||
|
return BaseFs.GetEntryType(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetFreeSpaceSize(string path)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetTotalSpaceSize(string path)
|
||||||
|
{
|
||||||
|
return BaseFs.GetTotalSpaceSize(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileTimeStampRaw GetFileTimeStampRaw(string path)
|
||||||
|
{
|
||||||
|
return BaseFs.GetFileTimeStampRaw(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Commit()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void QueryEntry(Span<byte> outBuffer, ReadOnlySpan<byte> inBuffer, string path, QueryId queryId)
|
||||||
|
{
|
||||||
|
BaseFs.QueryEntry(outBuffer, inBuffer, path, queryId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CreateDirectory(string path) => throw new NotSupportedException();
|
||||||
|
public void CreateFile(string path, long size, CreateFileOptions options) => throw new NotSupportedException();
|
||||||
|
public void DeleteDirectory(string path) => throw new NotSupportedException();
|
||||||
|
public void DeleteDirectoryRecursively(string path) => throw new NotSupportedException();
|
||||||
|
public void CleanDirectoryRecursively(string path) => throw new NotSupportedException();
|
||||||
|
public void DeleteFile(string path) => throw new NotSupportedException();
|
||||||
|
public void RenameDirectory(string srcPath, string dstPath) => throw new NotSupportedException();
|
||||||
|
public void RenameFile(string srcPath, string dstPath) => throw new NotSupportedException();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue