Commit Graph

877 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
a688c7c657 Fix BufferedSubStream ReadAsync cancellation fast-path 2026-07-29 07:55:48 +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
Adam Hathcock
49d00034e4 update tests 2026-06-19 11:21:39 +01:00
Adam Hathcock
727d2a79f9 updates from review 2026-06-18 17:06:16 +01:00
Adam Hathcock
e8ee054757 rest of the formats 2026-06-15 17:02:31 +01:00
Adam Hathcock
808524d917 BZip2, GZip and XZ done 2026-06-15 09:59:48 +01:00
Adam Hathcock
e9e05520d6 7Zip and Rar 2026-06-15 09:29:50 +01:00
Adam Hathcock
2866bfbd54 First pass with zip 2026-06-15 09:17:05 +01:00
Adam Hathcock
78a2218982 Handle lzma end marker correctly 2026-06-13 15:09:13 +01:00
Adam Hathcock
2d041e5c76 Fixed XZ block CRC64 computation and added notes on XZ format specifics 2026-06-13 14:31:36 +01:00
Adam Hathcock
160ba0938a review fixes 2026-06-13 10:00:39 +01:00
Adam Hathcock
7814013995 Merge remote-tracking branch 'origin/master' into adam/xz-crc-check 2026-06-13 09:40:39 +01:00
Adam Hathcock
4e3dcabbd0 Add basic crc checking for xz 2026-06-13 09:24:04 +01:00
copilot-swe-agent[bot]
323831cfa7 chore: update NuGet lock files to match CI SDK versions (ILLink.Tasks 8.0.27, 10.0.8) 2026-06-12 14:14:22 +00:00
Adam Hathcock
61ae3f21c7 fix package lock 2026-06-12 15:01:10 +01:00
Adam Hathcock
21b9c33c95 Fix tests 2026-06-12 14:51:56 +01:00
Adam Hathcock
de6e2bfee2 Add WriterOptions.BufferSize property 2026-06-12 14:41:05 +01:00
Adam Hathcock
3a73cfe925 Add instance based extraction size instead of just static 2026-06-11 17:24:42 +01:00
Adam Hathcock
4c6f773d2b more allocation reductions 2026-06-02 13:15:16 +01:00
Adam Hathcock
5bfb67e177 Update deps 2026-06-02 09:13:00 +01:00
copilot-swe-agent[bot]
4d89d856b1 Regenerate AotSmoke packages.lock.json with net10.0/linux-x64 section 2026-06-01 13:27:30 +00:00
Adam Hathcock
c83ab22098 Merge remote-tracking branch 'origin/adam/lzma-allocations' into adam/lzma-allocations 2026-06-01 13:40:24 +01:00
copilot-swe-agent[bot]
4ed093a492 Finalize review comment fix 2026-06-01 12:37:31 +00:00
Adam Hathcock
34504f5124 Merge remote-tracking branch 'origin/master' into adam/lzma-allocations
# Conflicts:
#	SharpCompress.sln
2026-06-01 13:22:20 +01:00
copilot-swe-agent[bot]
017d545bc3 Optimize LZMA literal encoder buffer reuse 2026-06-01 10:56:24 +00:00
Adam Hathcock
ca32d49957 Merge remote-tracking branch 'origin/master' into copilot/fix-tararchive-missing-entries 2026-05-29 15:20:22 +01:00
Adam Hathcock
7a6a8d53f9 Fix merge 2026-05-29 15:11:39 +01:00
Adam Hathcock
938995ea43 Merge remote-tracking branch 'origin/master' into copilot/fix-tararchive-missing-entries
# Conflicts:
#	tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs
2026-05-29 14:43:13 +01:00
copilot-swe-agent[bot]
ee64868919 Add tar reader regression tests 2026-05-29 11:58:38 +00:00