mirror of
				https://github.com/facebook/zstd.git
				synced 2025-10-30 10:25:39 +03:00 
			
		
		
		
	- Modify ZSTD CLI to only set contentSizeFlag if it _knows_ the size - Change pzstd to stop setting contentSizeFlag without accurate pledgedSrcSize
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2016-present, Facebook, Inc.
 | |
|  * All rights reserved.
 | |
|  *
 | |
|  * This source code is licensed under the BSD-style license found in the
 | |
|  * LICENSE file in the root directory of this source tree. An additional grant
 | |
|  * of patent rights can be found in the PATENTS file in the same directory.
 | |
|  */
 | |
| #pragma once
 | |
| 
 | |
| #define ZSTD_STATIC_LINKING_ONLY
 | |
| #include "zstd.h"
 | |
| #undef ZSTD_STATIC_LINKING_ONLY
 | |
| 
 | |
| #include <cstdint>
 | |
| #include <string>
 | |
| #include <vector>
 | |
| 
 | |
| namespace pzstd {
 | |
| 
 | |
| struct Options {
 | |
|   enum class WriteMode { Regular, Auto, Sparse };
 | |
| 
 | |
|   unsigned numThreads;
 | |
|   unsigned maxWindowLog;
 | |
|   unsigned compressionLevel;
 | |
|   bool decompress;
 | |
|   std::vector<std::string> inputFiles;
 | |
|   std::string outputFile;
 | |
|   bool overwrite;
 | |
|   bool keepSource;
 | |
|   WriteMode writeMode;
 | |
|   bool checksum;
 | |
|   int verbosity;
 | |
| 
 | |
|   enum class Status {
 | |
|     Success, // Successfully parsed options
 | |
|     Failure, // Failure to parse options
 | |
|     Message  // Options specified to print a message (e.g. "-h")
 | |
|   };
 | |
| 
 | |
|   Options();
 | |
|   Options(unsigned numThreads, unsigned maxWindowLog, unsigned compressionLevel,
 | |
|           bool decompress, std::vector<std::string> inputFiles,
 | |
|           std::string outputFile, bool overwrite, bool keepSource,
 | |
|           WriteMode writeMode, bool checksum, int verbosity)
 | |
|       : numThreads(numThreads), maxWindowLog(maxWindowLog),
 | |
|         compressionLevel(compressionLevel), decompress(decompress),
 | |
|         inputFiles(std::move(inputFiles)), outputFile(std::move(outputFile)),
 | |
|         overwrite(overwrite), keepSource(keepSource), writeMode(writeMode),
 | |
|         checksum(checksum), verbosity(verbosity) {}
 | |
| 
 | |
|   Status parse(int argc, const char **argv);
 | |
| 
 | |
|   ZSTD_parameters determineParameters() const {
 | |
|     ZSTD_parameters params = ZSTD_getParams(compressionLevel, 0, 0);
 | |
|     params.fParams.contentSizeFlag = 0;
 | |
|     params.fParams.checksumFlag = checksum;
 | |
|     if (maxWindowLog != 0 && params.cParams.windowLog > maxWindowLog) {
 | |
|       params.cParams.windowLog = maxWindowLog;
 | |
|       params.cParams = ZSTD_adjustCParams(params.cParams, 0, 0);
 | |
|     }
 | |
|     return params;
 | |
|   }
 | |
| 
 | |
|   std::string getOutputFile(const std::string &inputFile) const;
 | |
| };
 | |
| }
 |