From 57b60bc7dd4cb73a801edb7065b4b429ca1ba907 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 11 Oct 2025 16:57:19 +0100 Subject: [PATCH] [AaruFormat] Implement Open --- Aaru.Images/AaruFormat/AaruFormat.cs | 4 + Aaru.Images/AaruFormat/Open.cs | 42 ++++ Aaru.Images/AaruFormat/Unimplemented.cs | 4 - Aaru.sln.DotSettings | 316 ++++++++++++------------ 4 files changed, 206 insertions(+), 160 deletions(-) create mode 100644 Aaru.Images/AaruFormat/Open.cs diff --git a/Aaru.Images/AaruFormat/AaruFormat.cs b/Aaru.Images/AaruFormat/AaruFormat.cs index 0cb6f3d92..405f20649 100644 --- a/Aaru.Images/AaruFormat/AaruFormat.cs +++ b/Aaru.Images/AaruFormat/AaruFormat.cs @@ -1,3 +1,4 @@ +using System; using Aaru.CommonTypes.Interfaces; using Aaru.CommonTypes.Structs; @@ -7,7 +8,10 @@ namespace Aaru.Images; /// Implements reading and writing AaruFormat media images public sealed partial class AaruFormat : IWritableOpticalImage, IVerifiableImage, IWritableTapeImage { + const string MODULE_NAME = "Aaru Format plugin"; + readonly ImageInfo _imageInfo; + IntPtr _context; public AaruFormat() => _imageInfo = new ImageInfo { diff --git a/Aaru.Images/AaruFormat/Open.cs b/Aaru.Images/AaruFormat/Open.cs new file mode 100644 index 000000000..d4739b879 --- /dev/null +++ b/Aaru.Images/AaruFormat/Open.cs @@ -0,0 +1,42 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Aaru.CommonTypes.Enums; +using Aaru.CommonTypes.Interfaces; +using Aaru.Logging; + +namespace Aaru.Images; + +public sealed partial class AaruFormat +{ +#region IWritableOpticalImage Members + + /// + public ErrorNumber Open(IFilter imageFilter) + { + string imagePath = imageFilter.BasePath; + + _context = aaruf_open(imagePath); + + if(_context != IntPtr.Zero) return ErrorNumber.NoError; + + int errno = Marshal.GetLastWin32Error(); + + AaruLogging.Debug(MODULE_NAME, + "Failed to open AaruFormat image {0}, libaaruformat returned error number {1}", + imagePath, + errno); + + return (ErrorNumber)errno; + } + +#endregion + + // AARU_EXPORT void AARU_CALL *aaruf_open(const char *filepath) + [LibraryImport("libaaruformat", + EntryPoint = "aaruf_open", + StringMarshalling = StringMarshalling.Utf8, + SetLastError = true)] + [UnmanagedCallConv(CallConvs = [typeof(CallConvStdcall)])] + private static partial IntPtr aaruf_open(string filepath); +} \ No newline at end of file diff --git a/Aaru.Images/AaruFormat/Unimplemented.cs b/Aaru.Images/AaruFormat/Unimplemented.cs index f9d887716..75f6f2d48 100644 --- a/Aaru.Images/AaruFormat/Unimplemented.cs +++ b/Aaru.Images/AaruFormat/Unimplemented.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; -using Aaru.CommonTypes.Interfaces; using Aaru.CommonTypes.Structs; using TapeFile = Aaru.CommonTypes.Structs.TapeFile; using TapePartition = Aaru.CommonTypes.Structs.TapePartition; @@ -22,9 +21,6 @@ public sealed partial class AaruFormat #region IWritableOpticalImage Members - /// - public ErrorNumber Open(IFilter imageFilter) => throw new NotImplementedException(); - /// public ErrorNumber ReadMediaTag(MediaTagType tag, out byte[] buffer) => throw new NotImplementedException(); diff --git a/Aaru.sln.DotSettings b/Aaru.sln.DotSettings index 136078c07..513cc9ee3 100644 --- a/Aaru.sln.DotSettings +++ b/Aaru.sln.DotSettings @@ -1,4 +1,7 @@ - + Null ExplicitlyExcluded @@ -340,109 +343,109 @@ WARNING WARNING SUGGESTION - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - ERROR - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - WARNING - ERROR - WARNING - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - HINT - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - ERROR - WARNING - WARNING - WARNING - HINT - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - SUGGESTION - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + SUGGESTION + SUGGESTION + SUGGESTION + SUGGESTION + ERROR + SUGGESTION + SUGGESTION + SUGGESTION + SUGGESTION + SUGGESTION + WARNING + ERROR + WARNING + SUGGESTION + SUGGESTION + SUGGESTION + SUGGESTION + HINT + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + ERROR + WARNING + WARNING + WARNING + HINT + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + SUGGESTION + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING ERROR ERROR ERROR @@ -488,57 +491,57 @@ ERROR ERROR ERROR - WARNING - WARNING - WARNING - WARNING - WARNING - DO_NOT_SHOW - WARNING - WARNING - WARNING - ERROR - ERROR - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - ERROR - WARNING - SUGGESTION - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - SUGGESTION - SUGGESTION - WARNING - WARNING - WARNING - SUGGESTION - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - SUGGESTION + WARNING + WARNING + WARNING + WARNING + WARNING + DO_NOT_SHOW + WARNING + WARNING + WARNING + ERROR + ERROR + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + ERROR + WARNING + SUGGESTION + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + SUGGESTION + SUGGESTION + WARNING + WARNING + WARNING + SUGGESTION + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + SUGGESTION RequiredForMultiline RequiredForMultiline RequiredForMultiline @@ -890,7 +893,7 @@ True True True - True + True True True True @@ -1316,6 +1319,7 @@ True True True + True True True True