1*0c16b537SWarner Losh /* 2*0c16b537SWarner Losh * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. 3*0c16b537SWarner Losh * All rights reserved. 4*0c16b537SWarner Losh * 5*0c16b537SWarner Losh * This source code is licensed under both the BSD-style license (found in the 6*0c16b537SWarner Losh * LICENSE file in the root directory of this source tree) and the GPLv2 (found 7*0c16b537SWarner Losh * in the COPYING file in the root directory of this source tree). 8*0c16b537SWarner Losh * You may select, at your option, one of the above-listed licenses. 9*0c16b537SWarner Losh */ 10*0c16b537SWarner Losh 11*0c16b537SWarner Losh 12*0c16b537SWarner Losh #ifndef FILEIO_H_23981798732 13*0c16b537SWarner Losh #define FILEIO_H_23981798732 14*0c16b537SWarner Losh 15*0c16b537SWarner Losh #define ZSTD_STATIC_LINKING_ONLY /* ZSTD_compressionParameters */ 16*0c16b537SWarner Losh #include "zstd.h" /* ZSTD_* */ 17*0c16b537SWarner Losh 18*0c16b537SWarner Losh #if defined (__cplusplus) 19*0c16b537SWarner Losh extern "C" { 20*0c16b537SWarner Losh #endif 21*0c16b537SWarner Losh 22*0c16b537SWarner Losh 23*0c16b537SWarner Losh /* ************************************* 24*0c16b537SWarner Losh * Special i/o constants 25*0c16b537SWarner Losh **************************************/ 26*0c16b537SWarner Losh #define stdinmark "/*stdin*\\" 27*0c16b537SWarner Losh #define stdoutmark "/*stdout*\\" 28*0c16b537SWarner Losh #ifdef _WIN32 29*0c16b537SWarner Losh # define nulmark "nul" 30*0c16b537SWarner Losh #else 31*0c16b537SWarner Losh # define nulmark "/dev/null" 32*0c16b537SWarner Losh #endif 33*0c16b537SWarner Losh #define LZMA_EXTENSION ".lzma" 34*0c16b537SWarner Losh #define XZ_EXTENSION ".xz" 35*0c16b537SWarner Losh #define GZ_EXTENSION ".gz" 36*0c16b537SWarner Losh #define ZSTD_EXTENSION ".zst" 37*0c16b537SWarner Losh #define LZ4_EXTENSION ".lz4" 38*0c16b537SWarner Losh 39*0c16b537SWarner Losh 40*0c16b537SWarner Losh /*-************************************* 41*0c16b537SWarner Losh * Types 42*0c16b537SWarner Losh ***************************************/ 43*0c16b537SWarner Losh typedef enum { FIO_zstdCompression, FIO_gzipCompression, FIO_xzCompression, FIO_lzmaCompression, FIO_lz4Compression } FIO_compressionType_t; 44*0c16b537SWarner Losh 45*0c16b537SWarner Losh 46*0c16b537SWarner Losh /*-************************************* 47*0c16b537SWarner Losh * Parameters 48*0c16b537SWarner Losh ***************************************/ 49*0c16b537SWarner Losh void FIO_setCompressionType(FIO_compressionType_t compressionType); 50*0c16b537SWarner Losh void FIO_overwriteMode(void); 51*0c16b537SWarner Losh void FIO_setNotificationLevel(unsigned level); 52*0c16b537SWarner Losh void FIO_setSparseWrite(unsigned sparse); /**< 0: no sparse; 1: disable on stdout; 2: always enabled */ 53*0c16b537SWarner Losh void FIO_setDictIDFlag(unsigned dictIDFlag); 54*0c16b537SWarner Losh void FIO_setChecksumFlag(unsigned checksumFlag); 55*0c16b537SWarner Losh void FIO_setRemoveSrcFile(unsigned flag); 56*0c16b537SWarner Losh void FIO_setMemLimit(unsigned memLimit); 57*0c16b537SWarner Losh void FIO_setNbThreads(unsigned nbThreads); 58*0c16b537SWarner Losh void FIO_setBlockSize(unsigned blockSize); 59*0c16b537SWarner Losh void FIO_setOverlapLog(unsigned overlapLog); 60*0c16b537SWarner Losh void FIO_setLdmFlag(unsigned ldmFlag); 61*0c16b537SWarner Losh void FIO_setLdmHashLog(unsigned ldmHashLog); 62*0c16b537SWarner Losh void FIO_setLdmMinMatch(unsigned ldmMinMatch); 63*0c16b537SWarner Losh void FIO_setLdmBucketSizeLog(unsigned ldmBucketSizeLog); 64*0c16b537SWarner Losh void FIO_setLdmHashEveryLog(unsigned ldmHashEveryLog); 65*0c16b537SWarner Losh 66*0c16b537SWarner Losh 67*0c16b537SWarner Losh /*-************************************* 68*0c16b537SWarner Losh * Single File functions 69*0c16b537SWarner Losh ***************************************/ 70*0c16b537SWarner Losh /** FIO_compressFilename() : 71*0c16b537SWarner Losh @return : 0 == ok; 1 == pb with src file. */ 72*0c16b537SWarner Losh int FIO_compressFilename (const char* outfilename, const char* infilename, const char* dictFileName, 73*0c16b537SWarner Losh int compressionLevel, ZSTD_compressionParameters* comprParams); 74*0c16b537SWarner Losh 75*0c16b537SWarner Losh /** FIO_decompressFilename() : 76*0c16b537SWarner Losh @return : 0 == ok; 1 == pb with src file. */ 77*0c16b537SWarner Losh int FIO_decompressFilename (const char* outfilename, const char* infilename, const char* dictFileName); 78*0c16b537SWarner Losh 79*0c16b537SWarner Losh int FIO_listMultipleFiles(unsigned numFiles, const char** filenameTable, int displayLevel); 80*0c16b537SWarner Losh 81*0c16b537SWarner Losh /*-************************************* 82*0c16b537SWarner Losh * Multiple File functions 83*0c16b537SWarner Losh ***************************************/ 84*0c16b537SWarner Losh /** FIO_compressMultipleFilenames() : 85*0c16b537SWarner Losh @return : nb of missing files */ 86*0c16b537SWarner Losh int FIO_compressMultipleFilenames(const char** srcNamesTable, unsigned nbFiles, 87*0c16b537SWarner Losh const char* suffix, 88*0c16b537SWarner Losh const char* dictFileName, int compressionLevel, 89*0c16b537SWarner Losh ZSTD_compressionParameters* comprParams); 90*0c16b537SWarner Losh 91*0c16b537SWarner Losh /** FIO_decompressMultipleFilenames() : 92*0c16b537SWarner Losh @return : nb of missing or skipped files */ 93*0c16b537SWarner Losh int FIO_decompressMultipleFilenames(const char** srcNamesTable, unsigned nbFiles, 94*0c16b537SWarner Losh const char* suffix, 95*0c16b537SWarner Losh const char* dictFileName); 96*0c16b537SWarner Losh 97*0c16b537SWarner Losh 98*0c16b537SWarner Losh #if defined (__cplusplus) 99*0c16b537SWarner Losh } 100*0c16b537SWarner Losh #endif 101*0c16b537SWarner Losh 102*0c16b537SWarner Losh #endif /* FILEIO_H_23981798732 */ 103