aboutsummaryrefslogtreecommitdiff
path: root/archival/libarchive/open_transformer.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2026-03-24 12:15:33 +0000
committerRon Yorston <rmy@pobox.com>2026-03-24 12:15:33 +0000
commitaaae1865727bcd53da581340456de34dfb182d5c (patch)
treeb0be881225fad8bcb14977854b248539b7d81ea2 /archival/libarchive/open_transformer.c
parent052807cc3330b3c5c1fb60b93ad0d2039d6142df (diff)
downloadbusybox-w32-zstd.tar.gz
busybox-w32-zstd.tar.bz2
busybox-w32-zstd.zip
archival: support zstd in rpm and dpkgzstd
Diffstat (limited to 'archival/libarchive/open_transformer.c')
-rw-r--r--archival/libarchive/open_transformer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/archival/libarchive/open_transformer.c b/archival/libarchive/open_transformer.c
index 9f41c7b4f..375e7b249 100644
--- a/archival/libarchive/open_transformer.c
+++ b/archival/libarchive/open_transformer.c
@@ -211,11 +211,14 @@ static transformer_state_t *setup_transformer_on_fd(int fd, int die_if_not_compr
211 } 211 }
212 212
213 if (ENABLE_FEATURE_SEAMLESS_ZSTD && xstate->magic.b16[0] == ZSTD_MAGIC1) { 213 if (ENABLE_FEATURE_SEAMLESS_ZSTD && xstate->magic.b16[0] == ZSTD_MAGIC1) {
214 xstate->signature_skipped = 4;
215 xread(fd, &xstate->magic.b16[1], 2); 214 xread(fd, &xstate->magic.b16[1], 2);
216 if (xstate->magic.b16[1] == ZSTD_MAGIC2) { 215 if (xstate->magic.b16[1] == ZSTD_MAGIC2) {
217 xstate->xformer = unpack_zstd_stream; 216 xstate->xformer = unpack_zstd_stream;
218 USE_FOR_NOMMU(xstate->xformer_prog = "unzstd";) 217 USE_FOR_NOMMU(xstate->xformer_prog = "unzstd";)
218 // FIXME We execute an external decompressor even on MMU.
219 // Force a seek back to the signature.
220 xstate->signature_skipped = 0;
221 xlseek(xstate->src_fd, -4, SEEK_CUR);
219 goto found_magic; 222 goto found_magic;
220 } 223 }
221 } 224 }