diff --git a/Aaru.Compression/Aaru.Compression.csproj b/Aaru.Compression/Aaru.Compression.csproj index c51b1d9a0..531b9694d 100644 --- a/Aaru.Compression/Aaru.Compression.csproj +++ b/Aaru.Compression/Aaru.Compression.csproj @@ -79,7 +79,6 @@ - diff --git a/Aaru.Compression/BZip2.cs b/Aaru.Compression/BZip2.cs index 5469f948e..107504d3d 100644 --- a/Aaru.Compression/BZip2.cs +++ b/Aaru.Compression/BZip2.cs @@ -28,7 +28,8 @@ using System.IO; using System.Runtime.InteropServices; -using Ionic.BZip2; +using SharpCompress.Compressors; +using SharpCompress.Compressors.BZip2; namespace Aaru.Compression; @@ -62,7 +63,7 @@ public partial class BZip2 } using var cmpMs = new MemoryStream(source); - using var decStream = new BZip2InputStream(cmpMs, false); + using var decStream = BZip2Stream.Create(cmpMs, CompressionMode.Decompress, false); return decStream.Read(destination, 0, destination.Length); } @@ -84,7 +85,7 @@ public partial class BZip2 } using var cmpMs = new MemoryStream(source); - using var encStream = new BZip2OutputStream(new MemoryStream(destination), blockSize100K); + using var encStream = BZip2Stream.Create(new MemoryStream(destination), CompressionMode.Compress, false); encStream.Write(source, 0, source.Length); return source.Length; diff --git a/Aaru.Filters/Aaru.Filters.csproj b/Aaru.Filters/Aaru.Filters.csproj index 80f31217b..4a2424d78 100644 --- a/Aaru.Filters/Aaru.Filters.csproj +++ b/Aaru.Filters/Aaru.Filters.csproj @@ -45,7 +45,6 @@ - diff --git a/Aaru.Filters/BZip2.cs b/Aaru.Filters/BZip2.cs index eb97faba2..9c1141515 100644 --- a/Aaru.Filters/BZip2.cs +++ b/Aaru.Filters/BZip2.cs @@ -36,7 +36,8 @@ using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; using Aaru.Helpers; using Aaru.Helpers.IO; -using Ionic.BZip2; +using SharpCompress.Compressors; +using SharpCompress.Compressors.BZip2; namespace Aaru.Filters; @@ -142,11 +143,14 @@ public class BZip2 : IFilter /// public ErrorNumber Open(byte[] buffer) { - _dataStream = new MemoryStream(buffer); - BasePath = null; - CreationTime = DateTime.UtcNow; - LastWriteTime = CreationTime; - _innerStream = new ForcedSeekStream(_dataStream, false); + _dataStream = new MemoryStream(buffer); + BasePath = null; + CreationTime = DateTime.UtcNow; + LastWriteTime = CreationTime; + + _innerStream = + new ForcedSeekStream(BZip2Stream.Create(_dataStream, CompressionMode.Decompress, false)); + DataForkLength = _innerStream.Length; return ErrorNumber.NoError; @@ -155,11 +159,14 @@ public class BZip2 : IFilter /// public ErrorNumber Open(Stream stream) { - _dataStream = stream; - BasePath = null; - CreationTime = DateTime.UtcNow; - LastWriteTime = CreationTime; - _innerStream = new ForcedSeekStream(_dataStream, false); + _dataStream = stream; + BasePath = null; + CreationTime = DateTime.UtcNow; + LastWriteTime = CreationTime; + + _innerStream = + new ForcedSeekStream(BZip2Stream.Create(_dataStream, CompressionMode.Decompress, false)); + DataForkLength = _innerStream.Length; return ErrorNumber.NoError; @@ -172,9 +179,12 @@ public class BZip2 : IFilter BasePath = System.IO.Path.GetFullPath(path); var fi = new FileInfo(path); - CreationTime = fi.CreationTimeUtc; - LastWriteTime = fi.LastWriteTimeUtc; - _innerStream = new ForcedSeekStream(_dataStream, false); + CreationTime = fi.CreationTimeUtc; + LastWriteTime = fi.LastWriteTimeUtc; + + _innerStream = + new ForcedSeekStream(BZip2Stream.Create(_dataStream, CompressionMode.Decompress, false)); + DataForkLength = _innerStream.Length; return ErrorNumber.NoError; diff --git a/Aaru.Helpers/IO/ForcedSeekStream.cs b/Aaru.Helpers/IO/ForcedSeekStream.cs index 686d58b5b..79eed470e 100644 --- a/Aaru.Helpers/IO/ForcedSeekStream.cs +++ b/Aaru.Helpers/IO/ForcedSeekStream.cs @@ -48,6 +48,17 @@ public sealed class ForcedSeekStream : Stream where T : Stream readonly T _baseStream; long _streamLength; + /// Initializes a new instance of the class. + /// A pre-created stream instance. + /// + public ForcedSeekStream(T stream) + { + _baseStream = stream; + _backFile = Path.GetTempFileName(); + _backStream = new FileStream(_backFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None); + CalculateLength(); + } + /// Initializes a new instance of the class. /// The real (uncompressed) length of the stream. /// Parameters that are used to create the base stream. diff --git a/Aaru.Images/Aaru.Images.csproj b/Aaru.Images/Aaru.Images.csproj index 12b18caa4..e72a3589d 100644 --- a/Aaru.Images/Aaru.Images.csproj +++ b/Aaru.Images/Aaru.Images.csproj @@ -34,7 +34,6 @@ - diff --git a/Directory.Packages.props b/Directory.Packages.props index 5a01f0f76..a73961fa3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,82 +1,81 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file