Remove MapBlock method from IReadOnlyFilesystem

This commit is contained in:
2022-12-19 11:23:45 +00:00
parent 27a8366ecb
commit 6fb4f8a38c
10 changed files with 1 additions and 188 deletions

View File

@@ -226,15 +226,6 @@ public sealed partial class AppleDOS
return ErrorNumber.NoError; return ErrorNumber.NoError;
} }
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
// TODO: Not really important.
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotImplemented;
}
ErrorNumber CacheFile(string path) ErrorNumber CacheFile(string path)
{ {
string[] pathElements = path.Split(new[] string[] pathElements = path.Split(new[]

View File

@@ -40,56 +40,6 @@ namespace Aaru.Filesystems;
// Information from Inside Macintosh Volume II // Information from Inside Macintosh Volume II
public sealed partial class AppleMFS public sealed partial class AppleMFS
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = new long();
if(!_mounted)
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
'/'
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return ErrorNumber.NotSupported;
path = pathElements[0];
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return ErrorNumber.NoSuchFile;
if(fileBlock > entry.flPyLen / _volMdb.drAlBlkSiz)
return ErrorNumber.InvalidArgument;
uint nextBlock = entry.flStBlk;
long relBlock = 0;
while(true)
{
if(relBlock == fileBlock)
{
deviceBlock = ((nextBlock - 2) * _sectorsPerBlock) + _volMdb.drAlBlSt + (long)_partitionStart;
return ErrorNumber.NoError;
}
if(_blockMap[nextBlock] == BMAP_FREE ||
_blockMap[nextBlock] == BMAP_LAST)
break;
nextBlock = _blockMap[nextBlock];
relBlock++;
}
return ErrorNumber.InOutError;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber GetAttributes(string path, out FileAttributes attributes) public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{ {

View File

@@ -69,15 +69,6 @@ public sealed partial class CPM
return ErrorNumber.NoError; return ErrorNumber.NoError;
} }
// TODO: Implementing this would require storing the interleaving
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotImplemented;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber OpenFile(string path, out IFileNode node) public ErrorNumber OpenFile(string path, out IFileNode node)
{ {

View File

@@ -40,33 +40,6 @@ namespace Aaru.Filesystems;
public sealed partial class FAT public sealed partial class FAT
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return ErrorNumber.AccessDenied;
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != ErrorNumber.NoError)
return err;
if(stat.Attributes.HasFlag(FileAttributes.Directory) &&
!_debug)
return ErrorNumber.IsDirectory;
uint[] clusters = GetClusters((uint)stat.Inode);
if(fileBlock >= clusters.Length)
return ErrorNumber.InvalidArgument;
deviceBlock = (long)(_firstClusterSector + (clusters[fileBlock] * _sectorsPerCluster));
return ErrorNumber.NoError;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber GetAttributes(string path, out FileAttributes attributes) public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{ {

View File

@@ -40,33 +40,6 @@ namespace Aaru.Filesystems;
public sealed partial class XboxFatPlugin public sealed partial class XboxFatPlugin
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return ErrorNumber.AccessDenied;
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != ErrorNumber.NoError)
return err;
if(stat.Attributes.HasFlag(FileAttributes.Directory) &&
!_debug)
return ErrorNumber.IsDirectory;
uint[] clusters = GetClusters((uint)stat.Inode);
if(fileBlock >= clusters.Length)
return ErrorNumber.InvalidArgument;
deviceBlock = (long)(_firstClusterSector + ((clusters[fileBlock] - 1) * _sectorsPerCluster));
return ErrorNumber.NoError;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber GetAttributes(string path, out FileAttributes attributes) public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{ {

View File

@@ -44,32 +44,6 @@ namespace Aaru.Filesystems;
public sealed partial class ISO9660 public sealed partial class ISO9660
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return ErrorNumber.AccessDenied;
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != ErrorNumber.NoError)
return err;
if(entry.Flags.HasFlag(FileFlags.Directory) &&
!_debug)
return ErrorNumber.IsDirectory;
// TODO: Multi-extents
if(entry.Extents.Count > 1)
return ErrorNumber.NotImplemented;
deviceBlock = entry.Extents[0].extent + fileBlock;
return ErrorNumber.NoError;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber GetAttributes(string path, out FileAttributes attributes) public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{ {

View File

@@ -36,15 +36,6 @@ namespace Aaru.Filesystems;
public sealed partial class LisaFS public sealed partial class LisaFS
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
// TODO: Not really important.
return ErrorNumber.NotImplemented;
}
/// <summary>Searches the disk for an extents file (or gets it from cache)</summary> /// <summary>Searches the disk for an extents file (or gets it from cache)</summary>
/// <returns>Error.</returns> /// <returns>Error.</returns>
/// <param name="fileId">File identifier.</param> /// <param name="fileId">File identifier.</param>

View File

@@ -38,28 +38,6 @@ namespace Aaru.Filesystems;
public sealed partial class OperaFS public sealed partial class OperaFS
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return ErrorNumber.AccessDenied;
ErrorNumber err = GetFileEntry(path, out DirectoryEntryWithPointers entry);
if(err != ErrorNumber.NoError)
return err;
if((entry.Entry.flags & FLAGS_MASK) == (uint)FileFlags.Directory &&
!_debug)
return ErrorNumber.IsDirectory;
deviceBlock = entry.Pointers[0] + fileBlock;
return ErrorNumber.NoError;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber GetAttributes(string path, out FileAttributes attributes) public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{ {

View File

@@ -38,14 +38,6 @@ namespace Aaru.Filesystems;
// Information from Call-A.P.P.L.E. Pascal Disk Directory Structure // Information from Call-A.P.P.L.E. Pascal Disk Directory Structure
public sealed partial class PascalPlugin public sealed partial class PascalPlugin
{ {
/// <inheritdoc />
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotImplemented;
}
/// <inheritdoc /> /// <inheritdoc />
public ErrorNumber GetAttributes(string path, out FileAttributes attributes) public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{ {