From eb168a0afc062f49b3d2180db69ce380c5085509 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 25 Mar 2025 14:23:14 -0700 Subject: [PATCH] add --patch-apply command as an equivalent for `-d --patch-from`. Requested by @sergeevabc in #2173. --- programs/zstdcli.c | 4 +++- tests/playTests.sh | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/programs/zstdcli.c b/programs/zstdcli.c index 4fed04e13..b9f961c16 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -230,7 +230,8 @@ static void usageAdvanced(const char* programName) #endif DISPLAYOUT(" --adapt Dynamically adapt compression level to I/O conditions.\n"); DISPLAYOUT(" --long[=#] Enable long distance matching with window log #. [Default: %u]\n", g_defaultMaxWindowLog); - DISPLAYOUT(" --patch-from=REF Use REF as the reference point for Zstandard's diff engine. \n\n"); + DISPLAYOUT(" --patch-from=REF Use REF as the reference point for Zstandard's diff engine. \n"); + DISPLAYOUT(" --patch-apply Equivalent for `-d --patch-from` \n\n"); # ifdef ZSTD_MULTITHREAD DISPLAYOUT(" -T# Spawn # compression threads. [Default: 1; pass 0 for core count.]\n"); DISPLAYOUT(" --single-thread Share a single thread for I/O and compression (slightly different than `-T1`).\n"); @@ -1124,6 +1125,7 @@ int main(int argCount, const char* argv[]) if (longCommandWArg(&argument, "--trace")) { char const* traceFile; NEXT_FIELD(traceFile); TRACE_enable(traceFile); continue; } #endif if (longCommandWArg(&argument, "--patch-from")) { NEXT_FIELD(patchFromDictFileName); ultra = 1; continue; } + if (longCommandWArg(&argument, "--patch-apply")) { operation=zom_decompress; NEXT_FIELD(patchFromDictFileName); memLimit= 1U << ZSTD_WINDOWLOG_MAX; continue; } if (longCommandWArg(&argument, "--long")) { unsigned ldmWindowLog = 0; ldmFlag = 1; diff --git a/tests/playTests.sh b/tests/playTests.sh index 15f6e7761..486b395eb 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -1777,11 +1777,15 @@ datagen -g1000 -P10 > tmp_patch zstd --patch-from=tmp_dict tmp_patch -o tmp_patch_diff zstd -d --patch-from=tmp_dict tmp_patch_diff -o tmp_patch_recon $DIFF -s tmp_patch_recon tmp_patch +zstd -f --patch-apply=tmp_dict tmp_patch_diff -o tmp_patch_recon +$DIFF -s tmp_patch_recon tmp_patch println "\n===> alternate syntax: patch-from origin" zstd -f --patch-from tmp_dict tmp_patch -o tmp_patch_diff zstd -df --patch-from tmp_dict tmp_patch_diff -o tmp_patch_recon $DIFF -s tmp_patch_recon tmp_patch +zstd -f --patch-apply tmp_dict tmp_patch_diff -o tmp_patch_recon +$DIFF -s tmp_patch_recon tmp_patch rm -rf tmp_* println "\n===> patch-from recursive tests" -- 2.47.2