mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-07-08 18:16:30 +00:00
human fix
This commit is contained in:
@@ -92,13 +92,7 @@ public static partial class ArchiveFactory
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
var streamsArray = streams.RequireReadable();
|
||||
streamsArray.RequireSeekable();
|
||||
if (streamsArray.Count == 0)
|
||||
{
|
||||
throw new ArchiveOperationException("No streams");
|
||||
}
|
||||
|
||||
var streamsArray = streams.RequireReadable().RequireSeekable().ToList();
|
||||
var firstStream = streamsArray[0];
|
||||
if (streamsArray.Count == 1)
|
||||
{
|
||||
|
||||
@@ -73,8 +73,7 @@ public static partial class ArchiveFactory
|
||||
|
||||
public static IArchive OpenArchive(IReadOnlyList<Stream> streams, ReaderOptions? options = null)
|
||||
{
|
||||
var streamsArray = streams.RequireReadable();
|
||||
streamsArray.RequireSeekable();
|
||||
var streamsArray = streams.RequireReadable().RequireSeekable().ToList();
|
||||
if (streamsArray.Count == 0)
|
||||
{
|
||||
throw new ArchiveOperationException("No streams");
|
||||
|
||||
@@ -76,8 +76,7 @@ public partial class GZipArchive
|
||||
ReaderOptions? readerOptions = null
|
||||
)
|
||||
{
|
||||
var strms = streams.RequireReadable();
|
||||
strms.RequireSeekable();
|
||||
var strms = streams.RequireReadable().RequireSeekable().ToList();
|
||||
return new GZipArchive(
|
||||
new SourceStream(
|
||||
strms[0],
|
||||
|
||||
@@ -87,8 +87,7 @@ public partial class RarArchive
|
||||
ReaderOptions? readerOptions = null
|
||||
)
|
||||
{
|
||||
var strms = streams.RequireReadable();
|
||||
strms.RequireSeekable();
|
||||
var strms = streams.RequireReadable().RequireSeekable().ToList();
|
||||
return new RarArchive(
|
||||
new SourceStream(
|
||||
strms[0],
|
||||
|
||||
@@ -71,8 +71,7 @@ public partial class SevenZipArchive
|
||||
ReaderOptions? readerOptions = null
|
||||
)
|
||||
{
|
||||
var strms = streams.RequireReadable();
|
||||
strms.RequireSeekable();
|
||||
var strms = streams.RequireReadable().RequireSeekable().ToList();
|
||||
return new SevenZipArchive(
|
||||
new SourceStream(
|
||||
strms[0],
|
||||
|
||||
@@ -66,8 +66,7 @@ public partial class TarArchive
|
||||
ReaderOptions? readerOptions = null
|
||||
)
|
||||
{
|
||||
var strms = streams.RequireReadable();
|
||||
strms.RequireSeekable();
|
||||
var strms = streams.RequireReadable().RequireSeekable().ToList();
|
||||
var sourceStream = new SourceStream(
|
||||
strms[0],
|
||||
i => i < strms.Count ? strms[i] : null,
|
||||
@@ -155,8 +154,7 @@ public partial class TarArchive
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
var strms = streams.RequireReadable();
|
||||
strms.RequireSeekable();
|
||||
var strms = streams.RequireReadable().RequireSeekable().ToList();
|
||||
var sourceStream = new SourceStream(
|
||||
strms[0],
|
||||
i => i < strms.Count ? strms[i] : null,
|
||||
|
||||
@@ -67,8 +67,7 @@ public partial class ZipArchive
|
||||
ReaderOptions? readerOptions = null
|
||||
)
|
||||
{
|
||||
var strms = streams.RequireReadable();
|
||||
strms.RequireSeekable();
|
||||
var strms = streams.RequireReadable().RequireSeekable().ToList();
|
||||
return new ZipArchive(
|
||||
new SourceStream(
|
||||
strms[0],
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace SharpCompress;
|
||||
|
||||
internal static class StreamValidationExtensions
|
||||
{
|
||||
internal static Stream RequireReadable(this Stream stream)
|
||||
internal static void RequireReadable(this Stream stream)
|
||||
{
|
||||
stream.NotNull(nameof(stream));
|
||||
|
||||
@@ -15,11 +14,9 @@ internal static class StreamValidationExtensions
|
||||
{
|
||||
throw new ArgumentException("Stream must be readable", nameof(stream));
|
||||
}
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
internal static Stream RequireSeekable(this Stream stream)
|
||||
internal static void RequireSeekable(this Stream stream)
|
||||
{
|
||||
stream.NotNull(nameof(stream));
|
||||
|
||||
@@ -27,11 +24,9 @@ internal static class StreamValidationExtensions
|
||||
{
|
||||
throw new ArgumentException("Stream must be seekable", nameof(stream));
|
||||
}
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
internal static Stream RequireWritable(this Stream stream)
|
||||
internal static void RequireWritable(this Stream stream)
|
||||
{
|
||||
stream.NotNull(nameof(stream));
|
||||
|
||||
@@ -39,32 +34,23 @@ internal static class StreamValidationExtensions
|
||||
{
|
||||
throw new ArgumentException("Stream must be writable", nameof(stream));
|
||||
}
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
internal static IReadOnlyList<Stream> RequireSeekable(this IReadOnlyList<Stream> streams)
|
||||
internal static IEnumerable<Stream> RequireSeekable(this IEnumerable<Stream> streams)
|
||||
{
|
||||
streams.NotNull(nameof(streams));
|
||||
|
||||
foreach (var stream in streams)
|
||||
{
|
||||
stream.RequireSeekable();
|
||||
yield return stream;
|
||||
}
|
||||
|
||||
return streams;
|
||||
}
|
||||
|
||||
internal static IReadOnlyList<Stream> RequireReadable(this IEnumerable<Stream> streams)
|
||||
internal static IEnumerable<Stream> RequireReadable(this IEnumerable<Stream> streams)
|
||||
{
|
||||
streams.NotNull(nameof(streams));
|
||||
|
||||
var streamArray = streams as IReadOnlyList<Stream> ?? streams.ToArray();
|
||||
foreach (var stream in streamArray)
|
||||
foreach (var stream in streams)
|
||||
{
|
||||
stream.RequireReadable();
|
||||
yield return stream;
|
||||
}
|
||||
|
||||
return streamArray;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,9 +268,9 @@
|
||||
"net10.0": {
|
||||
"Microsoft.NET.ILLink.Tasks": {
|
||||
"type": "Direct",
|
||||
"requested": "[10.0.0, )",
|
||||
"resolved": "10.0.0",
|
||||
"contentHash": "kICGrGYEzCNI3wPzfEXcwNHgTvlvVn9yJDhSdRK+oZQy4jvYH529u7O0xf5ocQKzOMjfS07+3z9PKRIjrFMJDA=="
|
||||
"requested": "[10.0.6, )",
|
||||
"resolved": "10.0.6",
|
||||
"contentHash": "QKuvS0LWX4fjFqeDkyM7Kqt8P3wYTiPD4nwU+9y59n0sCiG714fxDgbbN82vDnzq89AF/PiHl92TP2C4aFDUQA=="
|
||||
},
|
||||
"Microsoft.NETFramework.ReferenceAssemblies": {
|
||||
"type": "Direct",
|
||||
@@ -400,9 +400,9 @@
|
||||
"net8.0": {
|
||||
"Microsoft.NET.ILLink.Tasks": {
|
||||
"type": "Direct",
|
||||
"requested": "[8.0.22, )",
|
||||
"resolved": "8.0.22",
|
||||
"contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ=="
|
||||
"requested": "[8.0.26, )",
|
||||
"resolved": "8.0.26",
|
||||
"contentHash": "o7/yVssM2r9Wyln2s9edBd5ANZXqdSdBI+g7JqXkyJmXrhs2WsJp25K5yPnYrTgdKBCjKB8bg+O2oew4sgzFaA=="
|
||||
},
|
||||
"Microsoft.NETFramework.ReferenceAssemblies": {
|
||||
"type": "Direct",
|
||||
|
||||
@@ -34,6 +34,8 @@ public class ReaderFactoryTests
|
||||
using var unreadable = new TestStream(new MemoryStream(), false, true, true);
|
||||
using var readable = new MemoryStream();
|
||||
|
||||
Assert.Throws<ArgumentException>(() => RarReader.OpenReader([unreadable, readable]));
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
RarReader.OpenReader([unreadable, readable]).MoveToNextEntry()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user