diff options
author | Brad King <brad.king@kitware.com> | 2022-11-17 13:14:52 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-11-17 13:15:04 (GMT) |
commit | 14cf3b1039c6e7839acc688082a54f9bb681465d (patch) | |
tree | 2d8312ca75f8a15bd4bd9511c44c0d04ad0f227e /Source | |
parent | d3b361c43b09f95263e5077eb375e0fa4da14bcf (diff) | |
parent | ed519b1cba24cddb8669a5d29c45ee2e1aa372c9 (diff) | |
download | CMake-14cf3b1039c6e7839acc688082a54f9bb681465d.zip CMake-14cf3b1039c6e7839acc688082a54f9bb681465d.tar.gz CMake-14cf3b1039c6e7839acc688082a54f9bb681465d.tar.bz2 |
Merge topic 'file-archive-zstd-compression-level'
ed519b1cba file(ARCHIVE_CREATE): Allow higher compression level for Zstd
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7924
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmFileCommand.cxx | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index b1d238c..85f528d 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -3404,20 +3404,29 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, } int compressionLevel = 0; + int minCompressionLevel = 0; + int maxCompressionLevel = 9; + if (compress == cmSystemTools::TarCompressZstd) { + maxCompressionLevel = 19; + } + if (!parsedArgs.CompressionLevel.empty()) { if (parsedArgs.CompressionLevel.size() != 1 && !std::isdigit(parsedArgs.CompressionLevel[0])) { - status.SetError(cmStrCat("compression level ", - parsedArgs.CompressionLevel, - " should be in range 0 to 9")); + status.SetError( + cmStrCat("compression level ", parsedArgs.CompressionLevel, " for ", + parsedArgs.Compression, " should be in range ", + minCompressionLevel, " to ", maxCompressionLevel)); cmSystemTools::SetFatalErrorOccurred(); return false; } compressionLevel = std::stoi(parsedArgs.CompressionLevel); - if (compressionLevel < 0 || compressionLevel > 9) { - status.SetError(cmStrCat("compression level ", - parsedArgs.CompressionLevel, - " should be in range 0 to 9")); + if (compressionLevel < minCompressionLevel || + compressionLevel > maxCompressionLevel) { + status.SetError( + cmStrCat("compression level ", parsedArgs.CompressionLevel, " for ", + parsedArgs.Compression, " should be in range ", + minCompressionLevel, " to ", maxCompressionLevel)); cmSystemTools::SetFatalErrorOccurred(); return false; } |