adamhathcock / sharpcompress

SharpCompress is a fully managed C# library to deal with many compression types and formats.
MIT License
2.29k stars 482 forks source link

ArchiveFactory.IsArchive does not rewind the input stream's position #870

Closed Morilli closed 1 month ago

Morilli commented 2 months ago

Calling ArchiveFactory.IsArchive with a stream as input parameter will potentially seek the given stream. That is necessary of course, but after returning, the stream should be seeked back to its original position.

After all, you might want to check whether a given input is a valid archive that can be handled by SharpCompress before continuing to construct an archive from that stream (or do other things with that stream).

It looks like ArchiveFactory.FindFactory already has that logic but is only exposed via ArchiveFactory.Open, which in itself seeks the input stream by opening the archive immediately (maybe that should also be changed? not sure).