[AaruFormat] Add helper method to convert AaruFormat.Status to ErrorNumber

This commit is contained in:
2025-10-11 18:09:46 +01:00
parent 003cf07531
commit f23f099b30
2 changed files with 51 additions and 2 deletions

View File

@@ -0,0 +1,50 @@
using Aaru.CommonTypes.Enums;
namespace Aaru.Images;
public sealed partial class AaruFormat
{
/// <summary>
/// Converts an AaruFormat.Status to Aaru.CommonTypes.Enums.ErrorNumber.
/// </summary>
/// <param name="status">The AaruFormat status to convert</param>
/// <returns>The corresponding ErrorNumber</returns>
static ErrorNumber StatusToErrorNumber(Status status)
{
return status switch
{
Status.Ok => ErrorNumber.NoError,
Status.NotAaruFormat => ErrorNumber.InvalidArgument,
Status.FileTooSmall => ErrorNumber.InvalidArgument,
Status.IncompatibleVersion => ErrorNumber.NotSupported,
Status.CannotReadIndex => ErrorNumber.InOutError,
Status.SectorOutOfBounds => ErrorNumber.OutOfRange,
Status.CannotReadHeader => ErrorNumber.InOutError,
Status.CannotReadBlock => ErrorNumber.InOutError,
Status.UnsupportedCompression => ErrorNumber.NotSupported,
Status.NotEnoughMemory => ErrorNumber.OutOfMemory,
Status.BufferTooSmall => ErrorNumber.InvalidArgument,
Status.MediaTagNotPresent => ErrorNumber.NoData,
Status.IncorrectMediaType => ErrorNumber.InvalidArgument,
Status.TrackNotFound => ErrorNumber.NoData,
Status.ReachedUnreachableCode => ErrorNumber.InvalidArgument,
Status.InvalidTrackFormat => ErrorNumber.InvalidArgument,
Status.SectorTagNotPresent => ErrorNumber.NoData,
Status.CannotDecompressBlock => ErrorNumber.InOutError,
Status.InvalidBlockCrc => ErrorNumber.InOutError,
Status.CannotCreateFile => ErrorNumber.InvalidArgument,
Status.InvalidAppNameLength => ErrorNumber.InvalidArgument,
Status.CannotWriteHeader => ErrorNumber.InOutError,
Status.ReadOnly => ErrorNumber.ReadOnly,
Status.CannotWriteBlockHeader => ErrorNumber.InOutError,
Status.CannotWriteBlockData => ErrorNumber.InOutError,
Status.CannotSetDdtEntry => ErrorNumber.InOutError,
Status.IncorrectDataSize => ErrorNumber.InvalidArgument,
Status.InvalidTag => ErrorNumber.InvalidArgument,
Status.TapeFileNotFound => ErrorNumber.NoData,
Status.TapePartitionNotFound => ErrorNumber.NoData,
Status.MetadataNotPresent => ErrorNumber.NoData,
_ => ErrorNumber.InvalidArgument
};
}
}

View File

@@ -37,8 +37,7 @@ public sealed partial class AaruFormat
Status ret = aaruf_get_image_info(_context, ref imageInfo);
// TODO: Convert between error codes
if(ret != Status.Ok) return (ErrorNumber)ret;
if(ret != Status.Ok) return StatusToErrorNumber(ret);
_imageInfo.Application = StringHandlers.CToString(imageInfo.Application, Encoding.UTF8);
_imageInfo.Version = StringHandlers.CToString(imageInfo.Version, Encoding.UTF8);