From: Paul Cruz Date: Wed, 5 Jul 2017 19:20:16 +0000 (-0700) Subject: added some basic parsing for args X-Git-Tag: v1.3.1^2~13^2^2~119 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b42108386a5eaccafbc5b8d15e3ac71e4c548a9a;p=thirdparty%2Fzstd.git added some basic parsing for args --- diff --git a/contrib/adaptive-compression/multi.c b/contrib/adaptive-compression/multi.c index 79904551d..4eb3d3b16 100644 --- a/contrib/adaptive-compression/multi.c +++ b/contrib/adaptive-compression/multi.c @@ -1,6 +1,8 @@ #define DISPLAY(...) fprintf(stderr, __VA_ARGS__) #define FILE_CHUNK_SIZE 4 << 20 #define MAX_NUM_JOBS 30; +#define stdinmark "/*stdin*\\" +#define stdoutmark "/*stdout*\\" typedef unsigned char BYTE; #include /* fprintf */ @@ -125,7 +127,8 @@ static adaptCCtx* createCCtx(unsigned numJobs, const char* const outFilename) return NULL; } { - FILE* dstFile = fopen(outFilename, "wb"); + unsigned const stdoutUsed = !strcmp(outFilename, stdoutmark); + FILE* dstFile = stdoutUsed ? stdout : fopen(outFilename, "wb"); if (dstFile == NULL) { DISPLAY("Error: could not open output file\n"); freeCCtx(ctx); @@ -267,7 +270,8 @@ static int createCompressionJob(adaptCCtx* ctx, BYTE* data, size_t srcSize) static int compressFilename(const char* const srcFilename, const char* const dstFilename) { BYTE* const src = malloc(FILE_CHUNK_SIZE); - FILE* const srcFile = fopen(srcFilename, "rb"); + unsigned const stdinUsed = !strcmp(srcFilename, stdinmark); + FILE* const srcFile = stdinUsed ? stdin : fopen(srcFilename, "rb"); size_t const numJobs = MAX_NUM_JOBS; int ret = 0; adaptCCtx* ctx = NULL; @@ -341,9 +345,28 @@ cleanup: /* return 0 if successful, else return error */ int main(int argCount, const char* argv[]) { - if (argCount < 3) { - DISPLAY("Error: not enough arguments\n"); - return 1; + const char* inFilename = stdinmark; + const char* outFilename = stdoutmark; + unsigned nextArgumentIsOutFilename = 0; + int argNum; + for (argNum=1; argNum