904 Commits

Author SHA1 Message Date
Adam Hathcock
839df5f5d9 moved namespaces 2026-08-06 09:13:22 +01:00
Adam Hathcock
1ab599a21d Merge remote-tracking branch 'origin/master' into copilot/archiveinformation-show-archive-detail 2026-08-05 16:20:22 +01:00
Adam Hathcock
ea7d97fcee better zip streaming info 2026-08-05 16:20:08 +01:00
Adam Hathcock
f90ce7a511 Merge pull request #1408 from adamhathcock/release
Release to master
2026-08-05 16:18:15 +01:00
Adam Hathcock
c083c6efd8 fmt 2026-08-05 15:59:16 +01:00
Adam Hathcock
a25ef129a4 Fix sym link tests 2026-08-05 15:44:27 +01:00
Adam Hathcock
513b6bec45 fixes SharpCompress TAR extraction overwrites files outside the extraction root when a SymbolicLinkHandler enables symlink chaining 2026-08-05 15:44:27 +01:00
Adam Hathcock
87f5616d1f Detect v Inspect is added. Detect is used only basic info but does not buffer as much as it can. 2026-08-04 11:45:13 +01:00
Adam Hathcock
858f5040df Merge remote-tracking branch 'origin/master' into copilot/archiveinformation-show-archive-detail 2026-08-04 10:29:51 +01:00
Adam Hathcock
89d47e4bc4 Merge remote-tracking branch 'origin/master' 2026-08-04 09:30:51 +01:00
Adam Hathcock
575ef6003a Merge remote-tracking branch 'origin/release' 2026-08-04 09:30:36 +01:00
Adam Hathcock
a5e3f2d17d Merge remote-tracking branch 'origin/adam/large-file-tests' into adam/large-file-tests 2026-08-04 09:12:27 +01:00
Adam Hathcock
62d1b5dcc8 Provide a better way to manage async disposable streams 2026-08-04 09:11:26 +01:00
Adam Hathcock
c9a9c0d2ad Merge remote-tracking branch 'origin/adam/large-file-tests' into adam/large-file-tests 2026-08-03 16:38:50 +01:00
Adam Hathcock
4a71ec898b fixes found by gh and sol 2026-08-03 16:38:27 +01:00
Adam Hathcock
369ab91522 fix windows build 2026-08-03 16:01:58 +01:00
Adam Hathcock
c698124896 Fixes for parallel lzma usage 2026-08-03 15:49:01 +01:00
Adam Hathcock
e8ee2264a9 converted a lot of zip items to sync method generator 2026-08-03 15:18:44 +01:00
Adam Hathcock
67060f8bfd Merge pull request #1399 from julianxhokaxhiu/feat/lzma-modern
Add LZMA Parallelism and Fast Decoder for modern dotnet
2026-08-03 13:28:48 +01:00
Adam Hathcock
c4fa31d615 gzip using sync generator 2026-08-03 08:15:18 +01:00
Julian Xhokaxhiu
55db16ecb3 Improve LZMA decoder using 7zip logics for modern dotnet
- Add opt-in Parallel decoding
- Add a new ASM-like decoder
- Add Unit tests for Parallel decoding
2026-08-03 02:50:30 +02:00
Adam Hathcock
d391cf21e1 finalize check in 2026-08-01 13:26:48 +01:00
Adam Hathcock
b91289d82c add large file tests and GZip/Lzw factory fixes 2026-08-01 13:25:08 +01:00
Adam Hathcock
bc06a9df8b Some clean up 2026-08-01 12:43:44 +01:00
Adam Hathcock
82c44cb5a5 remove async dispose 2026-07-31 14:52:58 +01:00
Adam Hathcock
a8f6f18843 Fix SeekableSharpCompressStream.StopRecording() to rewind to recorded position
When SeekableSharpCompressStream.StopRecording() was called (e.g. after the tar
probe in GZipFactory.TryOpenReader), it cleared _recordedPosition without seeking
back to it. This left the underlying FileStream at the advanced position reached
during the probe, so the subsequent GZipReader would start reading from the
wrong offset, producing Key=null and 0 extracted bytes.

Fix: seek back to _recordedPosition before clearing it, matching the behavior of
the non-seekable SharpCompressStream.StopRecording() which rewinds _logicalPosition.

Also enhance the existing GZip_ReaderFactory_FlatGZip test to actually verify the
extracted content (not just MoveToNextEntry returns true), and add an async variant.

Closes #1391
2026-07-31 14:21:24 +01:00
copilot-swe-agent[bot]
a688c7c657 Fix BufferedSubStream ReadAsync cancellation fast-path 2026-07-29 07:55:48 +00:00
copilot-swe-agent[bot]
d301cb365f Add format-specific ArchiveInformation details 2026-07-28 16:45:31 +00:00
Adam Hathcock
c7c1397e1d Merge remote-tracking branch 'origin/master' into adam/sol-cleanup 2026-07-28 14:10:39 +01:00
Adam Hathcock
9e3a92ac10 Fix restore 2026-07-28 13:13:17 +01:00
Victor Irzak
9f74d58eae Update Zomp.SyncMethodGenerator to 2.0.42
Two releases since the generator was adopted here, both fixing things this
repository ran into.

2.0.41 emits the using directives of the source file into the generated one.
Documentation is copied across verbatim and a cref in it resolves against the
file it lands in, so crefs which relied on a using went unresolved and the
compiler reported CS1574 for each.

2.0.42 spaces a rewritten argument list the way it was written. The generated
extension calls here were coming out as

  IArchiveEntryExtensions.WriteTo(archiveEntry,                     streamToWriteTo,
          Constants.BufferSize,
          progress: progress)                ;

and now come out as

  IArchiveEntryExtensions.WriteTo(archiveEntry, streamToWriteTo,
          Constants.BufferSize,
          progress: progress);

No change to what is generated, only to how it is spaced and what its
documentation can refer to. Full test suite passes unchanged.
2026-07-28 07:20:06 -04:00
Adam Hathcock
cf2dfa0c30 redid the restore 2026-07-28 10:08:16 +01:00
Adam Hathcock
5ba71a0431 Updates recommended 2026-07-27 08:53:52 +01:00
Adam Hathcock
fe75f28ac9 DataDescriptor should always be non-seekable 2026-07-25 17:08:50 +01:00
Adam Hathcock
ba221b27af Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-24 09:34:18 +01:00
copilot-swe-agent[bot]
3e61a72248 test: broaden transformed stream reader coverage 2026-07-24 07:35:07 +00:00
copilot-swe-agent[bot]
3375aaa90c fix: preserve transformed streams in reader detection 2026-07-24 07:18:02 +00:00
Adam Hathcock
bb7be935a3 Merge pull request #1372 from adamhathcock/adam/pr-1369
Fixes ZipWriter to be fully forward only
2026-07-23 10:23:12 +01:00
Adam Hathcock
152a66f802 add more tests 2026-07-23 10:17:28 +01:00
Adam Hathcock
e3b7a560ba Fix legacy build issue 2026-07-23 10:04:06 +01:00
copilot-swe-agent[bot]
31d12c78d8 Apply remaining changes 2026-07-23 09:00:44 +00:00
Adam Hathcock
02f1a1616a Fixes ZipWriter to be fully forward only 2026-07-23 09:28:04 +01:00
copilot-swe-agent[bot]
b86a871e22 Fix GZipFactory flat gzip probe disposal regression 2026-07-23 08:02:01 +00:00
Adam Hathcock
073d99153b Merge pull request #1360 from adamhathcock/adam/remove-compressed-tar-archive
Remove compressed tar archive
2026-07-12 11:55:04 +01:00
Adam Hathcock
581a6dc945 Further advice from Sol 2026-07-12 11:35:46 +01:00
Adam Hathcock
fda3d186c5 more tests and a removal of a test 2026-07-12 11:09:49 +01:00
Pat Hartl
c59aa78928 Zip: fix Zip64 streaming reader corrupting entry size/CRC and failing on non-seekable streams
The Zip64 branch of the streaming header reader assumed a data descriptor always follows a >=4GB entry. When the entry instead has back-patched sizes (no descriptor), the following header was parsed as descriptor fields, overwriting the entry's correct size/CRC with central-directory 0xFFFFFFFF sentinels and, on non-seekable async streams, leaving the reader misaligned so the next entry threw.

Now it detects a header signature after the entry data and leaves the already-correct metadata untouched, parsing that header normally. The fix has been applied to both the sync and async readers.
2026-06-29 21:35:55 -05:00
Adam Hathcock
b8a7cc18d9 intermediate commit 2026-06-24 16:27:57 +01:00
Adam Hathcock
760f7685f8 First pass of removing Compressed Tar Archive support. Compressed Tars should be done with TarReader only 2026-06-23 15:42:04 +01:00
Fidel
de8ee30b17 BZip2: add opt-in tolerateTruncatedStream to decode a footerless/partial stream
Add a `tolerateTruncatedStream` option (default false) to `BZip2Stream.Create`/`CreateAsync`,
threaded through to `CBZip2InputStream`. When enabled, the decoder accepts a stream that has no
trailing footer - e.g. a truncated stream, or a sub-range of blocks extracted for random access:

- An end-of-input reached while reading a block/footer header (a true block boundary, tracked by
  `expectingBlockStart`) is treated as a normal end of stream instead of throwing
  `ArchiveOperationException("BZip2 compressed file ends unexpectedly")`. EOF in the middle of a
  block, the block CRC, or the Huffman tables still throws.
- The whole-stream combined CRC in the footer is not verified, since a partial decode's running
  combined CRC won't match the stored whole-stream value. Per-block CRCs are still enforced.

Default behaviour is unchanged (the flag defaults to false) and the change is applied symmetrically
to the sync and async read paths.

Tests (BZip2StreamTests):
- a footerless header-only stream decodes to empty with the flag and throws without it;
- a real block followed by end-of-input at the next block boundary decodes with the flag and throws
  without it;
- a corrupted whole-stream combined CRC is tolerated with the flag and fatal without it;
- a complete, well-formed stream still round-trips with the flag set.
All existing BZip2 tests continue to pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:08:02 +10:00