diff options
| author | Xin LI <delphij@FreeBSD.org> | 2026-05-07 04:29:03 +0000 |
|---|---|---|
| committer | Colin Percival <cperciva@FreeBSD.org> | 2026-05-07 17:24:49 +0000 |
| commit | 1aa2b46a07075ea79d22e91a1325b88de4efd27e (patch) | |
| tree | d615e182aa78070f96b8d3a71a3f78f851565a55 /sys/contrib/zstd/examples/multiple_simple_compression.c | |
| parent | ed0ef0322eb64d31dab03b6c975c8f9ad7c8c7ab (diff) | |
MFV: zstd 1.5.7.
Approved by: re (cperciva)
MFC after: 2 weeks
Relnotes: yes
(cherry picked from commit c0d9a07101a1e72769ee0619a583f63a078fb391)
(cherry picked from commit 7c9418613a31571e4eceda55a417f7183d26acb5)
(cherry picked from commit 111a42d7d78a88ba6ff7b5d61b0867faccc00276)
(cherry picked from commit ff426ceef657d7c478471e631349c5d1a8b96453)
Diffstat (limited to 'sys/contrib/zstd/examples/multiple_simple_compression.c')
| -rw-r--r-- | sys/contrib/zstd/examples/multiple_simple_compression.c | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/sys/contrib/zstd/examples/multiple_simple_compression.c b/sys/contrib/zstd/examples/multiple_simple_compression.c deleted file mode 100644 index 5d2a28fcdca9..000000000000 --- a/sys/contrib/zstd/examples/multiple_simple_compression.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) Yann Collet, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under both the BSD-style license (found in the - * LICENSE file in the root directory of this source tree) and the GPLv2 (found - * in the COPYING file in the root directory of this source tree). - * You may select, at your option, one of the above-listed licenses. - */ - -#include <stdio.h> // printf -#include <stdlib.h> // free -#include <string.h> // memcpy, strlen -#include <zstd.h> // presumes zstd library is installed -#include "common.h" // Helper functions, CHECK(), and CHECK_ZSTD() - -typedef struct { - void* fBuffer; - void* cBuffer; - size_t fBufferSize; - size_t cBufferSize; - ZSTD_CCtx* cctx; -} resources; - -/* - * allocate memory for buffers big enough to compress all files - * as well as memory for output file name (ofn) - */ -static resources createResources_orDie(int argc, const char** argv, char **ofn, size_t* ofnBufferLen) -{ - size_t maxFilenameLength=0; - size_t maxFileSize = 0; - - int argNb; - for (argNb = 1; argNb < argc; argNb++) { - const char* const filename = argv[argNb]; - size_t const filenameLength = strlen(filename); - size_t const fileSize = fsize_orDie(filename); - - if (filenameLength > maxFilenameLength) maxFilenameLength = filenameLength; - if (fileSize > maxFileSize) maxFileSize = fileSize; - } - - resources ress; - ress.fBufferSize = maxFileSize; - ress.cBufferSize = ZSTD_compressBound(maxFileSize); - - *ofnBufferLen = maxFilenameLength + 5; - *ofn = (char*)malloc_orDie(*ofnBufferLen); - ress.fBuffer = malloc_orDie(ress.fBufferSize); - ress.cBuffer = malloc_orDie(ress.cBufferSize); - ress.cctx = ZSTD_createCCtx(); - CHECK(ress.cctx != NULL, "ZSTD_createCCtx() failed!"); - return ress; -} - -static void freeResources(resources ress, char *outFilename) -{ - free(ress.fBuffer); - free(ress.cBuffer); - ZSTD_freeCCtx(ress.cctx); /* never fails */ - free(outFilename); -} - -/* compress with pre-allocated context (ZSTD_CCtx) and input/output buffers*/ -static void compressFile_orDie(resources ress, const char* fname, const char* oname) -{ - size_t fSize = loadFile_orDie(fname, ress.fBuffer, ress.fBufferSize); - - /* Compress using the context. - * If you need more control over parameters, use the advanced API: - * ZSTD_CCtx_setParameter(), and ZSTD_compress2(). - */ - size_t const cSize = ZSTD_compressCCtx(ress.cctx, ress.cBuffer, ress.cBufferSize, ress.fBuffer, fSize, 1); - CHECK_ZSTD(cSize); - - saveFile_orDie(oname, ress.cBuffer, cSize); - - /* success */ - printf("%25s : %6u -> %7u - %s \n", fname, (unsigned)fSize, (unsigned)cSize, oname); -} - -int main(int argc, const char** argv) -{ - const char* const exeName = argv[0]; - - if (argc<2) { - printf("wrong arguments\n"); - printf("usage:\n"); - printf("%s FILE(s)\n", exeName); - return 1; - } - - /* memory allocation for outFilename and resources */ - char* outFilename; - size_t outFilenameBufferLen; - resources const ress = createResources_orDie(argc, argv, &outFilename, &outFilenameBufferLen); - - /* compress files with shared context, input and output buffers */ - int argNb; - for (argNb = 1; argNb < argc; argNb++) { - const char* const inFilename = argv[argNb]; - size_t const inFilenameLen = strlen(inFilename); - CHECK(inFilenameLen + 5 <= outFilenameBufferLen, "File name too long!"); - memcpy(outFilename, inFilename, inFilenameLen); - memcpy(outFilename+inFilenameLen, ".zst", 5); - compressFile_orDie(ress, inFilename, outFilename); - } - - /* free memory */ - freeResources(ress,outFilename); - - printf("compressed %i files \n", argc-1); - - return 0; -} |
