Consolidate error number enumerations.

This commit is contained in:
2021-09-16 04:42:14 +01:00
parent a615cde12e
commit 12a72a45e4
78 changed files with 945 additions and 906 deletions

View File

@@ -589,7 +589,7 @@ namespace Aaru.Core
continue;
if(plugin is IReadOnlyFilesystem fsPlugin &&
fsPlugin.Mount(image, partitions[i], encoding, null, null) == Errno.NoError)
fsPlugin.Mount(image, partitions[i], encoding, null, null) == ErrorNumber.NoError)
{
UpdateStatus($"Mounting {fsPlugin.XmlFsType.Type}");
@@ -644,7 +644,7 @@ namespace Aaru.Core
continue;
if(plugin is IReadOnlyFilesystem fsPlugin &&
fsPlugin.Mount(image, wholePart, encoding, null, null) == Errno.NoError)
fsPlugin.Mount(image, wholePart, encoding, null, null) == ErrorNumber.NoError)
{
UpdateStatus($"Mounting {fsPlugin.XmlFsType.Type}");

View File

@@ -34,6 +34,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
@@ -47,9 +48,9 @@ namespace Aaru.Core
{
var contents = new FilesystemContentsType();
Errno ret = filesystem.ReadDir("/", out List<string> dirents);
ErrorNumber ret = filesystem.ReadDir("/", out List<string> dirents);
if(ret != Errno.NoError)
if(ret != ErrorNumber.NoError)
return null;
List<DirectoryType> directories = new();
@@ -59,7 +60,7 @@ namespace Aaru.Core
{
ret = filesystem.Stat(dirent, out FileEntryInfo stat);
if(ret != Errno.NoError)
if(ret != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("Create-Sidecar command", "Cannot stat {0}", dirent);
@@ -150,9 +151,9 @@ namespace Aaru.Core
directory.statusChangeTimeSpecified = true;
}
Errno ret = filesystem.ReadDir(path + "/" + filename, out List<string> dirents);
ErrorNumber ret = filesystem.ReadDir(path + "/" + filename, out List<string> dirents);
if(ret != Errno.NoError)
if(ret != ErrorNumber.NoError)
return null;
List<DirectoryType> directories = new();
@@ -162,7 +163,7 @@ namespace Aaru.Core
{
ret = filesystem.Stat(path + "/" + filename + "/" + dirent, out FileEntryInfo entryStat);
if(ret != Errno.NoError)
if(ret != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("Create-Sidecar command", "Cannot stat {0}", dirent);
@@ -292,9 +293,9 @@ namespace Aaru.Core
else
file.Checksums = _emptyChecksums;
Errno ret = filesystem.ListXAttr(path + "/" + filename, out List<string> xattrs);
ErrorNumber ret = filesystem.ListXAttr(path + "/" + filename, out List<string> xattrs);
if(ret != Errno.NoError)
if(ret != ErrorNumber.NoError)
return file;
List<ExtendedAttributeType> xattrTypes = new();
@@ -303,7 +304,7 @@ namespace Aaru.Core
{
ret = filesystem.GetXattr(path + "/" + filename, xattr, ref data);
if(ret != Errno.NoError)
if(ret != ErrorNumber.NoError)
continue;
var xattrChkWorker = new Checksum();

View File

@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -42,24 +43,24 @@ namespace Aaru.Filesystems
public sealed partial class AppleDOS
{
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return !_mounted ? Errno.AccessDenied : Errno.NotSupported;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotSupported;
}
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(!string.IsNullOrEmpty(path) &&
string.Compare(path, "/", StringComparison.OrdinalIgnoreCase) != 0)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
contents = _catalogCache.Keys.ToList();
@@ -72,10 +73,10 @@ namespace Aaru.Filesystems
contents.Sort();
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno ReadCatalog()
ErrorNumber ReadCatalog()
{
var catalogMs = new MemoryStream();
ulong lba = (ulong)((_vtoc.catalogTrack * _sectorsPerTrack) + _vtoc.catalogSector);
@@ -87,7 +88,7 @@ namespace Aaru.Filesystems
if(lba == 0 ||
lba > _device.Info.Sectors)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
while(lba != 0)
{
@@ -138,7 +139,7 @@ namespace Aaru.Filesystems
if(_debug)
_catalogBlocks = catalogMs.ToArray();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
using FileAttributes = Aaru.CommonTypes.Structs.FileAttributes;
@@ -43,12 +44,12 @@ namespace Aaru.Filesystems
public sealed partial class AppleDOS
{
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -56,12 +57,12 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
string filename = pathElements[0].ToUpperInvariant();
if(!_fileCache.ContainsKey(filename))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
attributes = FileAttributes.Extents;
attributes |= FileAttributes.File;
@@ -74,14 +75,14 @@ namespace Aaru.Filesystems
string.Compare(path, "$Vtoc", StringComparison.InvariantCulture) == 0))
attributes |= FileAttributes.System;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -89,13 +90,13 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
byte[] file;
string filename = pathElements[0].ToUpperInvariant();
if(filename.Length > 30)
return Errno.NameTooLong;
return ErrorNumber.NameTooLong;
if(_debug && (string.Compare(path, "$", StringComparison.InvariantCulture) == 0 ||
string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0 ||
@@ -110,18 +111,18 @@ namespace Aaru.Filesystems
{
if(!_fileCache.TryGetValue(filename, out file))
{
Errno error = CacheFile(filename);
ErrorNumber error = CacheFile(filename);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
if(!_fileCache.TryGetValue(filename, out file))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
}
if(offset >= file.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(size + offset >= file.Length)
size = file.Length - offset;
@@ -130,16 +131,16 @@ namespace Aaru.Filesystems
Array.Copy(file, offset, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -147,15 +148,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
string filename = pathElements[0].ToUpperInvariant();
if(filename.Length > 30)
return Errno.NameTooLong;
return ErrorNumber.NameTooLong;
if(!_fileCache.ContainsKey(filename))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
stat = new FileEntryInfo();
@@ -185,19 +186,19 @@ namespace Aaru.Filesystems
stat.BlockSize = _vtoc.bytesPerSector;
stat.Links = 1;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
// TODO: Not really important.
return !_mounted ? Errno.AccessDenied : Errno.NotImplemented;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotImplemented;
}
Errno CacheFile(string path)
ErrorNumber CacheFile(string path)
{
string[] pathElements = path.Split(new[]
{
@@ -205,15 +206,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
string filename = pathElements[0].ToUpperInvariant();
if(filename.Length > 30)
return Errno.NameTooLong;
return ErrorNumber.NameTooLong;
if(!_catalogCache.TryGetValue(filename, out ushort ts))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
ulong lba = (ulong)((((ts & 0xFF00) >> 8) * _sectorsPerTrack) + (ts & 0xFF));
var fileMs = new MemoryStream();
@@ -266,15 +267,16 @@ namespace Aaru.Filesystems
_fileCache.Add(filename, fileMs.ToArray());
_extentCache.Add(filename, tsListMs.ToArray());
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno CacheAllFiles()
ErrorNumber CacheAllFiles()
{
_fileCache = new Dictionary<string, byte[]>();
_extentCache = new Dictionary<string, byte[]>();
foreach(Errno error in _catalogCache.Keys.Select(CacheFile).Where(error => error != Errno.NoError))
foreach(ErrorNumber error in _catalogCache.Keys.Select(CacheFile).
Where(error => error != ErrorNumber.NoError))
return error;
uint tracksOnBoot = 1;
@@ -288,7 +290,7 @@ namespace Aaru.Filesystems
_bootBlocks = _device.ReadSectors(0, (uint)(tracksOnBoot * _sectorsPerTrack));
_usedSectors += (uint)(_bootBlocks.Length / _vtoc.bytesPerSector);
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -32,6 +32,7 @@
using System.Collections.Generic;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
@@ -45,7 +46,7 @@ namespace Aaru.Filesystems
public sealed partial class AppleDOS
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
_device = imagePlugin;
@@ -57,21 +58,21 @@ namespace Aaru.Filesystems
{
AaruConsole.DebugWriteLine("Apple DOS plugin", "Incorrect device size.");
return Errno.InOutError;
return ErrorNumber.InOutError;
}
if(_start > 0)
{
AaruConsole.DebugWriteLine("Apple DOS plugin", "Partitions are not supported.");
return Errno.InOutError;
return ErrorNumber.InOutError;
}
if(_device.Info.SectorSize != 256)
{
AaruConsole.DebugWriteLine("Apple DOS plugin", "Incorrect sector size.");
return Errno.InOutError;
return ErrorNumber.InOutError;
}
_sectorsPerTrack = _device.Info.Sectors == 455 ? 13 : 16;
@@ -84,9 +85,9 @@ namespace Aaru.Filesystems
_track2UsedByFiles = false;
_usedSectors = 1;
Errno error = ReadCatalog();
ErrorNumber error = ReadCatalog();
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("Apple DOS plugin", "Unable to read catalog.");
@@ -95,7 +96,7 @@ namespace Aaru.Filesystems
error = CacheAllFiles();
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("Apple DOS plugin", "Unable cache all files.");
@@ -123,11 +124,11 @@ namespace Aaru.Filesystems
_mounted = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
_mounted = false;
_extentCache = null;
@@ -135,11 +136,11 @@ namespace Aaru.Filesystems
_catalogCache = null;
_fileSizeCache = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = new FileSystemInfo
{
@@ -153,7 +154,7 @@ namespace Aaru.Filesystems
stat.FreeFiles = _totalFileEntries - stat.Files;
stat.FreeBlocks = stat.Blocks - _usedSectors;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -32,6 +32,7 @@
using System;
using System.Collections.Generic;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
namespace Aaru.Filesystems
@@ -39,12 +40,12 @@ namespace Aaru.Filesystems
public sealed partial class AppleDOS
{
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -52,12 +53,12 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
string filename = pathElements[0].ToUpperInvariant();
if(filename.Length > 30)
return Errno.NameTooLong;
return ErrorNumber.NameTooLong;
xattrs = new List<string>();
@@ -67,7 +68,7 @@ namespace Aaru.Filesystems
else
{
if(!_catalogCache.ContainsKey(filename))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
xattrs.Add("com.apple.dos.type");
@@ -75,14 +76,14 @@ namespace Aaru.Filesystems
xattrs.Add("com.apple.dos.tracksectorlist");
}
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf)
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -90,43 +91,43 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
string filename = pathElements[0].ToUpperInvariant();
if(filename.Length > 30)
return Errno.NameTooLong;
return ErrorNumber.NameTooLong;
if(_debug && (string.Compare(path, "$", StringComparison.InvariantCulture) == 0 ||
string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0 ||
string.Compare(path, "$Vtoc", StringComparison.InvariantCulture) == 0))
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
if(!_catalogCache.ContainsKey(filename))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(string.Compare(xattr, "com.apple.dos.type", StringComparison.InvariantCulture) == 0)
{
if(!_fileTypeCache.TryGetValue(filename, out byte type))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
buf = new byte[1];
buf[0] = type;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(xattr, "com.apple.dos.tracksectorlist", StringComparison.InvariantCulture) != 0 ||
!_debug)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
if(!_extentCache.TryGetValue(filename, out byte[] ts))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
buf = new byte[ts.Length];
Array.Copy(ts, 0, buf, 0, buf.Length);
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -33,7 +33,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Console;
using Aaru.Helpers;
@@ -43,16 +43,16 @@ namespace Aaru.Filesystems
public sealed partial class AppleMFS
{
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(!string.IsNullOrEmpty(path) &&
string.Compare(path, "/", StringComparison.OrdinalIgnoreCase) != 0)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
contents = _idToFilename.Select(kvp => kvp.Value).ToList();
@@ -68,7 +68,7 @@ namespace Aaru.Filesystems
contents.Sort();
return Errno.NoError;
return ErrorNumber.NoError;
}
bool FillDirectory()

View File

@@ -44,12 +44,12 @@ namespace Aaru.Filesystems
public sealed partial class AppleMFS
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = new long();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -57,18 +57,18 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
path = pathElements[0];
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(fileBlock > entry.flPyLen / _volMdb.drAlBlkSiz)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
uint nextBlock = entry.flStBlk;
long relBlock = 0;
@@ -79,7 +79,7 @@ namespace Aaru.Filesystems
{
deviceBlock = ((nextBlock - 2) * _sectorsPerBlock) + _volMdb.drAlBlSt + (long)_partitionStart;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(_blockMap[nextBlock] == BMAP_FREE ||
@@ -90,16 +90,16 @@ namespace Aaru.Filesystems
relBlock++;
}
return Errno.InOutError;
return ErrorNumber.InOutError;
}
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -107,15 +107,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
path = pathElements[0];
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(entry.flUsrWds.fdFlags.HasFlag(AppleCommon.FinderFlags.kIsAlias))
attributes |= FileAttributes.Alias;
@@ -154,17 +154,17 @@ namespace Aaru.Filesystems
attributes |= FileAttributes.BlockUnits;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
byte[] file;
Errno error = Errno.NoError;
ErrorNumber error = ErrorNumber.NoError;
if(_debug && string.Compare(path, "$", StringComparison.InvariantCulture) == 0)
file = _directoryBlocks;
@@ -179,18 +179,18 @@ namespace Aaru.Filesystems
else
error = ReadFile(path, out file, false, false);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
if(size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
if(offset >= file.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(size + offset >= file.Length)
size = file.Length - offset;
@@ -199,16 +199,16 @@ namespace Aaru.Filesystems
Array.Copy(file, offset, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -216,7 +216,7 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
path = pathElements[0];
@@ -260,20 +260,20 @@ namespace Aaru.Filesystems
stat.Length = _mdbBlocks.Length;
}
else
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
Errno error = GetAttributes(path, out FileAttributes attr);
ErrorNumber error = GetAttributes(path, out FileAttributes attr);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
stat = new FileEntryInfo
@@ -288,23 +288,23 @@ namespace Aaru.Filesystems
Links = 1
};
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
}
Errno ReadFile(string path, out byte[] buf, bool resourceFork, bool tags)
ErrorNumber ReadFile(string path, out byte[] buf, bool resourceFork, bool tags)
{
buf = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -312,15 +312,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
path = pathElements[0];
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
uint nextBlock;
@@ -330,7 +330,7 @@ namespace Aaru.Filesystems
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
nextBlock = entry.flRStBlk;
@@ -341,7 +341,7 @@ namespace Aaru.Filesystems
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
nextBlock = entry.flStBlk;
@@ -400,7 +400,7 @@ namespace Aaru.Filesystems
}
}
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -48,7 +48,7 @@ namespace Aaru.Filesystems
const int BYTES_BEFORE_BLOCK_MAP = 64;
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
_device = imagePlugin;
@@ -68,7 +68,7 @@ namespace Aaru.Filesystems
_volMdb.drSigWord = BigEndianBitConverter.ToUInt16(_mdbBlocks, 0x000);
if(_volMdb.drSigWord != MFS_MAGIC)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
_volMdb.drCrDate = BigEndianBitConverter.ToUInt32(_mdbBlocks, 0x002);
_volMdb.drLsBkUp = BigEndianBitConverter.ToUInt32(_mdbBlocks, 0x006);
@@ -158,7 +158,7 @@ namespace Aaru.Filesystems
_sectorsPerBlock = (int)(_volMdb.drAlBlkSiz / _device.Info.SectorSize);
if(!FillDirectory())
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
_mounted = true;
@@ -192,11 +192,11 @@ namespace Aaru.Filesystems
XmlFsType.Type = "MFS";
XmlFsType.VolumeName = _volMdb.drVN;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
_mounted = false;
_idToFilename = null;
@@ -204,11 +204,11 @@ namespace Aaru.Filesystems
_filenameToId = null;
_bootBlocks = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = new FileSystemInfo
{
@@ -222,7 +222,7 @@ namespace Aaru.Filesystems
stat.FreeFiles = uint.MaxValue - stat.Files;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -43,12 +43,12 @@ namespace Aaru.Filesystems
public sealed partial class AppleMFS
{
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -56,7 +56,7 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
path = pathElements[0];
@@ -71,14 +71,14 @@ namespace Aaru.Filesystems
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag))
xattrs.Add("com.apple.macintosh.tags");
return Errno.NoError;
return ErrorNumber.NoError;
}
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(entry.flRLgLen > 0)
{
@@ -97,14 +97,14 @@ namespace Aaru.Filesystems
xattrs.Sort();
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf)
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -112,7 +112,7 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
path = pathElements[0];
@@ -129,7 +129,7 @@ namespace Aaru.Filesystems
buf = new byte[_directoryTags.Length];
Array.Copy(_directoryTags, 0, buf, 0, buf.Length);
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(path, "$Bitmap", StringComparison.InvariantCulture) == 0)
@@ -137,7 +137,7 @@ namespace Aaru.Filesystems
buf = new byte[_bitmapTags.Length];
Array.Copy(_bitmapTags, 0, buf, 0, buf.Length);
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0)
@@ -145,7 +145,7 @@ namespace Aaru.Filesystems
buf = new byte[_bootTags.Length];
Array.Copy(_bootTags, 0, buf, 0, buf.Length);
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(path, "$MDB", StringComparison.InvariantCulture) == 0)
@@ -153,19 +153,19 @@ namespace Aaru.Filesystems
buf = new byte[_mdbTags.Length];
Array.Copy(_mdbTags, 0, buf, 0, buf.Length);
return Errno.NoError;
return ErrorNumber.NoError;
}
}
else
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
Errno error;
ErrorNumber error;
if(!_filenameToId.TryGetValue(path.ToLowerInvariant(), out uint fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!_idToEntry.TryGetValue(fileId, out FileEntry entry))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(entry.flRLgLen > 0 &&
string.Compare(xattr, "com.apple.ResourceFork", StringComparison.InvariantCulture) == 0)
@@ -187,13 +187,13 @@ namespace Aaru.Filesystems
{
buf = Marshal.StructureToByteArrayBigEndian(entry.flUsrWds);
return Errno.NoError;
return ErrorNumber.NoError;
}
if(!_debug ||
!_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag) ||
string.Compare(xattr, "com.apple.macintosh.tags", StringComparison.InvariantCulture) != 0)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
error = ReadFile(path, out buf, false, true);

View File

@@ -33,6 +33,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -41,20 +42,20 @@ namespace Aaru.Filesystems
public sealed partial class CPM
{
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(!string.IsNullOrEmpty(path) &&
string.Compare(path, "/", StringComparison.OrdinalIgnoreCase) != 0)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
contents = new List<string>(_dirList);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <summary>

View File

@@ -31,6 +31,7 @@
// ****************************************************************************/
using System;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -39,12 +40,12 @@ namespace Aaru.Filesystems
public sealed partial class CPM
{
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -52,7 +53,7 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(string.IsNullOrEmpty(pathElements[0]) ||
string.Compare(pathElements[0], "/", StringComparison.OrdinalIgnoreCase) == 0)
@@ -60,41 +61,41 @@ namespace Aaru.Filesystems
attributes = new FileAttributes();
attributes = FileAttributes.Directory;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(!_statCache.TryGetValue(pathElements[0].ToUpperInvariant(), out FileEntryInfo fInfo))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
attributes = fInfo.Attributes;
return Errno.NoError;
return ErrorNumber.NoError;
}
// TODO: Implementing this would require storing the interleaving
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
return !_mounted ? Errno.AccessDenied : Errno.NotImplemented;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotImplemented;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
if(offset < 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
string[] pathElements = path.Split(new[]
{
@@ -102,13 +103,13 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(!_fileCache.TryGetValue(pathElements[0].ToUpperInvariant(), out byte[] file))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(offset >= file.Length)
return Errno.EINVAL;
return ErrorNumber.EINVAL;
if(size + offset >= file.Length)
size = file.Length - offset;
@@ -116,24 +117,24 @@ namespace Aaru.Filesystems
buf = new byte[size];
Array.Copy(file, offset, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return !_mounted ? Errno.AccessDenied : Errno.NotSupported;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotSupported;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -141,12 +142,12 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(!string.IsNullOrEmpty(path) &&
string.Compare(path, "/", StringComparison.OrdinalIgnoreCase) != 0)
return _statCache.TryGetValue(pathElements[0].ToUpperInvariant(), out stat) ? Errno.NoError
: Errno.NoSuchFile;
return _statCache.TryGetValue(pathElements[0].ToUpperInvariant(), out stat) ? ErrorNumber.NoError
: ErrorNumber.NoSuchFile;
stat = new FileEntryInfo
{
@@ -160,7 +161,7 @@ namespace Aaru.Filesystems
if(_labelUpdateDate != null)
stat.StatusChangeTime = DateHandlers.CpmToDateTime(_labelUpdateDate);
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -38,6 +38,7 @@ using System.IO;
using System.Linq;
using System.Text;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
@@ -51,7 +52,7 @@ namespace Aaru.Filesystems
public sealed partial class CPM
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
_device = imagePlugin;
@@ -62,7 +63,7 @@ namespace Aaru.Filesystems
!_cpmFound ||
_workingDefinition == null ||
_dpb == null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
// Build the software interleaving sector mask
if(_workingDefinition.sides == 1)
@@ -106,7 +107,7 @@ namespace Aaru.Filesystems
// TODO: Implement CYLINDERS ordering
AaruConsole.DebugWriteLine("CP/M Plugin", "CYLINDERS ordering not yet implemented.");
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
}
// TODO: Implement COLUMBIA ordering
@@ -116,7 +117,7 @@ namespace Aaru.Filesystems
AaruConsole.DebugWriteLine("CP/M Plugin",
"Don't know how to handle COLUMBIA ordering, not proceeding with this definition.");
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
}
// TODO: Implement EAGLE ordering
@@ -126,7 +127,7 @@ namespace Aaru.Filesystems
AaruConsole.DebugWriteLine("CP/M Plugin",
"Don't know how to handle EAGLE ordering, not proceeding with this definition.");
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
}
else
{
@@ -134,12 +135,12 @@ namespace Aaru.Filesystems
"Unknown order type \"{0}\", not proceeding with this definition.",
_workingDefinition.order);
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
}
// Deinterleave whole volume
Dictionary<ulong, byte[]> deinterleavedSectors = new Dictionary<ulong, byte[]>();
Dictionary<ulong, byte[]> deinterleavedSectors = new();
if(_workingDefinition.sides == 1 ||
string.Compare(_workingDefinition.order, "SIDES", StringComparison.InvariantCultureIgnoreCase) == 0)
@@ -165,7 +166,7 @@ namespace Aaru.Filesystems
var blockMs = new MemoryStream();
ulong blockNo = 0;
int sectorsPerBlock = 0;
Dictionary<ulong, byte[]> allocationBlocks = new Dictionary<ulong, byte[]>();
Dictionary<ulong, byte[]> allocationBlocks = new();
AaruConsole.DebugWriteLine("CP/M Plugin", "Creating allocation blocks.");
@@ -224,15 +225,14 @@ namespace Aaru.Filesystems
byte[] directory = dirMs.ToArray();
if(directory == null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
int dirCnt = 0;
string file1 = null;
string file2 = null;
string file3 = null;
Dictionary<string, Dictionary<int, List<ushort>>> fileExtents =
new Dictionary<string, Dictionary<int, List<ushort>>>();
Dictionary<string, Dictionary<int, List<ushort>>> fileExtents = new();
_statCache = new Dictionary<string, FileEntryInfo>();
_cpmStat = new FileSystemInfo();
@@ -798,24 +798,24 @@ namespace Aaru.Filesystems
_mounted = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = _cpmStat;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
_mounted = false;
_definitions = null;
@@ -829,7 +829,7 @@ namespace Aaru.Filesystems
_labelCreationDate = null;
_labelUpdateDate = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -32,17 +32,17 @@
using System;
using System.Collections.Generic;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
namespace Aaru.Filesystems
{
public sealed partial class CPM
{
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf)
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -50,29 +50,29 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(!_fileCache.ContainsKey(pathElements[0].ToUpperInvariant()))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(string.Compare(xattr, "com.caldera.cpm.password", StringComparison.InvariantCulture) == 0)
if(!_passwordCache.TryGetValue(pathElements[0].ToUpperInvariant(), out buf))
return Errno.NoError;
return ErrorNumber.NoError;
if(string.Compare(xattr, "com.caldera.cpm.password.text", StringComparison.InvariantCulture) != 0)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
return !_passwordCache.TryGetValue(pathElements[0].ToUpperInvariant(), out buf) ? Errno.NoError
: Errno.NoSuchExtendedAttribute;
return !_passwordCache.TryGetValue(pathElements[0].ToUpperInvariant(), out buf) ? ErrorNumber.NoError
: ErrorNumber.NoSuchExtendedAttribute;
}
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -80,10 +80,10 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(!_fileCache.ContainsKey(pathElements[0].ToUpperInvariant()))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
xattrs = new List<string>();
@@ -93,7 +93,7 @@ namespace Aaru.Filesystems
if(_decodedPasswordCache.ContainsKey(pathElements[0].ToUpperInvariant()))
xattrs.Add("com.caldera.cpm.password.text");
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -35,7 +35,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Console;
using Aaru.Helpers;
@@ -47,30 +47,30 @@ namespace Aaru.Filesystems
/// <summary>Solves a symbolic link.</summary>
/// <param name="path">Link path.</param>
/// <param name="dest">Link destination.</param>
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />
/// <summary>Lists contents from a directory.</summary>
/// <param name="path">Directory path.</param>
/// <param name="contents">Directory contents.</param>
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(string.IsNullOrWhiteSpace(path) ||
path == "/")
{
contents = _rootDirectoryCache.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string cutPath = path.StartsWith("/", StringComparison.Ordinal) ? path.Substring(1).ToLower(_cultureInfo)
@@ -80,7 +80,7 @@ namespace Aaru.Filesystems
{
contents = currentDirectory.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string[] pieces = cutPath.Split(new[]
@@ -92,10 +92,10 @@ namespace Aaru.Filesystems
_rootDirectoryCache.FirstOrDefault(t => t.Key.ToLower(_cultureInfo) == pieces[0]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!entry.Value.Dirent.attributes.HasFlag(FatAttributes.Subdirectory))
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
string currentPath = pieces[0];
@@ -106,10 +106,10 @@ namespace Aaru.Filesystems
entry = currentDirectory.FirstOrDefault(t => t.Key.ToLower(_cultureInfo) == pieces[p]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!entry.Value.Dirent.attributes.HasFlag(FatAttributes.Subdirectory))
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
currentPath = p == 0 ? pieces[0] : $"{currentPath}/{pieces[p]}";
uint currentCluster = entry.Value.Dirent.start_cluster;
@@ -126,13 +126,13 @@ namespace Aaru.Filesystems
_directoryCache[currentPath] = new Dictionary<string, CompleteDirectoryEntry>();
contents = new List<string>();
return Errno.NoError;
return ErrorNumber.NoError;
}
uint[] clusters = GetClusters(currentCluster);
if(clusters is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] directoryBuffer = new byte[_bytesPerCluster * clusters.Length];
@@ -389,7 +389,7 @@ namespace Aaru.Filesystems
contents = currentDirectory?.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
using FileAttributes = Aaru.CommonTypes.Structs.FileAttributes;
@@ -43,74 +44,74 @@ namespace Aaru.Filesystems
public sealed partial class FAT
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(stat.Attributes.HasFlag(FileAttributes.Directory) &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
uint[] clusters = GetClusters((uint)stat.Inode);
if(fileBlock >= clusters.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
deviceBlock = (long)(_firstClusterSector + (clusters[fileBlock] * _sectorsPerCluster));
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
attributes = stat.Attributes;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(stat.Attributes.HasFlag(FileAttributes.Directory) &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
if(size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
if(offset >= stat.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(size + offset >= stat.Length)
size = stat.Length - offset;
@@ -118,7 +119,7 @@ namespace Aaru.Filesystems
uint[] clusters = GetClusters((uint)stat.Inode);
if(clusters is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
long firstCluster = offset / _bytesPerCluster;
long offsetInCluster = offset % _bytesPerCluster;
@@ -132,7 +133,7 @@ namespace Aaru.Filesystems
for(int i = 0; i < sizeInClusters; i++)
{
if(i + firstCluster >= clusters.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] buffer =
_image.ReadSectors(_firstClusterSector + (clusters[i + firstCluster] * _sectorsPerCluster),
@@ -145,20 +146,20 @@ namespace Aaru.Filesystems
buf = new byte[size];
ms.Read(buf, 0, (int)size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out CompleteDirectoryEntry completeEntry);
ErrorNumber err = GetFileEntry(path, out CompleteDirectoryEntry completeEntry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
DirectoryEntry entry = completeEntry.Dirent;
@@ -196,8 +197,9 @@ namespace Aaru.Filesystems
if((_fat32 && entry.ea_handle << 16 > 0) ||
entry.start_cluster > 0)
stat.Blocks = _fat32 ? (GetClusters((uint)((entry.ea_handle << 16) + entry.start_cluster))?.Length ?? 0)
: (GetClusters(entry.start_cluster)?.Length??0);
stat.Blocks =
_fat32 ? GetClusters((uint)((entry.ea_handle << 16) + entry.start_cluster))?.Length ?? 0
: GetClusters(entry.start_cluster)?.Length ?? 0;
stat.Length = stat.Blocks * stat.BlockSize;
}
@@ -217,7 +219,7 @@ namespace Aaru.Filesystems
if(entry.attributes.HasFlag(FatAttributes.Device))
stat.Attributes |= FileAttributes.Device;
return Errno.NoError;
return ErrorNumber.NoError;
}
uint[] GetClusters(uint startCluster)
@@ -228,7 +230,7 @@ namespace Aaru.Filesystems
if(startCluster >= XmlFsType.Clusters)
return null;
List<uint> clusters = new List<uint>();
List<uint> clusters = new();
uint nextCluster = startCluster;
@@ -283,7 +285,7 @@ namespace Aaru.Filesystems
return clusters.ToArray();
}
Errno GetFileEntry(string path, out CompleteDirectoryEntry entry)
ErrorNumber GetFileEntry(string path, out CompleteDirectoryEntry entry)
{
entry = null;
@@ -296,15 +298,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pieces.Length == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
string parentPath = string.Join("/", pieces, 0, pieces.Length - 1);
if(!_directoryCache.TryGetValue(parentPath, out _))
{
Errno err = ReadDir(parentPath, out _);
ErrorNumber err = ReadDir(parentPath, out _);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
}
@@ -313,17 +315,17 @@ namespace Aaru.Filesystems
if(pieces.Length == 1)
parent = _rootDirectoryCache;
else if(!_directoryCache.TryGetValue(parentPath, out parent))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
KeyValuePair<string, CompleteDirectoryEntry> dirent =
parent.FirstOrDefault(t => t.Key.ToLower(_cultureInfo) == pieces[^1]);
if(string.IsNullOrEmpty(dirent.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
entry = dirent.Value;
return Errno.NoError;
return ErrorNumber.NoError;
}
byte LfnChecksum(byte[] name, byte[] extension)

View File

@@ -55,7 +55,7 @@ namespace Aaru.Filesystems
IMediaImage _image;
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
XmlFsType = new FileSystemType();
@@ -94,7 +94,7 @@ namespace Aaru.Filesystems
_namespace = Namespace.Human;
break;
default: return Errno.InvalidArgument;
default: return ErrorNumber.InvalidArgument;
}
AaruConsole.DebugWriteLine("FAT plugin", "Reading BPB");
@@ -553,7 +553,7 @@ namespace Aaru.Filesystems
else
{
if(rootDirectoryCluster == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
var rootMs = new MemoryStream();
uint[] rootDirectoryClusters = GetClusters(rootDirectoryCluster);
@@ -574,7 +574,7 @@ namespace Aaru.Filesystems
}
if(rootDirectory is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] lastLfnName = null;
byte lastLfnChecksum = 0;
@@ -1050,32 +1050,32 @@ namespace Aaru.Filesystems
if(string.IsNullOrWhiteSpace(XmlFsType.VolumeName))
XmlFsType.VolumeName = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
_mounted = false;
_fatEntries = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = _statfs.ShallowCopy();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -35,7 +35,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Helpers;
namespace Aaru.Filesystems
@@ -45,17 +45,17 @@ namespace Aaru.Filesystems
Dictionary<string, Dictionary<string, byte[]>> _eaCache;
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
// No other xattr recognized yet
if(_cachedEaData is null &&
!_fat32)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(path[0] == '/')
path = path.Substring(1);
@@ -64,12 +64,12 @@ namespace Aaru.Filesystems
{
xattrs = eas.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno err = GetFileEntry(path, out CompleteDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out CompleteDirectoryEntry entry);
if(err != Errno.NoError ||
if(err != ErrorNumber.NoError ||
entry is null)
return err;
@@ -78,54 +78,54 @@ namespace Aaru.Filesystems
if(!_fat32)
{
if(entry.Dirent.ea_handle == 0)
return Errno.NoError;
return ErrorNumber.NoError;
eas = GetEas(entry.Dirent.ea_handle);
}
else
{
if(entry.Fat32Ea.start_cluster == 0)
return Errno.NoError;
return ErrorNumber.NoError;
eas = GetEas(entry.Fat32Ea);
}
if(eas is null)
return Errno.NoError;
return ErrorNumber.NoError;
_eaCache.Add(path.ToLower(_cultureInfo), eas);
xattrs = eas.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf)
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = ListXAttr(path, out List<string> xattrs);
ErrorNumber err = ListXAttr(path, out List<string> xattrs);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(path[0] == '/')
path = path.Substring(1);
if(!xattrs.Contains(xattr.ToLower(_cultureInfo)))
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
if(!_eaCache.TryGetValue(path.ToLower(_cultureInfo), out Dictionary<string, byte[]> eas))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(!eas.TryGetValue(xattr.ToLower(_cultureInfo), out byte[] data))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
buf = new byte[data.Length];
data.CopyTo(buf, 0);
return Errno.NoError;
return ErrorNumber.NoError;
}
Dictionary<string, byte[]> GetEas(DirectoryEntry entryFat32Ea)
@@ -189,7 +189,7 @@ namespace Aaru.Filesystems
eaData.Length < 4)
return null;
Dictionary<string, byte[]> eas = new Dictionary<string, byte[]>();
Dictionary<string, byte[]> eas = new();
if(_debug)
eas.Add("com.microsoft.os2.fea", eaData);

View File

@@ -33,7 +33,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Helpers;
namespace Aaru.Filesystems
@@ -41,19 +41,19 @@ namespace Aaru.Filesystems
public sealed partial class XboxFatPlugin
{
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(string.IsNullOrWhiteSpace(path) ||
path == "/")
{
contents = _rootDirectory.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string cutPath = path.StartsWith('/') ? path.Substring(1).ToLower(_cultureInfo)
@@ -63,7 +63,7 @@ namespace Aaru.Filesystems
{
contents = currentDirectory.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string[] pieces = cutPath.Split(new[]
@@ -75,10 +75,10 @@ namespace Aaru.Filesystems
_rootDirectory.FirstOrDefault(t => t.Key.ToLower(_cultureInfo) == pieces[0]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!entry.Value.attributes.HasFlag(Attributes.Directory))
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
string currentPath = pieces[0];
@@ -89,10 +89,10 @@ namespace Aaru.Filesystems
entry = currentDirectory.FirstOrDefault(t => t.Key.ToLower(_cultureInfo) == pieces[p]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!entry.Value.attributes.HasFlag(Attributes.Directory))
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
currentPath = p == 0 ? pieces[0] : $"{currentPath}/{pieces[p]}";
uint currentCluster = entry.Value.firstCluster;
@@ -103,7 +103,7 @@ namespace Aaru.Filesystems
uint[] clusters = GetClusters(currentCluster);
if(clusters is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] directoryBuffer = new byte[_bytesPerCluster * clusters.Length];
@@ -150,7 +150,7 @@ namespace Aaru.Filesystems
contents = currentDirectory?.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Schemas;
@@ -72,22 +73,22 @@ namespace Aaru.Filesystems
public string Author => "Natalia Portillo";
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf) => Errno.NotSupported;
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf) => ErrorNumber.NotSupported;
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />

View File

@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
using FileAttributes = Aaru.CommonTypes.Structs.FileAttributes;
@@ -43,67 +44,67 @@ namespace Aaru.Filesystems
public sealed partial class XboxFatPlugin
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(stat.Attributes.HasFlag(FileAttributes.Directory) &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
uint[] clusters = GetClusters((uint)stat.Inode);
if(fileBlock >= clusters.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
deviceBlock = (long)(_firstClusterSector + ((clusters[fileBlock] - 1) * _sectorsPerCluster));
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
attributes = stat.Attributes;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(stat.Attributes.HasFlag(FileAttributes.Directory) &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
if(offset >= stat.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(size + offset >= stat.Length)
size = stat.Length - offset;
@@ -122,7 +123,7 @@ namespace Aaru.Filesystems
for(int i = 0; i < sizeInClusters; i++)
{
if(i + firstCluster >= clusters.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] buffer =
_imagePlugin.
@@ -136,16 +137,16 @@ namespace Aaru.Filesystems
buf = new byte[size];
ms.Read(buf, 0, (int)size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(_debug && (string.IsNullOrEmpty(path) || path == "$" || path == "/"))
{
@@ -159,12 +160,12 @@ namespace Aaru.Filesystems
Links = 1
};
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno err = GetFileEntry(path, out DirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
stat = new FileEntryInfo
@@ -209,7 +210,7 @@ namespace Aaru.Filesystems
if(entry.attributes.HasFlag(Attributes.Archive))
stat.Attributes |= FileAttributes.Archive;
return Errno.NoError;
return ErrorNumber.NoError;
}
uint[] GetClusters(uint startCluster)
@@ -225,7 +226,7 @@ namespace Aaru.Filesystems
else if(startCluster >= _fat16.Length)
return null;
List<uint> clusters = new List<uint>();
List<uint> clusters = new();
uint nextCluster = startCluster;
@@ -247,7 +248,7 @@ namespace Aaru.Filesystems
return clusters.ToArray();
}
Errno GetFileEntry(string path, out DirectoryEntry entry)
ErrorNumber GetFileEntry(string path, out DirectoryEntry entry)
{
entry = new DirectoryEntry();
@@ -260,13 +261,13 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pieces.Length == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
string parentPath = string.Join("/", pieces, 0, pieces.Length - 1);
Errno err = ReadDir(parentPath, out _);
ErrorNumber err = ReadDir(parentPath, out _);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
Dictionary<string, DirectoryEntry> parent;
@@ -274,17 +275,17 @@ namespace Aaru.Filesystems
if(pieces.Length == 1)
parent = _rootDirectory;
else if(!_directoryCache.TryGetValue(parentPath, out parent))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
KeyValuePair<string, DirectoryEntry> dirent =
parent.FirstOrDefault(t => t.Key.ToLower(_cultureInfo) == pieces[^1]);
if(string.IsNullOrEmpty(dirent.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
entry = dirent.Value;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -36,6 +36,7 @@ using System.Globalization;
using System.Runtime.InteropServices;
using System.Text;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
@@ -48,7 +49,7 @@ namespace Aaru.Filesystems
public sealed partial class XboxFatPlugin
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
Encoding = Encoding.GetEncoding("iso-8859-15");
@@ -60,7 +61,7 @@ namespace Aaru.Filesystems
bool.TryParse(debugString, out _debug);
if(imagePlugin.Info.SectorSize < 512)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
AaruConsole.DebugWriteLine("Xbox FAT plugin", "Reading superblock");
@@ -75,7 +76,7 @@ namespace Aaru.Filesystems
}
if(_superblock.magic != FATX_MAGIC)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
AaruConsole.DebugWriteLine("Xbox FAT plugin",
_littleEndian ? "Filesystem is little endian" : "Filesystem is big endian");
@@ -161,7 +162,7 @@ namespace Aaru.Filesystems
AaruConsole.DebugWriteLine("Xbox FAT plugin", "fat32[0] == FATX32_ID = {0}", _fat32[0] == FATX32_ID);
if(_fat32[0] != FATX32_ID)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
else
{
@@ -193,7 +194,7 @@ namespace Aaru.Filesystems
AaruConsole.DebugWriteLine("Xbox FAT plugin", "fat16[0] == FATX16_ID = {0}", _fat16[0] == FATX16_ID);
if(_fat16[0] != FATX16_ID)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
_sectorsPerCluster = (uint)(_superblock.sectorsPerCluster * logicalSectorsPerPhysicalSectors);
@@ -208,7 +209,7 @@ namespace Aaru.Filesystems
uint[] rootDirectoryClusters = GetClusters(_superblock.rootDirectoryCluster);
if(rootDirectoryClusters is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] rootDirectoryBuffer = new byte[_bytesPerCluster * rootDirectoryClusters.Length];
@@ -256,34 +257,34 @@ namespace Aaru.Filesystems
_directoryCache = new Dictionary<string, Dictionary<string, DirectoryEntry>>();
_mounted = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
_fat16 = null;
_fat32 = null;
_imagePlugin = null;
_mounted = false;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = _statfs.ShallowCopy();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -37,7 +37,7 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Helpers;
namespace Aaru.Filesystems
@@ -47,19 +47,19 @@ namespace Aaru.Filesystems
Dictionary<string, Dictionary<string, DecodedDirectoryEntry>> _directoryCache;
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(string.IsNullOrWhiteSpace(path) ||
path == "/")
{
contents = GetFilenames(_rootDirectoryCache);
return Errno.NoError;
return ErrorNumber.NoError;
}
string cutPath = path.StartsWith("/", StringComparison.Ordinal)
@@ -70,7 +70,7 @@ namespace Aaru.Filesystems
{
contents = currentDirectory.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string[] pieces = cutPath.Split(new[]
@@ -82,10 +82,10 @@ namespace Aaru.Filesystems
_rootDirectoryCache.FirstOrDefault(t => t.Key.ToLower(CultureInfo.CurrentUICulture) == pieces[0]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!entry.Value.Flags.HasFlag(FileFlags.Directory))
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
string currentPath = pieces[0];
@@ -96,10 +96,10 @@ namespace Aaru.Filesystems
entry = currentDirectory.FirstOrDefault(t => t.Key.ToLower(CultureInfo.CurrentUICulture) == pieces[p]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if(!entry.Value.Flags.HasFlag(FileFlags.Directory))
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
currentPath = p == 0 ? pieces[0] : $"{currentPath}/{pieces[p]}";
@@ -107,7 +107,7 @@ namespace Aaru.Filesystems
continue;
if(entry.Value.Extents.Count == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
currentDirectory = _cdi
? DecodeCdiDirectory(entry.Value.Extents[0].extent + entry.Value.XattrLength,
@@ -131,12 +131,12 @@ namespace Aaru.Filesystems
contents = GetFilenames(currentDirectory);
return Errno.NoError;
return ErrorNumber.NoError;
}
List<string> GetFilenames(Dictionary<string, DecodedDirectoryEntry> dirents)
{
List<string> contents = new List<string>();
List<string> contents = new();
foreach(DecodedDirectoryEntry entry in dirents.Values)
switch(_namespace)
@@ -161,7 +161,7 @@ namespace Aaru.Filesystems
Dictionary<string, DecodedDirectoryEntry> DecodeCdiDirectory(ulong start, uint size)
{
Dictionary<string, DecodedDirectoryEntry> entries = new Dictionary<string, DecodedDirectoryEntry>();
Dictionary<string, DecodedDirectoryEntry> entries = new();
int entryOff = 0;
byte[] data = ReadSingleExtent(size, (uint)start);
@@ -238,7 +238,7 @@ namespace Aaru.Filesystems
Dictionary<string, DecodedDirectoryEntry> DecodeHighSierraDirectory(ulong start, uint size)
{
Dictionary<string, DecodedDirectoryEntry> entries = new Dictionary<string, DecodedDirectoryEntry>();
Dictionary<string, DecodedDirectoryEntry> entries = new();
int entryOff = 0;
byte[] data = ReadSingleExtent(size, (uint)start);
@@ -309,7 +309,7 @@ namespace Aaru.Filesystems
Dictionary<string, DecodedDirectoryEntry> DecodeIsoDirectory(ulong start, uint size)
{
Dictionary<string, DecodedDirectoryEntry> entries = new Dictionary<string, DecodedDirectoryEntry>();
Dictionary<string, DecodedDirectoryEntry> entries = new();
int entryOff = 0;
byte[] data = ReadSingleExtent(size, (uint)start);
@@ -1010,7 +1010,7 @@ namespace Aaru.Filesystems
PathTableEntryInternal[] GetPathTableEntries(string path)
{
IEnumerable<PathTableEntryInternal> tableEntries;
List<PathTableEntryInternal> pathTableList = new List<PathTableEntryInternal>(_pathTable);
List<PathTableEntryInternal> pathTableList = new(_pathTable);
if(path == "" ||
path == "/")
@@ -1050,7 +1050,7 @@ namespace Aaru.Filesystems
DecodedDirectoryEntry[] GetSubdirsFromCdiPathTable(string path)
{
PathTableEntryInternal[] tableEntries = GetPathTableEntries(path);
List<DecodedDirectoryEntry> entries = new List<DecodedDirectoryEntry>();
List<DecodedDirectoryEntry> entries = new();
foreach(PathTableEntryInternal tEntry in tableEntries)
{
@@ -1100,7 +1100,7 @@ namespace Aaru.Filesystems
DecodedDirectoryEntry[] GetSubdirsFromIsoPathTable(string path)
{
PathTableEntryInternal[] tableEntries = GetPathTableEntries(path);
List<DecodedDirectoryEntry> entries = new List<DecodedDirectoryEntry>();
List<DecodedDirectoryEntry> entries = new();
foreach(PathTableEntryInternal tEntry in tableEntries)
{
@@ -1150,7 +1150,7 @@ namespace Aaru.Filesystems
DecodedDirectoryEntry[] GetSubdirsFromHighSierraPathTable(string path)
{
PathTableEntryInternal[] tableEntries = GetPathTableEntries(path);
List<DecodedDirectoryEntry> entries = new List<DecodedDirectoryEntry>();
List<DecodedDirectoryEntry> entries = new();
foreach(PathTableEntryInternal tEntry in tableEntries)
{

View File

@@ -48,79 +48,79 @@ namespace Aaru.Filesystems
public sealed partial class ISO9660
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DecodedDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(entry.Flags.HasFlag(FileFlags.Directory) &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
// TODO: Multi-extents
if(entry.Extents.Count > 1)
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
deviceBlock = entry.Extents[0].extent + fileBlock;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
attributes = stat.Attributes;
return Errno.NoError;
return ErrorNumber.NoError;
}
// TODO: Resolve symbolic link
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
buf = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DecodedDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(entry.Flags.HasFlag(FileFlags.Directory) &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
if(entry.Extents is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(entry.Size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
if(offset >= (long)entry.Size)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(size + offset >= (long)entry.Size)
size = (long)entry.Size - offset;
@@ -145,14 +145,14 @@ namespace Aaru.Filesystems
buf = new byte[size];
Array.Copy(buffer, offsetInSector, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
catch(Exception e)
{
AaruConsole.DebugWriteLine("ISO9660 plugin", "Exception reading CD-i audio file");
AaruConsole.DebugWriteLine("ISO9660 plugin", "{0}", e);
return Errno.InOutError;
return ErrorNumber.InOutError;
}
}
@@ -161,20 +161,20 @@ namespace Aaru.Filesystems
entry.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
entry.XA?.filenumber ?? 0);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DecodedDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
stat = new FileEntryInfo
@@ -357,7 +357,7 @@ namespace Aaru.Filesystems
if(entry.XattrLength == 0 ||
_cdi ||
_highSierra)
return Errno.NoError;
return ErrorNumber.NoError;
if(entry.CdiSystemArea != null)
{
@@ -413,28 +413,28 @@ namespace Aaru.Filesystems
stat.CreationTimeUtc = DateHandlers.Iso9660ToDateTime(ear.creation_date);
stat.LastWriteTimeUtc = DateHandlers.Iso9660ToDateTime(ear.modification_date);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
Errno err = GetFileEntry(path, out DecodedDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if(entry.SymbolicLink is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
dest = entry.SymbolicLink;
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno GetFileEntry(string path, out DecodedDirectoryEntry entry)
ErrorNumber GetFileEntry(string path, out DecodedDirectoryEntry entry)
{
entry = null;
@@ -448,15 +448,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pieces.Length == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
string parentPath = string.Join("/", pieces, 0, pieces.Length - 1);
if(!_directoryCache.TryGetValue(parentPath, out _))
{
Errno err = ReadDir(parentPath, out _);
ErrorNumber err = ReadDir(parentPath, out _);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
}
@@ -465,7 +465,7 @@ namespace Aaru.Filesystems
if(pieces.Length == 1)
parent = _rootDirectoryCache;
else if(!_directoryCache.TryGetValue(parentPath, out parent))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
KeyValuePair<string, DecodedDirectoryEntry> dirent =
parent.FirstOrDefault(t => t.Key.ToLower(CultureInfo.CurrentUICulture) == pieces[^1]);
@@ -479,15 +479,15 @@ namespace Aaru.Filesystems
pieces[^1] + ";1");
if(string.IsNullOrEmpty(dirent.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
}
else
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
}
entry = dirent.Value;
return Errno.NoError;
return ErrorNumber.NoError;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]

View File

@@ -35,6 +35,7 @@ using System;
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
@@ -47,7 +48,7 @@ namespace Aaru.Filesystems
public sealed partial class ISO9660
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
Encoding = encoding ?? Encoding.GetEncoding(1252);
@@ -93,7 +94,7 @@ namespace Aaru.Filesystems
_namespace = Namespace.Romeo;
break;
default: return Errno.InvalidArgument;
default: return ErrorNumber.InvalidArgument;
}
PrimaryVolumeDescriptor? pvd = null;
@@ -104,11 +105,11 @@ namespace Aaru.Filesystems
// ISO9660 is designed for 2048 bytes/sector devices
if(imagePlugin.Info.SectorSize < 2048)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
// ISO9660 Primary Volume Descriptor starts at sector 16, so that's minimal size.
if(partition.End < 16)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
ulong counter = 0;
@@ -144,7 +145,7 @@ namespace Aaru.Filesystems
if(vdType == 255) // Supposedly we are in the PVD.
{
if(counter == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
break;
}
@@ -158,7 +159,7 @@ namespace Aaru.Filesystems
CDI_MAGIC) // Recognized, it is an ISO9660, now check for rest of data.
{
if(counter == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
break;
}
@@ -253,7 +254,7 @@ namespace Aaru.Filesystems
{
AaruConsole.ErrorWriteLine("ERROR: Could not find primary volume descriptor");
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
if(_highSierra)
@@ -406,7 +407,7 @@ namespace Aaru.Filesystems
{
AaruConsole.ErrorWriteLine("Cannot find root directory...");
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
_usePathTable = true;
@@ -462,7 +463,7 @@ namespace Aaru.Filesystems
}
catch
{
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
byte[] ipbinSector = ReadSector(partition.Start);
@@ -751,33 +752,33 @@ namespace Aaru.Filesystems
_mounted = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
_rootDirectoryCache = null;
_directoryCache = null;
_mounted = false;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = _statfs.ShallowCopy();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -33,7 +33,7 @@
using System;
using System.Collections.Generic;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Helpers;
namespace Aaru.Filesystems
@@ -41,16 +41,16 @@ namespace Aaru.Filesystems
public sealed partial class ISO9660
{
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DecodedDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
xattrs = new List<string>();
@@ -82,7 +82,7 @@ namespace Aaru.Filesystems
if(entry.Flags.HasFlag(FileFlags.Directory) ||
entry.Extents == null ||
entry.Extents.Count == 0)
return Errno.NoError;
return ErrorNumber.NoError;
// TODO: No more exceptions
try
@@ -90,56 +90,56 @@ namespace Aaru.Filesystems
byte[] sector = _image.ReadSectorLong(entry.Extents[0].extent * _blockSize / 2048);
if(sector[15] != 2)
return Errno.NoError;
return ErrorNumber.NoError;
}
catch
{
return Errno.NoError;
return ErrorNumber.NoError;
}
xattrs.Add("org.iso.mode2.subheader");
xattrs.Add("org.iso.mode2.subheader.copy");
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf)
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf)
{
buf = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DecodedDirectoryEntry entry);
ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
switch(xattr)
{
case "org.iso.9660.ea":
if(entry.XattrLength == 0)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
if(entry.Extents is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
buf = ReadSingleExtent(entry.XattrLength * _blockSize, entry.Extents[0].extent);
return Errno.NoError;
return ErrorNumber.NoError;
case "org.iso.9660.AssociatedFile":
if(entry.AssociatedFile is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
if(entry.AssociatedFile.Extents is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(entry.AssociatedFile.Size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
buf = ReadWithExtents(0, (long)entry.AssociatedFile.Size, entry.AssociatedFile.Extents,
@@ -147,34 +147,34 @@ namespace Aaru.Filesystems
entry.AssociatedFile.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
entry.AssociatedFile.XA?.filenumber ?? 0);
return Errno.NoError;
return ErrorNumber.NoError;
case "com.apple.dos.type":
if(entry.AppleDosType is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
buf = new byte[1];
buf[0] = entry.AppleDosType.Value;
return Errno.NoError;
return ErrorNumber.NoError;
case "com.apple.prodos.type":
if(entry.AppleProDosType is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
buf = BitConverter.GetBytes(entry.AppleProDosType.Value);
return Errno.NoError;
return ErrorNumber.NoError;
case "com.apple.ResourceFork":
if(entry.ResourceFork is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
if(entry.ResourceFork.Extents is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(entry.ResourceFork.Size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
buf = ReadWithExtents(0, (long)entry.ResourceFork.Size, entry.ResourceFork.Extents,
@@ -182,39 +182,39 @@ namespace Aaru.Filesystems
entry.ResourceFork.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
entry.ResourceFork.XA?.filenumber ?? 0);
return Errno.NoError;
return ErrorNumber.NoError;
case "com.apple.FinderInfo":
if(entry.FinderInfo is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
buf = Marshal.StructureToByteArrayBigEndian(entry.FinderInfo.Value);
return Errno.NoError;
return ErrorNumber.NoError;
case "com.apple.Macintosh.Icon":
if(entry.AppleIcon is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
buf = new byte[entry.AppleIcon.Length];
Array.Copy(entry.AppleIcon, 0, buf, 0, entry.AppleIcon.Length);
return Errno.NoError;
return ErrorNumber.NoError;
case "com.amiga.comments":
if(entry.AmigaComment is null)
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
buf = new byte[entry.AmigaComment.Length];
Array.Copy(entry.AmigaComment, 0, buf, 0, entry.AmigaComment.Length);
return Errno.NoError;
return ErrorNumber.NoError;
case "org.iso.mode2.subheader":
buf = ReadSubheaderWithExtents(entry.Extents, false);
return Errno.NoError;
return ErrorNumber.NoError;
case "org.iso.mode2.subheader.copy":
buf = ReadSubheaderWithExtents(entry.Extents, true);
return Errno.NoError;
default: return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoError;
default: return ErrorNumber.NoSuchExtendedAttribute;
}
}
}

View File

@@ -43,29 +43,29 @@ namespace Aaru.Filesystems.LisaFS
public sealed partial class LisaFS
{
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
// LisaFS does not support symbolic links (afaik)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
Errno error = LookupFileId(path, out short fileId, out bool isDir);
ErrorNumber error = LookupFileId(path, out short fileId, out bool isDir);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
if(!isDir)
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
/*List<CatalogEntry> catalog;
error = ReadCatalog(fileId, out catalog);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;*/
ReadDir(fileId, out contents);
@@ -84,7 +84,7 @@ namespace Aaru.Filesystems.LisaFS
contents.Sort();
return Errno.NoError;
return ErrorNumber.NoError;
}
void ReadDir(short dirId, out List<string> contents) =>
@@ -95,10 +95,10 @@ namespace Aaru.Filesystems.LisaFS
select StringHandlers.CToString(entry.filename, Encoding).Replace('/', '-')).ToList();
/// <summary>Reads, interprets and caches the Catalog File</summary>
Errno ReadCatalog()
ErrorNumber ReadCatalog()
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
_catalogCache = new List<CatalogEntry>();
@@ -106,9 +106,9 @@ namespace Aaru.Filesystems.LisaFS
if(_mddf.fsversion == LISA_V2 ||
_mddf.fsversion == LISA_V1)
{
Errno error = ReadFile((short)FILEID_CATALOG, out byte[] buf);
ErrorNumber error = ReadFile((short)FILEID_CATALOG, out byte[] buf);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
int offset = 0;
@@ -146,7 +146,7 @@ namespace Aaru.Filesystems.LisaFS
{
error = ReadExtentsFile(entV2.fileID, out ExtentFile ext);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
continue;
var entV3 = new CatalogEntry
@@ -164,7 +164,7 @@ namespace Aaru.Filesystems.LisaFS
_catalogCache.Add(entV3);
}
return Errno.NoError;
return ErrorNumber.NoError;
}
byte[] firstCatalogBlock = null;
@@ -187,7 +187,7 @@ namespace Aaru.Filesystems.LisaFS
// Catalog not found
if(firstCatalogBlock == null)
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
ulong prevCatalogPointer = BigEndianBitConverter.ToUInt32(firstCatalogBlock, 0x7F6);
@@ -198,7 +198,7 @@ namespace Aaru.Filesystems.LisaFS
out LisaTag.PriamTag prevTag);
if(prevTag.FileId != FILEID_CATALOG)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
firstCatalogBlock = _device.ReadSectors(prevCatalogPointer + _mddf.mddf_block + _volumePrefix, 4);
prevCatalogPointer = BigEndianBitConverter.ToUInt32(firstCatalogBlock, 0x7F6);
@@ -218,7 +218,7 @@ namespace Aaru.Filesystems.LisaFS
out LisaTag.PriamTag nextTag);
if(nextTag.FileId != FILEID_CATALOG)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
byte[] nextCatalogBlock = _device.ReadSectors(nextCatalogPointer + _mddf.mddf_block + _volumePrefix, 4);
nextCatalogPointer = BigEndianBitConverter.ToUInt32(nextCatalogBlock, 0x7FA);
@@ -268,7 +268,7 @@ namespace Aaru.Filesystems.LisaFS
Array.Copy(buf, offset + 0x03, entry.filename, 0, E_NAME);
Array.Copy(buf, offset + 0x38, entry.tail, 0, 8);
if(ReadExtentsFile(entry.fileID, out _) == Errno.NoError)
if(ReadExtentsFile(entry.fileID, out _) == ErrorNumber.NoError)
if(!_fileSizeCache.ContainsKey(entry.fileID))
{
_catalogCache.Add(entry);
@@ -311,15 +311,15 @@ namespace Aaru.Filesystems.LisaFS
break;
}
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno StatDir(short dirId, out FileEntryInfo stat)
ErrorNumber StatDir(short dirId, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = new FileEntryInfo
{
@@ -338,7 +338,7 @@ namespace Aaru.Filesystems.LisaFS
_directoryDtcCache.TryGetValue(dirId, out DateTime tmp);
stat.CreationTime = tmp;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -32,7 +32,6 @@
using System;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
using Aaru.Decoders;
using Aaru.Helpers;
@@ -42,42 +41,42 @@ namespace Aaru.Filesystems.LisaFS
public sealed partial class LisaFS
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
// TODO: Not really important.
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
}
/// <summary>Searches the disk for an extents file (or gets it from cache)</summary>
/// <returns>Error.</returns>
/// <param name="fileId">File identifier.</param>
/// <param name="file">Extents file.</param>
Errno ReadExtentsFile(short fileId, out ExtentFile file)
ErrorNumber ReadExtentsFile(short fileId, out ExtentFile file)
{
file = new ExtentFile();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(fileId < 4 ||
(fileId == 4 && _mddf.fsversion != LISA_V2 && _mddf.fsversion != LISA_V1))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(_extentCache.TryGetValue(fileId, out file))
return Errno.NoError;
return ErrorNumber.NoError;
// A file ID that cannot be stored in the S-Records File
if(fileId >= _srecords.Length)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
ulong ptr = _srecords[fileId].extent_ptr;
// An invalid pointer denotes file does not exist
if(ptr == 0xFFFFFFFF ||
ptr == 0x00000000)
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
// Pointers are relative to MDDF
ptr += _mddf.mddf_block + _volumePrefix;
@@ -105,20 +104,20 @@ namespace Aaru.Filesystems.LisaFS
}
if(!found)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
// Checks that the sector tag indicates its the Extents File we are searching for
DecodeTag(_device.ReadSectorTag(ptr, SectorTagType.AppleSectorTag), out extTag);
if(extTag.FileId != (short)(-1 * fileId))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
byte[] sector = _mddf.fsversion == LISA_V1 ? _device.ReadSectors(ptr, 2) : _device.ReadSector(ptr);
if(sector[0] >= 32 ||
sector[0] == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
file.filenameLen = sector[0];
file.filename = new byte[file.filenameLen];
@@ -197,10 +196,10 @@ namespace Aaru.Filesystems.LisaFS
_extentCache.Add(fileId, file);
if(!_debug)
return Errno.NoError;
return ErrorNumber.NoError;
if(_printedExtents.Contains(fileId))
return Errno.NoError;
return ErrorNumber.NoError;
AaruConsole.DebugWriteLine("LisaFS plugin", "ExtentFile[{0}].filenameLen = {1}", fileId, file.filenameLen);
@@ -277,14 +276,14 @@ namespace Aaru.Filesystems.LisaFS
_printedExtents.Add(fileId);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <summary>Reads all the S-Records and caches it</summary>
Errno ReadSRecords()
ErrorNumber ReadSRecords()
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
// Searches the S-Records place using MDDF pointers
byte[] sectors = _device.ReadSectors(_mddf.srec_ptr + _mddf.mddf_block + _volumePrefix, _mddf.srec_len);
@@ -301,7 +300,7 @@ namespace Aaru.Filesystems.LisaFS
flags = BigEndianBitConverter.ToUInt16(sectors, 0x0C + (14 * s))
};
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -42,13 +42,13 @@ namespace Aaru.Filesystems.LisaFS
public sealed partial class LisaFS
{
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
Errno error = LookupFileId(path, out short fileId, out bool isDir);
ErrorNumber error = LookupFileId(path, out short fileId, out bool isDir);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
if(!isDir)
@@ -56,25 +56,25 @@ namespace Aaru.Filesystems.LisaFS
attributes = FileAttributes.Directory;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(size == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
if(offset < 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
Errno error = LookupFileId(path, out short fileId, out _);
ErrorNumber error = LookupFileId(path, out short fileId, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
byte[] tmp;
@@ -99,11 +99,11 @@ namespace Aaru.Filesystems.LisaFS
else
error = ReadFile(fileId, out tmp);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
if(offset >= tmp.Length)
return Errno.EINVAL;
return ErrorNumber.EINVAL;
if(size + offset >= tmp.Length)
size = tmp.Length - offset;
@@ -111,32 +111,32 @@ namespace Aaru.Filesystems.LisaFS
buf = new byte[size];
Array.Copy(tmp, offset, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
Errno error = LookupFileId(path, out short fileId, out bool isDir);
ErrorNumber error = LookupFileId(path, out short fileId, out bool isDir);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
return isDir ? StatDir(fileId, out stat) : Stat(fileId, out stat);
}
Errno GetAttributes(short fileId, out FileAttributes attributes)
ErrorNumber GetAttributes(short fileId, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(fileId < 4)
{
if(!_debug)
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
attributes = new FileAttributes();
attributes = FileAttributes.System;
@@ -144,12 +144,12 @@ namespace Aaru.Filesystems.LisaFS
attributes |= FileAttributes.File;
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno error = ReadExtentsFile(fileId, out ExtentFile extFile);
ErrorNumber error = ReadExtentsFile(fileId, out ExtentFile extFile);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
switch(extFile.ftype)
@@ -184,28 +184,28 @@ namespace Aaru.Filesystems.LisaFS
if(extFile.password_valid > 0)
attributes |= FileAttributes.Password;
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno ReadSystemFile(short fileId, out byte[] buf) => ReadSystemFile(fileId, out buf, false);
ErrorNumber ReadSystemFile(short fileId, out byte[] buf) => ReadSystemFile(fileId, out buf, false);
Errno ReadSystemFile(short fileId, out byte[] buf, bool tags)
ErrorNumber ReadSystemFile(short fileId, out byte[] buf, bool tags)
{
buf = null;
if(!_mounted ||
!_debug)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(fileId > 4 ||
fileId <= 0)
if(fileId != FILEID_BOOT_SIGNED &&
fileId != FILEID_LOADER_SIGNED)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(_systemFileCache.TryGetValue(fileId, out buf) &&
!tags)
return Errno.NoError;
return ErrorNumber.NoError;
int count = 0;
@@ -215,14 +215,14 @@ namespace Aaru.Filesystems.LisaFS
buf = _device.ReadSectors(_mddf.mddf_block + _volumePrefix + _mddf.srec_ptr, _mddf.srec_len);
_systemFileCache.Add(fileId, buf);
return Errno.NoError;
return ErrorNumber.NoError;
}
else
{
buf = _device.ReadSectorsTag(_mddf.mddf_block + _volumePrefix + _mddf.srec_ptr, _mddf.srec_len,
SectorTagType.AppleSectorTag);
return Errno.NoError;
return ErrorNumber.NoError;
}
LisaTag.PriamTag sysTag;
@@ -237,7 +237,7 @@ namespace Aaru.Filesystems.LisaFS
}
if(count == 0)
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
buf = !tags ? new byte[count * _device.Info.SectorSize] : new byte[count * _devTagSize];
@@ -261,23 +261,23 @@ namespace Aaru.Filesystems.LisaFS
if(!tags)
_systemFileCache.Add(fileId, buf);
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno Stat(short fileId, out FileEntryInfo stat)
ErrorNumber Stat(short fileId, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno error;
ErrorNumber error;
ExtentFile file;
if(fileId <= 4)
if(!_debug ||
fileId == 0)
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
else
{
stat = new FileEntryInfo();
@@ -286,7 +286,7 @@ namespace Aaru.Filesystems.LisaFS
stat.Attributes = attrs;
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
if(fileId < 0 &&
@@ -295,7 +295,7 @@ namespace Aaru.Filesystems.LisaFS
{
error = ReadExtentsFile((short)(fileId * -1), out file);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
stat.CreationTime = DateHandlers.LisaToDateTime(file.dtc);
@@ -313,7 +313,7 @@ namespace Aaru.Filesystems.LisaFS
{
error = ReadSystemFile(fileId, out byte[] buf);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
stat.CreationTime = fileId != 4 ? _mddf.dtvc : _mddf.dtcc;
@@ -327,7 +327,7 @@ namespace Aaru.Filesystems.LisaFS
stat.Blocks = buf.Length / _mddf.datasize;
}
return Errno.NoError;
return ErrorNumber.NoError;
}
stat = new FileEntryInfo();
@@ -335,12 +335,12 @@ namespace Aaru.Filesystems.LisaFS
error = GetAttributes(fileId, out FileAttributes fileAttributes);
stat.Attributes = fileAttributes;
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
error = ReadExtentsFile(fileId, out file);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
stat.CreationTime = DateHandlers.LisaToDateTime(file.dtc);
@@ -359,31 +359,31 @@ namespace Aaru.Filesystems.LisaFS
stat.BlockSize = _mddf.datasize;
stat.Blocks = file.length;
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno ReadFile(short fileId, out byte[] buf) => ReadFile(fileId, out buf, false);
ErrorNumber ReadFile(short fileId, out byte[] buf) => ReadFile(fileId, out buf, false);
Errno ReadFile(short fileId, out byte[] buf, bool tags)
ErrorNumber ReadFile(short fileId, out byte[] buf, bool tags)
{
buf = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
tags &= _debug;
if(fileId < 4 ||
(fileId == 4 && _mddf.fsversion != LISA_V2 && _mddf.fsversion != LISA_V1))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(!tags &&
_fileCache.TryGetValue(fileId, out buf))
return Errno.NoError;
return ErrorNumber.NoError;
Errno error = ReadExtentsFile(fileId, out ExtentFile file);
ErrorNumber error = ReadExtentsFile(fileId, out ExtentFile file);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
int sectorSize;
@@ -425,16 +425,16 @@ namespace Aaru.Filesystems.LisaFS
else
buf = temp;
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno LookupFileId(string path, out short fileId, out bool isDir)
ErrorNumber LookupFileId(string path, out short fileId, out bool isDir)
{
fileId = 0;
isDir = false;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -446,13 +446,13 @@ namespace Aaru.Filesystems.LisaFS
fileId = DIRID_ROOT;
isDir = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
// Only V3 supports subdirectories
if(pathElements.Length > 1 &&
_mddf.fsversion != LISA_V3)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(_debug && pathElements.Length == 1)
{
@@ -460,35 +460,35 @@ namespace Aaru.Filesystems.LisaFS
{
fileId = (short)FILEID_MDDF;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(pathElements[0], "$Boot", StringComparison.InvariantCulture) == 0)
{
fileId = FILEID_BOOT_SIGNED;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(pathElements[0], "$Loader", StringComparison.InvariantCulture) == 0)
{
fileId = FILEID_LOADER_SIGNED;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(pathElements[0], "$Bitmap", StringComparison.InvariantCulture) == 0)
{
fileId = (short)FILEID_BITMAP;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(pathElements[0], "$S-Record", StringComparison.InvariantCulture) == 0)
{
fileId = (short)FILEID_SRECORD;
return Errno.NoError;
return ErrorNumber.NoError;
}
if(string.Compare(pathElements[0], "$", StringComparison.InvariantCulture) == 0)
@@ -496,7 +496,7 @@ namespace Aaru.Filesystems.LisaFS
fileId = DIRID_ROOT;
isDir = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
@@ -519,15 +519,15 @@ namespace Aaru.Filesystems.LisaFS
// Not last path element, and it's not a directory
if(lvl != pathElements.Length - 1 &&
!isDir)
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
// Arrived last path element
if(lvl == pathElements.Length - 1)
return Errno.NoError;
return ErrorNumber.NoError;
}
}
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
}
}
}

View File

@@ -48,7 +48,7 @@ namespace Aaru.Filesystems.LisaFS
public sealed partial class LisaFS
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
try
@@ -63,7 +63,7 @@ namespace Aaru.Filesystems.LisaFS
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Underlying device does not support Lisa tags");
return Errno.InOutError;
return ErrorNumber.InOutError;
}
// Minimal LisaOS disk is 3.5" single sided double density, 800 sectors
@@ -71,7 +71,7 @@ namespace Aaru.Filesystems.LisaFS
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Device is too small");
return Errno.InOutError;
return ErrorNumber.InOutError;
}
// MDDF cannot be at end of device, of course
@@ -188,7 +188,7 @@ namespace Aaru.Filesystems.LisaFS
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Incorrect MDDF found");
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
}
// Check MDDF version
@@ -209,7 +209,7 @@ namespace Aaru.Filesystems.LisaFS
default:
AaruConsole.ErrorWriteLine("Cannot mount LisaFS version {0}", _mddf.fsversion.ToString());
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
// Initialize caches
@@ -231,9 +231,9 @@ namespace Aaru.Filesystems.LisaFS
_printedExtents = new List<short>();
// Read the S-Records file
Errno error = ReadSRecords();
ErrorNumber error = ReadSRecords();
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.ErrorWriteLine("Error {0} reading S-Records file.", error);
@@ -250,7 +250,7 @@ namespace Aaru.Filesystems.LisaFS
// Read the Catalog File
error = ReadCatalog();
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Cannot read Catalog File, error {0}",
error.ToString());
@@ -265,7 +265,7 @@ namespace Aaru.Filesystems.LisaFS
{
error = ReadSystemFile(FILEID_BOOT_SIGNED, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Unable to read boot blocks");
_mounted = false;
@@ -275,7 +275,7 @@ namespace Aaru.Filesystems.LisaFS
error = ReadSystemFile(FILEID_LOADER_SIGNED, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Unable to read boot loader");
_mounted = false;
@@ -285,7 +285,7 @@ namespace Aaru.Filesystems.LisaFS
error = ReadSystemFile((short)FILEID_MDDF, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Unable to read MDDF");
_mounted = false;
@@ -295,7 +295,7 @@ namespace Aaru.Filesystems.LisaFS
error = ReadSystemFile((short)FILEID_BITMAP, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Unable to read volume bitmap");
_mounted = false;
@@ -305,7 +305,7 @@ namespace Aaru.Filesystems.LisaFS
error = ReadSystemFile((short)FILEID_SRECORD, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.DebugWriteLine("LisaFS plugin", "Unable to read S-Records file");
_mounted = false;
@@ -341,23 +341,23 @@ namespace Aaru.Filesystems.LisaFS
XmlFsType.VolumeName = _mddf.volname;
XmlFsType.VolumeSerial = $"{_mddf.volid:X16}";
return Errno.NoError;
return ErrorNumber.NoError;
}
AaruConsole.DebugWriteLine("LisaFS plugin", "Not a Lisa filesystem");
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
catch(Exception ex)
{
AaruConsole.ErrorWriteLine("Exception {0}, {1}, {2}", ex.Message, ex.InnerException, ex.StackTrace);
return Errno.InOutError;
return ErrorNumber.InOutError;
}
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
_mounted = false;
_extentCache = null;
@@ -371,16 +371,16 @@ namespace Aaru.Filesystems.LisaFS
_devTagSize = 0;
_srecords = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = new FileSystemInfo
{
@@ -414,7 +414,7 @@ namespace Aaru.Filesystems.LisaFS
break;
}
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -34,7 +34,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Decoders;
using Aaru.Helpers;
@@ -43,45 +43,45 @@ namespace Aaru.Filesystems.LisaFS
public sealed partial class LisaFS
{
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
Errno error = LookupFileId(path, out short fileId, out bool isDir);
ErrorNumber error = LookupFileId(path, out short fileId, out bool isDir);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
return isDir ? Errno.InvalidArgument : ListXAttr(fileId, out xattrs);
return isDir ? ErrorNumber.InvalidArgument : ListXAttr(fileId, out xattrs);
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf)
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf)
{
Errno error = LookupFileId(path, out short fileId, out bool isDir);
ErrorNumber error = LookupFileId(path, out short fileId, out bool isDir);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
return isDir ? Errno.InvalidArgument : GetXattr(fileId, xattr, out buf);
return isDir ? ErrorNumber.InvalidArgument : GetXattr(fileId, xattr, out buf);
}
/// <summary>Lists special Apple Lisa filesystem features as extended attributes</summary>
/// <returns>Error number.</returns>
/// <param name="fileId">File identifier.</param>
/// <param name="xattrs">Extended attributes.</param>
Errno ListXAttr(short fileId, out List<string> xattrs)
ErrorNumber ListXAttr(short fileId, out List<string> xattrs)
{
xattrs = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
// System files
if(fileId < 4)
{
if(!_debug ||
fileId == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
xattrs = new List<string>();
@@ -98,9 +98,9 @@ namespace Aaru.Filesystems.LisaFS
else
{
// Search for the file
Errno error = ReadExtentsFile(fileId, out ExtentFile file);
ErrorNumber error = ReadExtentsFile(fileId, out ExtentFile file);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
xattrs = new List<string>();
@@ -124,7 +124,7 @@ namespace Aaru.Filesystems.LisaFS
xattrs.Sort();
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <summary>Lists special Apple Lisa filesystem features as extended attributes</summary>
@@ -132,19 +132,19 @@ namespace Aaru.Filesystems.LisaFS
/// <param name="fileId">File identifier.</param>
/// <param name="xattr">Extended attribute name.</param>
/// <param name="buf">Buffer where the extended attribute will be stored.</param>
Errno GetXattr(short fileId, string xattr, out byte[] buf)
ErrorNumber GetXattr(short fileId, string xattr, out byte[] buf)
{
buf = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
// System files
if(fileId < 4)
{
if(!_debug ||
fileId == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
// Only MDDF contains an extended attributes
if(fileId == FILEID_MDDF)
@@ -152,20 +152,20 @@ namespace Aaru.Filesystems.LisaFS
{
buf = Encoding.ASCII.GetBytes(_mddf.password);
return Errno.NoError;
return ErrorNumber.NoError;
}
// But on debug mode even system files contain tags
if(_debug && xattr == "com.apple.lisa.tags")
return ReadSystemFile(fileId, out buf, true);
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
}
// Search for the file
Errno error = ReadExtentsFile(fileId, out ExtentFile file);
ErrorNumber error = ReadExtentsFile(fileId, out ExtentFile file);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
switch(xattr)
@@ -174,11 +174,11 @@ namespace Aaru.Filesystems.LisaFS
buf = new byte[8];
Array.Copy(file.password, 0, buf, 0, 8);
return Errno.NoError;
return ErrorNumber.NoError;
case "com.apple.lisa.serial" when file.serial > 0:
buf = Encoding.ASCII.GetBytes(file.serial.ToString());
return Errno.NoError;
return ErrorNumber.NoError;
}
if(!ArrayHelpers.ArrayIsNullOrEmpty(file.LisaInfo) &&
@@ -187,30 +187,30 @@ namespace Aaru.Filesystems.LisaFS
buf = new byte[128];
Array.Copy(file.LisaInfo, 0, buf, 0, 128);
return Errno.NoError;
return ErrorNumber.NoError;
}
if(_debug && xattr == "com.apple.lisa.tags")
return ReadFile(fileId, out buf, true);
return Errno.NoSuchExtendedAttribute;
return ErrorNumber.NoSuchExtendedAttribute;
}
/// <summary>Decodes a sector tag. Not tested with 24-byte tags.</summary>
/// <returns>Error number.</returns>
/// <param name="tag">Sector tag.</param>
/// <param name="decoded">Decoded sector tag.</param>
static Errno DecodeTag(byte[] tag, out LisaTag.PriamTag decoded)
static ErrorNumber DecodeTag(byte[] tag, out LisaTag.PriamTag decoded)
{
decoded = new LisaTag.PriamTag();
LisaTag.PriamTag? pmTag = LisaTag.DecodeTag(tag);
if(!pmTag.HasValue)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
decoded = pmTag.Value;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -34,7 +34,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Helpers;
namespace Aaru.Filesystems
@@ -42,19 +42,19 @@ namespace Aaru.Filesystems
public sealed partial class OperaFS
{
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(string.IsNullOrWhiteSpace(path) ||
path == "/")
{
contents = _rootDirectoryCache.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string cutPath = path.StartsWith("/", StringComparison.Ordinal)
@@ -66,7 +66,7 @@ namespace Aaru.Filesystems
{
contents = currentDirectory.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
string[] pieces = cutPath.Split(new[]
@@ -78,10 +78,10 @@ namespace Aaru.Filesystems
_rootDirectoryCache.FirstOrDefault(t => t.Key.ToLower(CultureInfo.CurrentUICulture) == pieces[0]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if((entry.Value.Entry.flags & FLAGS_MASK) != (int)FileFlags.Directory)
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
string currentPath = pieces[0];
@@ -92,10 +92,10 @@ namespace Aaru.Filesystems
entry = currentDirectory.FirstOrDefault(t => t.Key.ToLower(CultureInfo.CurrentUICulture) == pieces[p]);
if(string.IsNullOrEmpty(entry.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
if((entry.Value.Entry.flags & FLAGS_MASK) != (int)FileFlags.Directory)
return Errno.NotDirectory;
return ErrorNumber.NotDirectory;
currentPath = p == 0 ? pieces[0] : $"{currentPath}/{pieces[p]}";
@@ -103,7 +103,7 @@ namespace Aaru.Filesystems
continue;
if(entry.Value.Pointers.Length < 1)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
currentDirectory = DecodeDirectory((int)entry.Value.Pointers[0]);
@@ -112,13 +112,12 @@ namespace Aaru.Filesystems
contents = currentDirectory?.Keys.ToList();
return Errno.NoError;
return ErrorNumber.NoError;
}
Dictionary<string, DirectoryEntryWithPointers> DecodeDirectory(int firstBlock)
{
Dictionary<string, DirectoryEntryWithPointers> entries =
new Dictionary<string, DirectoryEntryWithPointers>();
Dictionary<string, DirectoryEntryWithPointers> entries = new();
int nextBlock = firstBlock;

View File

@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
namespace Aaru.Filesystems
@@ -41,74 +42,74 @@ namespace Aaru.Filesystems
public sealed partial class OperaFS
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DirectoryEntryWithPointers entry);
ErrorNumber err = GetFileEntry(path, out DirectoryEntryWithPointers entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if((entry.Entry.flags & FLAGS_MASK) == (uint)FileFlags.Directory &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
deviceBlock = entry.Pointers[0] + fileBlock;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = Stat(path, out FileEntryInfo stat);
ErrorNumber err = Stat(path, out FileEntryInfo stat);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
attributes = stat.Attributes;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
buf = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DirectoryEntryWithPointers entry);
ErrorNumber err = GetFileEntry(path, out DirectoryEntryWithPointers entry);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
if((entry.Entry.flags & FLAGS_MASK) == (uint)FileFlags.Directory &&
!_debug)
return Errno.IsDirectory;
return ErrorNumber.IsDirectory;
if(entry.Pointers.Length < 1)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(entry.Entry.byte_count == 0)
{
buf = Array.Empty<byte>();
return Errno.NoError;
return ErrorNumber.NoError;
}
if(offset >= entry.Entry.byte_count)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(size + offset >= entry.Entry.byte_count)
size = entry.Entry.byte_count - offset;
@@ -135,20 +136,20 @@ namespace Aaru.Filesystems
buf = new byte[size];
Array.Copy(buffer, offsetInBlock, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
Errno err = GetFileEntry(path, out DirectoryEntryWithPointers entryWithPointers);
ErrorNumber err = GetFileEntry(path, out DirectoryEntryWithPointers entryWithPointers);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
DirectoryEntry entry = entryWithPointers.Entry;
@@ -171,10 +172,10 @@ namespace Aaru.Filesystems
if(flags == FileFlags.Special)
stat.Attributes |= FileAttributes.Device;
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno GetFileEntry(string path, out DirectoryEntryWithPointers entry)
ErrorNumber GetFileEntry(string path, out DirectoryEntryWithPointers entry)
{
entry = null;
@@ -188,15 +189,15 @@ namespace Aaru.Filesystems
}, StringSplitOptions.RemoveEmptyEntries);
if(pieces.Length == 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
string parentPath = string.Join("/", pieces, 0, pieces.Length - 1);
if(!_directoryCache.TryGetValue(parentPath, out _))
{
Errno err = ReadDir(parentPath, out _);
ErrorNumber err = ReadDir(parentPath, out _);
if(err != Errno.NoError)
if(err != ErrorNumber.NoError)
return err;
}
@@ -205,17 +206,17 @@ namespace Aaru.Filesystems
if(pieces.Length == 1)
parent = _rootDirectoryCache;
else if(!_directoryCache.TryGetValue(parentPath, out parent))
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
KeyValuePair<string, DirectoryEntryWithPointers> dirent =
parent.FirstOrDefault(t => t.Key.ToLower(CultureInfo.CurrentUICulture) == pieces[^1]);
if(string.IsNullOrEmpty(dirent.Key))
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
entry = dirent.Value;
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -33,6 +33,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Schemas;
@@ -63,22 +64,22 @@ namespace Aaru.Filesystems
public string Author => "Natalia Portillo";
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf) => Errno.NotSupported;
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf) => ErrorNumber.NotSupported;
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />

View File

@@ -33,6 +33,7 @@
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -43,7 +44,7 @@ namespace Aaru.Filesystems
public sealed partial class OperaFS
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
// TODO: Find correct default encoding
@@ -60,10 +61,10 @@ namespace Aaru.Filesystems
if(sb.record_type != 1 ||
sb.record_version != 1)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(Encoding.ASCII.GetString(sb.sync_bytes) != SYNC)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
if(imagePlugin.Info.SectorSize == 2336 ||
imagePlugin.Info.SectorSize == 2352 ||
@@ -102,31 +103,31 @@ namespace Aaru.Filesystems
_directoryCache = new Dictionary<string, Dictionary<string, DirectoryEntryWithPointers>>();
_mounted = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
_mounted = false;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
stat = _statfs.ShallowCopy();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -33,7 +33,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Enums;
using Aaru.Helpers;
namespace Aaru.Filesystems.UCSDPascal
@@ -42,16 +42,16 @@ namespace Aaru.Filesystems.UCSDPascal
public sealed partial class PascalPlugin
{
/// <inheritdoc />
public Errno ReadDir(string path, out List<string> contents)
public ErrorNumber ReadDir(string path, out List<string> contents)
{
contents = null;
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
if(!string.IsNullOrEmpty(path) &&
string.Compare(path, "/", StringComparison.OrdinalIgnoreCase) != 0)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
contents = _fileEntries.Select(ent => StringHandlers.PascalToString(ent.Filename, Encoding)).ToList();
@@ -63,7 +63,7 @@ namespace Aaru.Filesystems.UCSDPascal
contents.Sort();
return Errno.NoError;
return ErrorNumber.NoError;
}
}
}

View File

@@ -32,6 +32,7 @@
using System;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -41,20 +42,20 @@ namespace Aaru.Filesystems.UCSDPascal
public sealed partial class PascalPlugin
{
/// <inheritdoc />
public Errno MapBlock(string path, long fileBlock, out long deviceBlock)
public ErrorNumber MapBlock(string path, long fileBlock, out long deviceBlock)
{
deviceBlock = 0;
return !_mounted ? Errno.AccessDenied : Errno.NotImplemented;
return !_mounted ? ErrorNumber.AccessDenied : ErrorNumber.NotImplemented;
}
/// <inheritdoc />
public Errno GetAttributes(string path, out FileAttributes attributes)
public ErrorNumber GetAttributes(string path, out FileAttributes attributes)
{
attributes = new FileAttributes();
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -62,11 +63,11 @@ namespace Aaru.Filesystems.UCSDPascal
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
Errno error = GetFileEntry(path, out _);
ErrorNumber error = GetFileEntry(path, out _);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
attributes = FileAttributes.File;
@@ -75,10 +76,10 @@ namespace Aaru.Filesystems.UCSDPascal
}
/// <inheritdoc />
public Errno Read(string path, long offset, long size, ref byte[] buf)
public ErrorNumber Read(string path, long offset, long size, ref byte[] buf)
{
if(!_mounted)
return Errno.AccessDenied;
return ErrorNumber.AccessDenied;
string[] pathElements = path.Split(new[]
{
@@ -86,7 +87,7 @@ namespace Aaru.Filesystems.UCSDPascal
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
byte[] file;
@@ -95,9 +96,9 @@ namespace Aaru.Filesystems.UCSDPascal
file = string.Compare(path, "$", StringComparison.InvariantCulture) == 0 ? _catalogBlocks : _bootBlocks;
else
{
Errno error = GetFileEntry(path, out PascalFileEntry entry);
ErrorNumber error = GetFileEntry(path, out PascalFileEntry entry);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
byte[] tmp = _device.ReadSectors((ulong)entry.FirstBlock * _multiplier,
@@ -110,7 +111,7 @@ namespace Aaru.Filesystems.UCSDPascal
}
if(offset >= file.Length)
return Errno.EINVAL;
return ErrorNumber.EINVAL;
if(size + offset >= file.Length)
size = file.Length - offset;
@@ -119,11 +120,11 @@ namespace Aaru.Filesystems.UCSDPascal
Array.Copy(file, offset, buf, 0, size);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Stat(string path, out FileEntryInfo stat)
public ErrorNumber Stat(string path, out FileEntryInfo stat)
{
stat = null;
@@ -133,7 +134,7 @@ namespace Aaru.Filesystems.UCSDPascal
}, StringSplitOptions.RemoveEmptyEntries);
if(pathElements.Length != 1)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
if(_debug)
if(string.Compare(path, "$", StringComparison.InvariantCulture) == 0 ||
@@ -159,12 +160,12 @@ namespace Aaru.Filesystems.UCSDPascal
stat.Length = _bootBlocks.Length;
}
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno error = GetFileEntry(path, out PascalFileEntry entry);
ErrorNumber error = GetFileEntry(path, out PascalFileEntry entry);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
return error;
stat = new FileEntryInfo
@@ -178,10 +179,10 @@ namespace Aaru.Filesystems.UCSDPascal
Links = 1
};
return Errno.NoError;
return ErrorNumber.NoError;
}
Errno GetFileEntry(string path, out PascalFileEntry entry)
ErrorNumber GetFileEntry(string path, out PascalFileEntry entry)
{
entry = new PascalFileEntry();
@@ -194,10 +195,10 @@ namespace Aaru.Filesystems.UCSDPascal
{
entry = ent;
return Errno.NoError;
return ErrorNumber.NoError;
}
return Errno.NoSuchFile;
return ErrorNumber.NoSuchFile;
}
}
}

View File

@@ -33,6 +33,7 @@
using System;
using System.Collections.Generic;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -46,7 +47,7 @@ namespace Aaru.Filesystems.UCSDPascal
public sealed partial class PascalPlugin
{
/// <inheritdoc />
public Errno Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
_device = imagePlugin;
@@ -58,7 +59,7 @@ namespace Aaru.Filesystems.UCSDPascal
bool.TryParse(debugString, out _debug);
if(_device.Info.Sectors < 3)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
_multiplier = (uint)(imagePlugin.Info.SectorSize == 256 ? 2 : 1);
@@ -90,7 +91,7 @@ namespace Aaru.Filesystems.UCSDPascal
_mountedVolEntry.Blocks < 0 ||
(ulong)_mountedVolEntry.Blocks != _device.Info.Sectors / _multiplier ||
_mountedVolEntry.Files < 0)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
_catalogBlocks = _device.ReadSectors(_multiplier * 2,
(uint)(_mountedVolEntry.LastBlock - _mountedVolEntry.FirstBlock - 2) *
@@ -136,20 +137,20 @@ namespace Aaru.Filesystems.UCSDPascal
_mounted = true;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Unmount()
public ErrorNumber Unmount()
{
_mounted = false;
_fileEntries = null;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno StatFs(out FileSystemInfo stat)
public ErrorNumber StatFs(out FileSystemInfo stat)
{
stat = new FileSystemInfo
{
@@ -167,7 +168,7 @@ namespace Aaru.Filesystems.UCSDPascal
foreach(PascalFileEntry entry in _fileEntries)
stat.FreeBlocks -= (ulong)(entry.LastBlock - entry.FirstBlock);
return Errno.NotImplemented;
return ErrorNumber.NotImplemented;
}
}
}

View File

@@ -33,8 +33,8 @@
using System;
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Schemas;
namespace Aaru.Filesystems.UCSDPascal
@@ -66,22 +66,22 @@ namespace Aaru.Filesystems.UCSDPascal
public string Author => "Natalia Portillo";
/// <inheritdoc />
public Errno ListXAttr(string path, out List<string> xattrs)
public ErrorNumber ListXAttr(string path, out List<string> xattrs)
{
xattrs = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />
public Errno GetXattr(string path, string xattr, ref byte[] buf) => Errno.NotSupported;
public ErrorNumber GetXattr(string path, string xattr, ref byte[] buf) => ErrorNumber.NotSupported;
/// <inheritdoc />
public Errno ReadLink(string path, out string dest)
public ErrorNumber ReadLink(string path, out string dest)
{
dest = null;
return Errno.NotSupported;
return ErrorNumber.NotSupported;
}
/// <inheritdoc />

View File

@@ -35,8 +35,8 @@ using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
using Marshal = Aaru.Helpers.Marshal;
@@ -321,14 +321,14 @@ namespace Aaru.Filters
// Now way to have two files in a single byte array
/// <inheritdoc />
public Errno Open(byte[] buffer) => Errno.NotSupported;
public ErrorNumber Open(byte[] buffer) => ErrorNumber.NotSupported;
// Now way to have two files in a single stream
/// <inheritdoc />
public Errno Open(Stream stream) => Errno.NotSupported;
public ErrorNumber Open(Stream stream) => ErrorNumber.NotSupported;
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
string filename = System.IO.Path.GetFileName(path);
string filenameNoExt = System.IO.Path.GetFileNameWithoutExtension(path);
@@ -338,7 +338,7 @@ namespace Aaru.Filters
if(filename is null ||
filenameNoExt is null)
return Errno.InvalidArgument;
return ErrorNumber.InvalidArgument;
// Prepend data fork name with "R."
string proDosAppleDouble = System.IO.Path.Combine(parentFolder, "R." + filename);
@@ -510,7 +510,7 @@ namespace Aaru.Filters
// TODO: More appropriate error
if(_headerPath is null)
return Errno.NotSupported;
return ErrorNumber.NotSupported;
var fs = new FileStream(_headerPath, FileMode.Open, FileAccess.Read);
fs.Seek(0, SeekOrigin.Begin);
@@ -604,7 +604,7 @@ namespace Aaru.Filters
fs.Close();
BasePath = path;
return Errno.NoError;
return ErrorNumber.NoError;
}
enum EntryId : uint

View File

@@ -35,8 +35,8 @@ using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
using Marshal = Aaru.Helpers.Marshal;
@@ -217,7 +217,7 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
var ms = new MemoryStream(buffer);
ms.Seek(0, SeekOrigin.Begin);
@@ -301,11 +301,11 @@ namespace Aaru.Filters
_isBytes = true;
_bytes = buffer;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
stream.Seek(0, SeekOrigin.Begin);
@@ -388,11 +388,11 @@ namespace Aaru.Filters
_isStream = true;
_stream = stream;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
var fs = new FileStream(path, FileMode.Open, FileAccess.Read);
fs.Seek(0, SeekOrigin.Begin);
@@ -476,7 +476,7 @@ namespace Aaru.Filters
_isPath = true;
BasePath = path;
return Errno.NoError;
return ErrorNumber.NoError;
}
enum AppleSingleEntryID : uint

View File

@@ -32,6 +32,7 @@
using System;
using System.IO;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Ionic.BZip2;
@@ -150,7 +151,7 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
_dataStream = new MemoryStream(buffer);
BasePath = null;
@@ -159,11 +160,11 @@ namespace Aaru.Filters
_innerStream = new ForcedSeekStream<BZip2InputStream>(_dataStream, false);
DataForkLength = _innerStream.Length;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
_dataStream = stream;
BasePath = null;
@@ -172,11 +173,11 @@ namespace Aaru.Filters
_innerStream = new ForcedSeekStream<BZip2InputStream>(_dataStream, false);
DataForkLength = _innerStream.Length;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
_dataStream = new FileStream(path, FileMode.Open, FileAccess.Read);
BasePath = System.IO.Path.GetFullPath(path);
@@ -187,7 +188,7 @@ namespace Aaru.Filters
_innerStream = new ForcedSeekStream<BZip2InputStream>(_dataStream, false);
DataForkLength = _innerStream.Length;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />

View File

@@ -33,8 +33,8 @@
using System;
using System.IO;
using System.IO.Compression;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
namespace Aaru.Filters
@@ -109,7 +109,7 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
byte[] mtimeB = new byte[4];
byte[] isizeB = new byte[4];
@@ -132,11 +132,11 @@ namespace Aaru.Filters
_zStream = new ForcedSeekStream<GZipStream>(_decompressedSize, _dataStream, CompressionMode.Decompress);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
byte[] mtimeB = new byte[4];
byte[] isizeB = new byte[4];
@@ -159,11 +159,11 @@ namespace Aaru.Filters
_zStream = new ForcedSeekStream<GZipStream>(_decompressedSize, _dataStream, CompressionMode.Decompress);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
byte[] mtimeB = new byte[4];
byte[] isizeB = new byte[4];
@@ -186,7 +186,7 @@ namespace Aaru.Filters
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(mtime);
_zStream = new ForcedSeekStream<GZipStream>(_decompressedSize, _dataStream, CompressionMode.Decompress);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />

View File

@@ -32,8 +32,8 @@
using System;
using System.IO;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using SharpCompress.Compressors;
using SharpCompress.Compressors.LZMA;
@@ -111,7 +111,7 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
_dataStream = new MemoryStream(buffer);
BasePath = null;
@@ -121,11 +121,11 @@ namespace Aaru.Filters
_innerStream = new ForcedSeekStream<LZipStream>(DataForkLength, _dataStream, CompressionMode.Decompress);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
_dataStream = stream;
BasePath = null;
@@ -138,11 +138,11 @@ namespace Aaru.Filters
_dataStream.Seek(0, SeekOrigin.Begin);
_innerStream = new ForcedSeekStream<LZipStream>(DataForkLength, _dataStream, CompressionMode.Decompress);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
_dataStream = new FileStream(path, FileMode.Open, FileAccess.Read);
BasePath = System.IO.Path.GetFullPath(path);
@@ -157,7 +157,7 @@ namespace Aaru.Filters
_dataStream.Seek(0, SeekOrigin.Begin);
_innerStream = new ForcedSeekStream<LZipStream>(DataForkLength, _dataStream, CompressionMode.Decompress);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />

View File

@@ -34,6 +34,7 @@ using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
@@ -198,7 +199,7 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
var ms = new MemoryStream(buffer);
ms.Seek(0, SeekOrigin.Begin);
@@ -229,11 +230,11 @@ namespace Aaru.Filters
_isBytes = true;
_bytes = buffer;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
stream.Seek(0, SeekOrigin.Begin);
@@ -263,11 +264,11 @@ namespace Aaru.Filters
_isStream = true;
_stream = stream;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
var fs = new FileStream(path, FileMode.Open, FileAccess.Read);
fs.Seek(0, SeekOrigin.Begin);
@@ -298,7 +299,7 @@ namespace Aaru.Filters
_isPath = true;
BasePath = path;
return Errno.NoError;
return ErrorNumber.NoError;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]

View File

@@ -37,8 +37,8 @@ using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Helpers;
using Marshal = System.Runtime.InteropServices.Marshal;
@@ -171,13 +171,13 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer) => Errno.NotSupported;
public ErrorNumber Open(byte[] buffer) => ErrorNumber.NotSupported;
/// <inheritdoc />
public Errno Open(Stream stream) => Errno.NotSupported;
public ErrorNumber Open(Stream stream) => ErrorNumber.NotSupported;
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
string parentFolder = System.IO.Path.GetDirectoryName(path);
string baseFilename = System.IO.Path.GetFileName(path);
@@ -240,7 +240,7 @@ namespace Aaru.Filters
finderDatStream.Close();
return Errno.NoError;
return ErrorNumber.NoError;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]

View File

@@ -32,8 +32,8 @@
using System;
using System.IO;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using SharpCompress.Compressors.Xz;
namespace Aaru.Filters
@@ -123,7 +123,7 @@ namespace Aaru.Filters
}
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
_dataStream = new MemoryStream(buffer);
BasePath = null;
@@ -132,11 +132,11 @@ namespace Aaru.Filters
GuessSize();
_innerStream = new ForcedSeekStream<XZStream>(DataForkLength, _dataStream);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
_dataStream = stream;
BasePath = null;
@@ -145,11 +145,11 @@ namespace Aaru.Filters
GuessSize();
_innerStream = new ForcedSeekStream<XZStream>(DataForkLength, _dataStream);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
_dataStream = new FileStream(path, FileMode.Open, FileAccess.Read);
BasePath = System.IO.Path.GetFullPath(path);
@@ -160,7 +160,7 @@ namespace Aaru.Filters
GuessSize();
_innerStream = new ForcedSeekStream<XZStream>(DataForkLength, _dataStream);
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />

View File

@@ -32,8 +32,8 @@
using System;
using System.IO;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
namespace Aaru.Filters
{
@@ -83,29 +83,29 @@ namespace Aaru.Filters
public bool Identify(string path) => File.Exists(path);
/// <inheritdoc />
public Errno Open(byte[] buffer)
public ErrorNumber Open(byte[] buffer)
{
_dataStream = new MemoryStream(buffer);
BasePath = null;
CreationTime = DateTime.UtcNow;
LastWriteTime = CreationTime;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(Stream stream)
public ErrorNumber Open(Stream stream)
{
_dataStream = stream;
BasePath = null;
CreationTime = DateTime.UtcNow;
LastWriteTime = CreationTime;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />
public Errno Open(string path)
public ErrorNumber Open(string path)
{
_dataStream = new FileStream(path, FileMode.Open, FileAccess.Read);
BasePath = System.IO.Path.GetFullPath(path);
@@ -113,7 +113,7 @@ namespace Aaru.Filters
CreationTime = fi.CreationTimeUtc;
LastWriteTime = fi.LastWriteTimeUtc;
return Errno.NoError;
return ErrorNumber.NoError;
}
/// <inheritdoc />

View File

@@ -36,6 +36,7 @@ using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Reactive;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interop;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
@@ -63,9 +64,9 @@ namespace Aaru.Gui.ViewModels.Panels
_model = model;
_view = view;
Errno errno = model.Plugin.ReadDir(model.Path, out List<string> dirents);
ErrorNumber errno = model.Plugin.ReadDir(model.Path, out List<string> dirents);
if(errno != Errno.NoError)
if(errno != ErrorNumber.NoError)
{
MessageBoxManager.
GetMessageBoxStandardWindow("Error",
@@ -79,7 +80,7 @@ namespace Aaru.Gui.ViewModels.Panels
{
errno = model.Plugin.Stat(model.Path + "/" + dirent, out FileEntryInfo stat);
if(errno != Errno.NoError)
if(errno != ErrorNumber.NoError)
{
AaruConsole.
ErrorWriteLine($"Error {errno} trying to get information about filesystem entry named {dirent}");
@@ -242,7 +243,7 @@ namespace Aaru.Gui.ViewModels.Panels
chars[2] = '_';
}
string corrected = new string(chars);
string corrected = new(chars);
mboxResult = await MessageBoxManager.GetMessageBoxStandardWindow("Unsupported filename",
$"The file name {filename} is not supported on this platform.\nDo you want to rename it to {corrected}?",
@@ -290,9 +291,10 @@ namespace Aaru.Gui.ViewModels.Panels
{
byte[] outBuf = Array.Empty<byte>();
Errno error = _model.Plugin.Read(_model.Path + "/" + file.Name, 0, file.Stat.Length, ref outBuf);
ErrorNumber error =
_model.Plugin.Read(_model.Path + "/" + file.Name, 0, file.Stat.Length, ref outBuf);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
mboxResult = await MessageBoxManager.GetMessageBoxStandardWindow("Error reading file",
$"Error {error} reading file.\nDo you want to continue?",

View File

@@ -41,7 +41,6 @@ using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Interop;
using Aaru.CommonTypes.Structs;
using Aaru.CommonTypes.Structs.Devices.SCSI;
using Aaru.Console;
using Aaru.Core;
@@ -624,11 +623,11 @@ namespace Aaru.Gui.ViewModels.Windows
if(fsPlugin != null)
{
Errno error =
ErrorNumber error =
fsPlugin.Mount(imageFormat, partition, null,
new Dictionary<string, string>(), null);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
fsPlugin = null;
}
@@ -693,10 +692,10 @@ namespace Aaru.Gui.ViewModels.Windows
if(fsPlugin != null)
{
Errno error = fsPlugin.Mount(imageFormat, wholePart, null,
ErrorNumber error = fsPlugin.Mount(imageFormat, wholePart, null,
new Dictionary<string, string>(), null);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
fsPlugin = null;
}

View File

@@ -37,7 +37,6 @@ using System.IO;
using System.Linq;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Console;
using Aaru.Filters;
using Aaru.Helpers;
@@ -128,7 +127,7 @@ namespace Aaru.DiscImages
var trackFilter = new ZZZNoFilter();
if(trackFilter.Open(trackfile) != Errno.NoError)
if(trackFilter.Open(trackfile) != ErrorNumber.NoError)
throw new IOException("Could not open KryoFlux track file.");
_imageInfo.CreationTime = DateTime.MaxValue;

View File

@@ -4,6 +4,7 @@ using System.IO;
using System.Text;
using Aaru.Checksums;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Core;
@@ -107,9 +108,9 @@ namespace Aaru.Tests.Filesystems
test.Encoding ??= Encoding.ASCII;
Errno ret = fs.Mount(image, partition, test.Encoding, null, test.Namespace);
ErrorNumber ret = fs.Mount(image, partition, test.Encoding, null, test.Namespace);
Assert.AreEqual(Errno.NoError, ret, $"Unmountable: {testFile}");
Assert.AreEqual(ErrorNumber.NoError, ret, $"Unmountable: {testFile}");
var serializer = new JsonSerializer
{
@@ -259,7 +260,7 @@ namespace Aaru.Tests.Filesystems
}
else if(stat.Attributes.HasFlag(FileAttributes.Symlink))
{
if(fs.ReadLink(childPath, out string link) == Errno.NoError)
if(fs.ReadLink(childPath, out string link) == ErrorNumber.NoError)
data.LinkTarget = link;
}
else
@@ -284,9 +285,9 @@ namespace Aaru.Tests.Filesystems
internal static void TestDirectory(IReadOnlyFilesystem fs, string path, Dictionary<string, FileData> children,
string testFile, bool testXattr)
{
Errno ret = fs.ReadDir(path, out List<string> contents);
ErrorNumber ret = fs.ReadDir(path, out List<string> contents);
Assert.AreEqual(Errno.NoError, ret,
Assert.AreEqual(ErrorNumber.NoError, ret,
$"Unexpected error {ret} when reading directory \"{path}\" of {testFile}.");
if(children.Count == 0 &&
@@ -303,7 +304,7 @@ namespace Aaru.Tests.Filesystems
string childPath = $"{path}/{child.Key}";
ret = fs.Stat(childPath, out FileEntryInfo stat);
if(ret == Errno.NoSuchFile ||
if(ret == ErrorNumber.NoSuchFile ||
!contents.Contains(child.Key))
{
expectedNotFound.Add(child.Key);
@@ -313,7 +314,7 @@ namespace Aaru.Tests.Filesystems
contents.Remove(child.Key);
Assert.AreEqual(Errno.NoError, ret,
Assert.AreEqual(ErrorNumber.NoError, ret,
$"Unexpected error {ret} retrieving stats for \"{childPath}\" in {testFile}");
stat.Should().BeEquivalentTo(child.Value.Info, $"Wrong info for \"{childPath}\" in {testFile}");
@@ -324,7 +325,7 @@ namespace Aaru.Tests.Filesystems
{
ret = fs.Read(childPath, 0, 1, ref buffer);
Assert.AreEqual(Errno.IsDirectory, ret,
Assert.AreEqual(ErrorNumber.IsDirectory, ret,
$"Got wrong data for directory \"{childPath}\" in {testFile}");
Assert.IsNotNull(child.Value.Children,
@@ -337,7 +338,7 @@ namespace Aaru.Tests.Filesystems
{
ret = fs.ReadLink(childPath, out string link);
Assert.AreEqual(Errno.NoError, ret,
Assert.AreEqual(ErrorNumber.NoError, ret,
$"Got wrong data for symbolic link \"{childPath}\" in {testFile}");
Assert.AreEqual(child.Value.LinkTarget, link,
@@ -353,7 +354,7 @@ namespace Aaru.Tests.Filesystems
ret = fs.ListXAttr(childPath, out List<string> xattrs);
if(ret == Errno.NotSupported)
if(ret == ErrorNumber.NotSupported)
{
Assert.IsNull(child.Value.XattrsWithMd5,
$"Defined extended attributes for \"{childPath}\" in {testFile} are not supported by filesystem.");
@@ -361,7 +362,7 @@ namespace Aaru.Tests.Filesystems
continue;
}
Assert.AreEqual(Errno.NoError, ret,
Assert.AreEqual(ErrorNumber.NoError, ret,
$"Unexpected error {ret} when listing extended attributes for \"{childPath}\" in {testFile}");
if(xattrs.Count > 0)
@@ -383,9 +384,9 @@ namespace Aaru.Tests.Filesystems
static void TestFile(IReadOnlyFilesystem fs, string path, string md5, long length, string testFile)
{
byte[] buffer = new byte[length];
Errno ret = fs.Read(path, 0, length, ref buffer);
ErrorNumber ret = fs.Read(path, 0, length, ref buffer);
Assert.AreEqual(Errno.NoError, ret, $"Unexpected error {ret} when reading \"{path}\" in {testFile}");
Assert.AreEqual(ErrorNumber.NoError, ret, $"Unexpected error {ret} when reading \"{path}\" in {testFile}");
string data = Md5Context.Data(buffer, out _);
@@ -406,9 +407,9 @@ namespace Aaru.Tests.Filesystems
foreach(KeyValuePair<string, string> xattr in xattrs)
{
byte[] buffer = Array.Empty<byte>();
Errno ret = fs.GetXattr(path, xattr.Key, ref buffer);
ErrorNumber ret = fs.GetXattr(path, xattr.Key, ref buffer);
if(ret == Errno.NoSuchExtendedAttribute ||
if(ret == ErrorNumber.NoSuchExtendedAttribute ||
!contents.Contains(xattr.Key))
{
expectedNotFound.Add(xattr.Key);
@@ -418,7 +419,7 @@ namespace Aaru.Tests.Filesystems
contents.Remove(xattr.Key);
Assert.AreEqual(Errno.NoError, ret,
Assert.AreEqual(ErrorNumber.NoError, ret,
$"Unexpected error {ret} retrieving extended attributes for \"{path}\" in {testFile}");
string data = Md5Context.Data(buffer, out _);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -104,7 +105,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -102,7 +103,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -104,7 +105,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -102,7 +103,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -102,7 +103,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -102,7 +103,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -102,7 +103,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new AppleDouble();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using NUnit.Framework;
@@ -93,7 +94,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new Aaru.Filters.AppleSingle();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using NUnit.Framework;
@@ -82,7 +83,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new Aaru.Filters.BZip2();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(1048576, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(0, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using NUnit.Framework;
@@ -82,7 +83,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new Aaru.Filters.GZip();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(1048576, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(0, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using NUnit.Framework;
@@ -82,7 +83,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new Aaru.Filters.LZip();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(1048576, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(0, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -94,7 +95,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new MacBinary();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -94,7 +95,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new MacBinary();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -94,7 +95,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new MacBinary();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(286, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using NUnit.Framework;
@@ -95,7 +96,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new Aaru.Filters.PcExchange();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(737280, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(546, filter.ResourceForkLength);

View File

@@ -28,6 +28,7 @@
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Filters;
@@ -83,7 +84,7 @@ namespace Aaru.Tests.Filters
public void Test()
{
IFilter filter = new XZ();
Assert.AreEqual(Errno.NoError, filter.Open(_location));
Assert.AreEqual(ErrorNumber.NoError, filter.Open(_location));
Assert.AreEqual(1048576, filter.DataForkLength);
Assert.AreNotEqual(null, filter.GetDataForkStream());
Assert.AreEqual(0, filter.ResourceForkLength);

View File

@@ -3,8 +3,8 @@ using System.Collections.Generic;
using System.IO;
using Aaru.Checksums;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Core;
using Aaru.Tests.Filesystems;
using FluentAssertions.Execution;
@@ -241,10 +241,10 @@ namespace Aaru.Tests.Images
Errno error = fs.Mount(image, partitions[i], null, null, null);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
$"Could not mount {pluginName} in partition {i}.");
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
continue;
expectedData[j] = new VolumeData
@@ -282,12 +282,12 @@ namespace Aaru.Tests.Images
Assert.IsNotNull(fs,
$"Could not instantiate filesystem {pluginName} in {testFile}");
Errno error = fs.Mount(image, partitions[i], null, null, null);
ErrorNumber error = fs.Mount(image, partitions[i], null, null, null);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
$"Could not mount {pluginName} in partition {i} in {testFile}.");
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
continue;
VolumeData volumeData = expectedData[j];

View File

@@ -227,10 +227,10 @@ namespace Aaru.Tests.Images
track.FileSystems[i].Encoding ??= Encoding.ASCII;
Errno ret = rofs.Mount(image, partition, track.FileSystems[i].Encoding, null,
ErrorNumber ret = rofs.Mount(image, partition, track.FileSystems[i].Encoding, null,
track.FileSystems[i].Namespace);
Assert.AreEqual(Errno.NoError, ret, $"Unmountable: {testFile}");
Assert.AreEqual(ErrorNumber.NoError, ret, $"Unmountable: {testFile}");
var serializer = new JsonSerializer
{

View File

@@ -4,6 +4,7 @@ using System.IO;
using System.Text;
using Aaru.Checksums;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Core;
@@ -125,9 +126,9 @@ namespace Aaru.Tests.Issues
filesystemFound = true;
Errno error = fs.Mount(imageFormat, partitions[i], encodingClass, options, Namespace);
ErrorNumber error = fs.Mount(imageFormat, partitions[i], encodingClass, options, Namespace);
Assert.AreEqual(Errno.NoError, error, $"Could not mount {pluginName} in partition {i}.");
Assert.AreEqual(ErrorNumber.NoError, error, $"Could not mount {pluginName} in partition {i}.");
Assert.AreEqual(expectedData.Partitions[i].Volumes[j].VolumeName, fs.XmlFsType.VolumeName,
$"Excepted volume name \"{expectedData.Partitions[i].Volumes[j].VolumeName}\" for filesystem {j} in partition {i} but found \"{fs.XmlFsType.VolumeName}\"");
@@ -149,16 +150,16 @@ namespace Aaru.Tests.Issues
if(path.StartsWith('/'))
path = path[1..];
Errno error = fs.ReadDir(path, out List<string> directory);
ErrorNumber error = fs.ReadDir(path, out List<string> directory);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
string.Format("Error {0} reading root directory {0}", error.ToString()));
foreach(string entry in directory)
{
error = fs.Stat(path + "/" + entry, out FileEntryInfo stat);
Assert.AreEqual(Errno.NoError, error, $"Error getting stat for entry {entry}");
Assert.AreEqual(ErrorNumber.NoError, error, $"Error getting stat for entry {entry}");
if(stat.Attributes.HasFlag(FileAttributes.Directory))
{
@@ -200,12 +201,12 @@ namespace Aaru.Tests.Issues
{
error = fs.ListXAttr(path + "/" + entry, out List<string> xattrs);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
$"Error {error} getting extended attributes for entry {path + "/" + entry}");
Dictionary<string, string> expectedXattrs = fileData.XattrsWithMd5;
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
foreach(string xattr in xattrs)
{
Assert.IsTrue(expectedXattrs.TryGetValue(xattr, out string expectedXattrMd5),
@@ -216,7 +217,7 @@ namespace Aaru.Tests.Issues
byte[] xattrBuf = Array.Empty<byte>();
error = fs.GetXattr(path + "/" + entry, xattr, ref xattrBuf);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
$"Error {error} reading extended attributes for entry {path + "/" + entry}");
string xattrMd5 = Md5Context.Data(xattrBuf, out _);
@@ -234,7 +235,7 @@ namespace Aaru.Tests.Issues
error = fs.Read(path + "/" + entry, 0, stat.Length, ref outBuf);
Assert.AreEqual(Errno.NoError, error, $"Error {error} reading file {path + "/" + entry}");
Assert.AreEqual(ErrorNumber.NoError, error, $"Error {error} reading file {path + "/" + entry}");
string calculatedMd5 = Md5Context.Data(outBuf, out _);

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Text;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Core;
@@ -74,7 +75,7 @@ namespace Aaru.Tests.Issues
continue;
IReadOnlyFilesystem plugin;
Errno error;
ErrorNumber error;
if(idPlugins.Count > 1)
{
@@ -93,7 +94,8 @@ namespace Aaru.Tests.Issues
error = fs.Mount(imageFormat, partitions[i], encodingClass, options, Namespace);
Assert.AreEqual(Errno.NoError, error, $"Could not mount {pluginName} in partition {i}.");
Assert.AreEqual(ErrorNumber.NoError, error,
$"Could not mount {pluginName} in partition {i}.");
ExtractFilesInDir("/", fs, Xattrs);
}
@@ -114,7 +116,7 @@ namespace Aaru.Tests.Issues
error = fs.Mount(imageFormat, partitions[i], encodingClass, options, Namespace);
Assert.AreEqual(Errno.NoError, error, $"Could not mount {plugin.Name} in partition {i}.");
Assert.AreEqual(ErrorNumber.NoError, error, $"Could not mount {plugin.Name} in partition {i}.");
ExtractFilesInDir("/", fs, Xattrs);
}
@@ -128,16 +130,16 @@ namespace Aaru.Tests.Issues
if(path.StartsWith('/'))
path = path[1..];
Errno error = fs.ReadDir(path, out List<string> directory);
ErrorNumber error = fs.ReadDir(path, out List<string> directory);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
string.Format("Error {0} reading root directory {0}", error.ToString()));
foreach(string entry in directory)
{
error = fs.Stat(path + "/" + entry, out FileEntryInfo stat);
Assert.AreEqual(Errno.NoError, error, $"Error getting stat for entry {entry}");
Assert.AreEqual(ErrorNumber.NoError, error, $"Error getting stat for entry {entry}");
if(stat.Attributes.HasFlag(FileAttributes.Directory))
{
@@ -150,16 +152,16 @@ namespace Aaru.Tests.Issues
{
error = fs.ListXAttr(path + "/" + entry, out List<string> xattrs);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
$"Error {error} getting extended attributes for entry {path + "/" + entry}");
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
foreach(string xattr in xattrs)
{
byte[] xattrBuf = Array.Empty<byte>();
error = fs.GetXattr(path + "/" + entry, xattr, ref xattrBuf);
Assert.AreEqual(Errno.NoError, error,
Assert.AreEqual(ErrorNumber.NoError, error,
$"Error {error} reading extended attributes for entry {path + "/" + entry}");
}
}
@@ -168,7 +170,7 @@ namespace Aaru.Tests.Issues
error = fs.Read(path + "/" + entry, 0, stat.Length, ref outBuf);
Assert.AreEqual(Errno.NoError, error, $"Error {error} reading file {path + "/" + entry}");
Assert.AreEqual(ErrorNumber.NoError, error, $"Error {error} reading file {path + "/" + entry}");
}
}
}

View File

@@ -158,7 +158,7 @@ namespace Aaru.Commands.Device
AaruConsole.ErrorWriteLine("Not continuing.");
return (int)ErrorNumber.NotEnoughPermissions;
return (int)ErrorNumber.NotPermitted;
}
var report = new DeviceReportV2

View File

@@ -225,7 +225,7 @@ namespace Aaru.Commands.Filesystem
{
AaruConsole.ErrorWriteLine("Destination exists, aborting.");
return (int)ErrorNumber.DestinationExists;
return (int)ErrorNumber.FileExists;
}
Directory.CreateDirectory(outputDir);
@@ -316,7 +316,7 @@ namespace Aaru.Commands.Filesystem
else
{
IReadOnlyFilesystem plugin;
Errno error = Errno.InvalidArgument;
ErrorNumber error = ErrorNumber.InvalidArgument;
if(idPlugins.Count > 1)
{
@@ -339,7 +339,7 @@ namespace Aaru.Commands.Filesystem
@namespace);
});
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
{
string volumeName = string.IsNullOrEmpty(fs.XmlFsType.VolumeName) ? "NO NAME"
: fs.XmlFsType.VolumeName;
@@ -372,7 +372,7 @@ namespace Aaru.Commands.Filesystem
error = fs.Mount(imageFormat, partitions[i], encodingClass, parsedOptions, @namespace);
});
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
{
string volumeName = string.IsNullOrEmpty(fs.XmlFsType.VolumeName) ? "NO NAME"
: fs.XmlFsType.VolumeName;
@@ -404,9 +404,9 @@ namespace Aaru.Commands.Filesystem
if(path.StartsWith('/'))
path = path.Substring(1);
Errno error = fs.ReadDir(path, out List<string> directory);
ErrorNumber error = fs.ReadDir(path, out List<string> directory);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.ErrorWriteLine("Error {0} reading root directory {0}", error.ToString());
@@ -423,7 +423,7 @@ namespace Aaru.Commands.Filesystem
error = fs.Stat(path + "/" + entry, out stat);
});
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
{
string outputPath;
@@ -486,7 +486,7 @@ namespace Aaru.Commands.Filesystem
error = fs.ListXAttr(path + "/" + entry, out xattrs);
});
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
foreach(string xattr in xattrs)
{
byte[] xattrBuf = Array.Empty<byte>();
@@ -497,7 +497,7 @@ namespace Aaru.Commands.Filesystem
error = fs.GetXattr(path + "/" + entry, xattr, ref xattrBuf);
});
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
continue;
outputPath = Path.Combine(outputDir, fs.XmlFsType.Type, volumeName, ".xattrs", path,
@@ -595,7 +595,7 @@ namespace Aaru.Commands.Filesystem
error = fs.Read(path + "/" + entry, position, bytesToRead, ref outBuf);
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
outputFile.Write(outBuf, 0, outBuf.Length);
else
{

View File

@@ -287,7 +287,7 @@ namespace Aaru.Commands.Filesystem
else
{
IReadOnlyFilesystem plugin;
Errno error = Errno.InvalidArgument;
ErrorNumber error = ErrorNumber.InvalidArgument;
if(idPlugins.Count > 1)
{
@@ -313,7 +313,7 @@ namespace Aaru.Commands.Filesystem
@namespace);
});
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
{
ListFilesInDir("/", fs, longFormat);
@@ -346,7 +346,7 @@ namespace Aaru.Commands.Filesystem
error = fs.Mount(imageFormat, partitions[i], encodingClass, parsedOptions, @namespace);
});
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
{
ListFilesInDir("/", fs, longFormat);
@@ -371,7 +371,7 @@ namespace Aaru.Commands.Filesystem
static void ListFilesInDir(string path, [NotNull] IReadOnlyFilesystem fs, bool longFormat)
{
Errno error = Errno.InvalidArgument;
ErrorNumber error = ErrorNumber.InvalidArgument;
List<string> directory = new();
if(path.StartsWith('/'))
@@ -385,7 +385,7 @@ namespace Aaru.Commands.Filesystem
error = fs.ReadDir(path, out directory);
});
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
{
AaruConsole.ErrorWriteLine("Error {0} reading root directory {1}", error.ToString(), path);
@@ -426,7 +426,7 @@ namespace Aaru.Commands.Filesystem
error = fs.ListXAttr(path + "/" + entry.Key, out List<string> xattrs);
if(error != Errno.NoError)
if(error != ErrorNumber.NoError)
continue;
foreach(string xattr in xattrs)
@@ -434,7 +434,7 @@ namespace Aaru.Commands.Filesystem
byte[] xattrBuf = Array.Empty<byte>();
error = fs.GetXattr(path + "/" + entry.Key, xattr, ref xattrBuf);
if(error == Errno.NoError)
if(error == ErrorNumber.NoError)
AaruConsole.WriteLine("\t\t{0}\t{1:##,#}", Markup.Escape(xattr), xattrBuf.Length);
}
}

View File

@@ -417,7 +417,7 @@ namespace Aaru.Commands.Image
{
AaruConsole.ErrorWriteLine("Could not find metadata sidecar, not continuing...");
return (int)ErrorNumber.FileNotFound;
return (int)ErrorNumber.NoSuchFile;
}
xs = new XmlSerializer(typeof(Resume));
@@ -441,7 +441,7 @@ namespace Aaru.Commands.Image
{
AaruConsole.ErrorWriteLine("Could not find resume file, not continuing...");
return (int)ErrorNumber.FileNotFound;
return (int)ErrorNumber.NoSuchFile;
}
var filtersList = new FiltersList();
@@ -464,7 +464,7 @@ namespace Aaru.Commands.Image
{
AaruConsole.ErrorWriteLine("Output file already exists, not continuing.");
return (int)ErrorNumber.DestinationExists;
return (int)ErrorNumber.FileExists;
}
PluginBase plugins = GetPluginBase.Instance;
@@ -730,7 +730,7 @@ namespace Aaru.Commands.Image
foreach(MediaTagType mediaTag in inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
!force || outputFormat.SupportedMediaTags.Contains(mediaTag)))
{
ErrorNumber errno = ErrorNumber.NoError;
ErrorNumber ErrorNumber = ErrorNumber.NoError;
AnsiConsole.Progress().AutoClear(false).HideCompleted(false).
Columns(new TaskDescriptionColumn(), new SpinnerColumn()).Start(ctx =>
@@ -749,12 +749,12 @@ namespace Aaru.Commands.Image
AaruConsole.ErrorWriteLine("Error {0} writing media tag, not continuing...",
outputFormat.ErrorMessage);
errno = ErrorNumber.WriteError;
ErrorNumber = ErrorNumber.WriteError;
}
});
if(errno != ErrorNumber.NoError)
return (int)errno;
if(ErrorNumber != ErrorNumber.NoError)
return (int)ErrorNumber;
}
AaruConsole.WriteLine("{0} sectors to convert", inputFormat.Info.Sectors);
@@ -837,7 +837,7 @@ namespace Aaru.Commands.Image
AaruConsole.
ErrorWriteLine("Input image is not returning raw sectors, use force if you want to continue...");
errno = (ErrorNumber)Errno.InOutError;
errno = ErrorNumber.InOutError;
return;
}
@@ -1196,7 +1196,7 @@ namespace Aaru.Commands.Image
outputFormat.ErrorMessage);
}
ErrorNumber errno = ErrorNumber.NoError;
ErrorNumber ErrorNumber = ErrorNumber.NoError;
AnsiConsole.Progress().AutoClear(true).HideCompleted(true).
Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()).
@@ -1258,7 +1258,7 @@ namespace Aaru.Commands.Image
ErrorWriteLine("Error {0} writing sector {1}, not continuing...",
outputFormat.ErrorMessage, doneSectors);
errno = ErrorNumber.WriteError;
ErrorNumber = ErrorNumber.WriteError;
return;
}
@@ -1335,7 +1335,7 @@ namespace Aaru.Commands.Image
ErrorWriteLine("Error {0} writing sector {1}, not continuing...",
outputFormat.ErrorMessage, doneSectors);
errno = ErrorNumber.WriteError;
ErrorNumber = ErrorNumber.WriteError;
return;
}
@@ -1379,8 +1379,8 @@ namespace Aaru.Commands.Image
partitionTask.StopTask();
});
if(errno != ErrorNumber.NoError)
return (int)errno;
if(ErrorNumber != ErrorNumber.NoError)
return (int)ErrorNumber;
}
if(resume != null ||

View File

@@ -157,7 +157,7 @@ namespace Aaru.Commands.Image
{
AaruConsole.ErrorWriteLine("You cannot use --tape option when input is a file.");
return (int)ErrorNumber.ExpectedDirectory;
return (int)ErrorNumber.NotDirectory;
}
var filtersList = new FiltersList();
@@ -317,7 +317,7 @@ namespace Aaru.Commands.Image
{
AaruConsole.ErrorWriteLine("Cannot create a sidecar from a directory.");
return (int)ErrorNumber.ExpectedFile;
return (int)ErrorNumber.IsDirectory;
}
string[] contents = Directory.GetFiles(imagePath, "*", SearchOption.TopDirectoryOnly);

View File

@@ -638,7 +638,7 @@ namespace Aaru.Commands.Media
if(isResponse)
continue;
return (int)ErrorNumber.FileNotFound;
return (int)ErrorNumber.NoSuchFile;
}
plugins = GetPluginBase.Instance;