1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * 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> // strlen, strcat, memset
- #include <zstd.h> // presumes zstd library is installed
- #include "common.h" // Helper functions, CHECK(), and CHECK_ZSTD()
- static void compress_orDie(const char* fname, const char* oname)
- {
- size_t fSize;
- void* const fBuff = mallocAndLoadFile_orDie(fname, &fSize);
- size_t const cBuffSize = ZSTD_compressBound(fSize);
- void* const cBuff = malloc_orDie(cBuffSize);
- /* Compress.
- * If you are doing many compressions, you may want to reuse the context.
- * See the multiple_simple_compression.c example.
- */
- size_t const cSize = ZSTD_compress(cBuff, cBuffSize, fBuff, fSize, 1);
- CHECK_ZSTD(cSize);
- saveFile_orDie(oname, cBuff, cSize);
- /* success */
- printf("%25s : %6u -> %7u - %s \n", fname, (unsigned)fSize, (unsigned)cSize, oname);
- free(fBuff);
- free(cBuff);
- }
- static char* createOutFilename_orDie(const char* filename)
- {
- size_t const inL = strlen(filename);
- size_t const outL = inL + 5;
- void* const outSpace = malloc_orDie(outL);
- memset(outSpace, 0, outL);
- strcat(outSpace, filename);
- strcat(outSpace, ".zst");
- return (char*)outSpace;
- }
- 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\n", exeName);
- return 1;
- }
- const char* const inFilename = argv[1];
- char* const outFilename = createOutFilename_orDie(inFilename);
- compress_orDie(inFilename, outFilename);
- free(outFilename);
- return 0;
- }
|