From 1cff9f2c8fdcf9ac2a087a091b881469cc909110 Mon Sep 17 00:00:00 2001 From: Mathis Rosenhauer Date: Mon, 13 Aug 2012 17:19:38 +0200 Subject: [PATCH] getopt cmd line parsing in examples --- data/example_data_16 | Bin 0 -> 32768 bytes src/Makefile | 29 +++++----- src/decode.c | 145 ++++++++++++++++++++++++++++++++++++++++++++++++ src/encode.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/test_decode.c | 95 -------------------------------- src/test_encode.c | 112 ------------------------------------- src/test_szcomp.c | 43 +++++++-------- 7 files changed, 331 insertions(+), 246 deletions(-) create mode 100644 data/example_data_16 create mode 100644 src/decode.c create mode 100644 src/encode.c delete mode 100644 src/test_decode.c delete mode 100644 src/test_encode.c diff --git a/data/example_data_16 b/data/example_data_16 new file mode 100644 index 0000000000000000000000000000000000000000..b9ca914c0e8dd950b406a3f9884c410de55e191e GIT binary patch literal 32768 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 c ../data/test.ae - ./test_decode 1 1 < ../data/test.ae > ../data/test - diff ../data/test ../data/example_data - ./test_encode 99 99 < ../data/example_data > ../data/test.ae - ./test_decode 101 101 < ../data/test.ae > ../data/test - diff ../data/test ../data/example_data - ./test_szcomp 65536 < ../data/example_data_16 > ../data/test - diff ../data/test ../data/example_data_16 - ./test_szcomp 2097257 < ../data/zero_test > ../data/test - diff ../data/test ../data/zero_test +check: encode decode test_szcomp + ./encode -cb1 ../data/example_data > ../data/test.aee + ./decode -b1 ../data/test.aee + diff ../data/test ../data/example_data + ./encode -cb1024 ../data/example_data > ../data/test.aee + ./decode -b1024 ../data/test.aee + diff ../data/test ../data/example_data + ./test_szcomp 65536 ../data/example_data_16 + + diff --git a/src/decode.c b/src/decode.c new file mode 100644 index 0000000..bde19b4 --- /dev/null +++ b/src/decode.c @@ -0,0 +1,145 @@ +#include +#include +#include +#include +#include +#include +#include "libae.h" + +#define CHUNK 1024 + +int main(int argc, char *argv[]) +{ + ae_stream strm; + uint8_t *in; + uint8_t *out; + int chunk, c, total_out, status; + int input_avail, output_avail; + char *outfn, *infn, *ext; + FILE *infp, *outfp; + int cflag = 0; + + chunk = CHUNK; + opterr = 0; + + while ((c = getopt (argc, argv, "cb:")) != -1) + switch (c) + { + case 'b': + chunk = 2 * atoi(optarg); + break; + case 'c': + cflag = 1; + break; + case '?': + if (optopt == 'b') + fprintf (stderr, "Option -%c requires an argument.\n", optopt); + else if (isprint (optopt)) + fprintf (stderr, "Unknown option `-%c'.\n", optopt); + else + fprintf (stderr, + "Unknown option character `\\x%x'.\n", + optopt); + return 1; + default: + abort (); + } + + if (optind < argc) + { + infn = argv[optind]; + } + else + { + fprintf(stderr, "Usage: %s [ -c ] [ -b chunksize ] name\n", argv[0]); + exit(-1); + } + + in = (uint8_t *)malloc(chunk); + out = (uint8_t *)malloc(chunk * sizeof(uint8_t)); + if (in == NULL || out == NULL) + return 1; + + if (cflag) + { + outfp = stdout; + } + else + { + outfn = malloc(strlen(infn)); + if (outfn == NULL) + exit(-1); + + if ((ext = strstr(infn, ".aee")) == NULL) + { + fprintf(stderr, "Error: input file needs to end with .aee\n"); + exit(-1); + } + strncpy(outfn, infn, ext - infn); + + if ((outfp = fopen(outfn, "w")) == NULL) + exit(-1); + } + if ((infp = fopen(infn, "r")) == NULL) + exit(-1); + + strm.bit_per_sample = 16; + strm.block_size = 8; + strm.segment_size = 8; + strm.flags = AE_DATA_MSB | AE_DATA_PREPROCESS; + + if (ae_decode_init(&strm) != AE_OK) + return 1; + + total_out = 0; + strm.avail_in = 0; + strm.avail_out = chunk; + strm.next_out = (uint8_t *)out; + + input_avail = 1; + output_avail = 1; + + while(input_avail || output_avail) + { + if (strm.avail_in == 0) + { + strm.avail_in = fread(in, 1, chunk, infp); + if (strm.avail_in != chunk) + input_avail = 0; + + strm.next_in = in; + } + + if ((status = ae_decode(&strm, AE_NO_FLUSH)) != AE_OK) + { + fprintf(stderr, "error is %i\n", status); + return 1; + } + + if (strm.total_out - total_out > 0) + { + fwrite(out, strm.total_out - total_out, 1, outfp); + total_out = strm.total_out; + output_avail = 1; + strm.next_out = (uint8_t *)out; + strm.avail_out = chunk; + } + else + { + output_avail = 0; + } + + } + + ae_decode_end(&strm); + fclose(infp); + fclose(outfp); + free(in); + free(out); + if (!cflag) + { + unlink(infn); + free(outfn); + } + return 0; +} diff --git a/src/encode.c b/src/encode.c new file mode 100644 index 0000000..03cdf26 --- /dev/null +++ b/src/encode.c @@ -0,0 +1,153 @@ +#include +#include +#include +#include +#include +#include +#include "libae.h" + +#define CHUNK 1024 + +int main(int argc, char *argv[]) +{ + ae_stream strm; + uint8_t *in; + uint8_t *out; + int chunk, total_out, status, c; + int input_avail, output_avail; + char *outfn, *infn; + FILE *infp, *outfp; + int cflag = 0; + + chunk = CHUNK; + opterr = 0; + + while ((c = getopt (argc, argv, "cb:")) != -1) + switch (c) + { + case 'b': + chunk = 2 * atoi(optarg); + break; + case 'c': + cflag = 1; + break; + case '?': + if (optopt == 'b') + fprintf (stderr, "Option -%c requires an argument.\n", optopt); + else if (isprint (optopt)) + fprintf (stderr, "Unknown option `-%c'.\n", optopt); + else + fprintf (stderr, + "Unknown option character `\\x%x'.\n", + optopt); + return 1; + default: + abort (); + } + + if (optind < argc) + { + infn = argv[optind]; + } + else + { + fprintf(stderr, "Usage: %s [ -c ] [ -b chunksize ] name\n", argv[0]); + exit(-1); + } + + out = (uint8_t *)malloc(chunk); + in = (uint8_t *)malloc(chunk); + + + if (in == NULL || out == NULL) + exit(-1); + + strm.bit_per_sample = 16; + strm.block_size = 8; + strm.segment_size = 8; + strm.flags = AE_DATA_MSB | AE_DATA_PREPROCESS; + + if (ae_encode_init(&strm) != AE_OK) + return 1; + + total_out = 0; + strm.avail_in = 0; + strm.avail_out = chunk; + strm.next_out = out; + + input_avail = 1; + output_avail = 1; + + if ((infp = fopen(infn, "r")) == NULL) + exit(-1); + + if (cflag) + { + outfp = stdout; + } + else + { + outfn = malloc(strlen(infn) + 4); + if (outfn == NULL) + exit(-1); + + sprintf(outfn, "%s.aee", infn); + + if ((outfp = fopen(outfn, "w")) == NULL) + exit(-1); + } + + while(input_avail || output_avail) + { + if (strm.avail_in == 0 && input_avail) + { + strm.avail_in = fread(in, 1, chunk, infp); + if (strm.avail_in != chunk) + input_avail = 0; + strm.next_in = (uint8_t *)in; + } + + if ((status = ae_encode(&strm, AE_NO_FLUSH)) != AE_OK) + { + fprintf(stderr, "error is %i\n", status); + return 1; + } + + if (strm.total_out - total_out > 0) + { + fwrite(out, strm.total_out - total_out, 1, outfp); + total_out = strm.total_out; + output_avail = 1; + strm.next_out = out; + strm.avail_out = chunk; + } + else + { + output_avail = 0; + } + + } + + if ((status = ae_encode(&strm, AE_FLUSH)) != AE_OK) + { + fprintf(stderr, "error is %i\n", status); + return 1; + } + + if (strm.total_out - total_out > 0) + { + fwrite(out, strm.total_out - total_out, 1, outfp); + } + + ae_encode_end(&strm); + fclose(infp); + fclose(outfp); + free(in); + free(out); + if (!cflag) + { + unlink(infn); + free(outfn); + } + return 0; +} diff --git a/src/test_decode.c b/src/test_decode.c deleted file mode 100644 index 65a67f6..0000000 --- a/src/test_decode.c +++ /dev/null @@ -1,95 +0,0 @@ -#include -#include -#include -#include -#include "libae.h" - -#define CHUNK_OUT 1 -#define CHUNK_IN 1 - -int main(int argc, char *argv[]) -{ - ae_stream strm; - uint8_t *in; - uint8_t *out; - int chunk_in, chunk_out, i, c, total_out, status; - int input_avail, output_avail; - - if (argc == 3) - { - chunk_in = atoi(argv[1]); - chunk_out = atoi(argv[2]); - } - else - { - chunk_in = CHUNK_IN; - chunk_out = CHUNK_OUT; - } - - in = (uint8_t *)malloc(chunk_in); - out = (uint8_t *)malloc(chunk_out * sizeof(uint8_t)); - if (in == NULL || out == NULL) - return 1; - - strm.bit_per_sample = 8; - strm.block_size = 8; - strm.segment_size = 2; - strm.flags = AE_DATA_UNSIGNED | AE_DATA_PREPROCESS; - - if (ae_decode_init(&strm) != AE_OK) - return 1; - - total_out = 0; - strm.avail_in = 0; - strm.avail_out = chunk_out; - strm.next_out = (uint8_t *)out; - - input_avail = 1; - output_avail = 1; - - while(input_avail || output_avail) - { - if (strm.avail_in == 0) - { - i = 0; - while(i < chunk_in && (c = getc(stdin)) != EOF) - in[i++] = c; - strm.avail_in = i; - - strm.next_in = in; - if (c == EOF) - input_avail = 0; - } - - if ((status = ae_decode(&strm, AE_NO_FLUSH)) != AE_OK) - { - fprintf(stderr, "error is %i\n", status); - return 1; - } - - if (strm.total_out - total_out > 0) - { - for (i=0; i < strm.total_out - total_out; i++) - { - putc(out[i], stdout); - /* putc(out[i] >> 8, stdout); */ - /* putc(out[i] >> 16, stdout); */ - /* putc(out[i] >> 24, stdout); */ - } - total_out = strm.total_out; - output_avail = 1; - strm.next_out = (uint8_t *)out; - strm.avail_out = chunk_out; - } - else - { - output_avail = 0; - } - - } - - ae_decode_end(&strm); - free(in); - free(out); - return 0; -} diff --git a/src/test_encode.c b/src/test_encode.c deleted file mode 100644 index 41c01b9..0000000 --- a/src/test_encode.c +++ /dev/null @@ -1,112 +0,0 @@ -#include -#include -#include -#include -#include "libae.h" - -#define CHUNK_OUT 0x4000 -#define CHUNK_IN 1024 -#define ALL_IN 9478 - -int main(int argc, char *argv[]) -{ - ae_stream strm; - uint8_t *in; - uint8_t *out; - int chunk_in, chunk_out, i, c, total_out, status; - int input_avail, output_avail; - - if (argc == 3) - { - chunk_in = atoi(argv[1]); - chunk_out = atoi(argv[2]); - } - else - { - chunk_in = CHUNK_IN; - chunk_out = CHUNK_OUT; - } - - out = (uint8_t *)malloc(chunk_out); - in = (uint8_t *)malloc(chunk_in * sizeof(uint8_t)); - if (in == NULL || out == NULL) - return 1; - - strm.bit_per_sample = 8; - strm.block_size = 8; - strm.segment_size = 2; - strm.flags = AE_DATA_UNSIGNED | AE_DATA_PREPROCESS; - - if (ae_encode_init(&strm) != AE_OK) - return 1; - - total_out = 0; - strm.avail_in = 0; - strm.avail_out = chunk_out; - strm.next_out = out; - - input_avail = 1; - output_avail = 1; - - while(input_avail || output_avail) - { - if (strm.avail_in == 0) - { - i = 0; - while(i < chunk_in && (c = getc(stdin)) != EOF) - { - in[i] = c; - /* in[i] |= getc(stdin) << 8; */ - /* in[i] |= getc(stdin) << 16; */ - /* in[i] |= getc(stdin) << 24; */ - i++; - } - strm.avail_in = i; - - strm.next_in = (uint8_t *)in; - if (c == EOF) - input_avail = 0; - } - - if ((status = ae_encode(&strm, AE_NO_FLUSH)) != AE_OK) - { - fprintf(stderr, "error is %i\n", status); - return 1; - } - - if (strm.total_out - total_out > 0) - { - for (i=0; i < strm.total_out - total_out; i++) - { - putc(out[i], stdout); - } - total_out = strm.total_out; - output_avail = 1; - strm.next_out = out; - strm.avail_out = chunk_out; - } - else - { - output_avail = 0; - } - - } - - if ((status = ae_encode(&strm, AE_FLUSH)) != AE_OK) - { - fprintf(stderr, "error is %i\n", status); - return 1; - } - - if (strm.total_out - total_out > 0) - { - for (i=0; i < strm.total_out - total_out; i++) - { - putc(out[i], stdout); - } - } - ae_encode_end(&strm); - free(in); - free(out); - return 0; -} diff --git a/src/test_szcomp.c b/src/test_szcomp.c index 0f57246..7d16cfb 100644 --- a/src/test_szcomp.c +++ b/src/test_szcomp.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "szlib.h" #define OPTIONS_MASK (SZ_RAW_OPTION_MASK | SZ_MSB_OPTION_MASK | SZ_NN_OPTION_MASK) @@ -10,15 +11,15 @@ int main(int argc, char *argv[]) { - int status, c; + int status; SZ_com_t sz_param; - unsigned char *dest; - uint16_t *source; - size_t destLen, sourceLen, n; + unsigned char *source, *dest, *dest1; + size_t destLen, dest1Len, sourceLen; + FILE *fp; - if (argc < 2) + if (argc < 3) { - fprintf(stderr, "Input size missing!\n"); + fprintf(stderr, "Usage: %s buffer_size file\n", argv[0]); return 1; } sz_param.options_mask = OPTIONS_MASK; @@ -28,41 +29,35 @@ int main(int argc, char *argv[]) sourceLen = destLen = atoi(argv[1]); - source = (uint16_t *)malloc(sourceLen * sizeof(uint16_t)); + source = (unsigned char *)malloc(sourceLen); dest = (unsigned char *)malloc(destLen); + dest1 = (unsigned char *)malloc(destLen); - if (source == NULL || dest == NULL) + if (source == NULL || dest == NULL || dest1 == NULL) return 1; - n = 0; - while((c = getc(stdin)) != EOF) + if ((fp = fopen(argv[2], "r")) == NULL) { - source[n] = c; - source[n] |= getc(stdin) << 8; - n++; + fprintf(stderr, "Can't open %s\n", argv[2]); + exit(-1); } - sourceLen = n * sizeof(uint16_t); - fprintf(stderr, "Uncompressed size is %li\n", sourceLen); + sourceLen = fread(source, 1, sourceLen, fp); status = SZ_BufftoBuffCompress(dest, &destLen, source, sourceLen, &sz_param); if (status != SZ_OK) return status; - fprintf(stderr, "Compressed size is %li\n", destLen); - - status = SZ_BufftoBuffDecompress(source, &sourceLen, dest, destLen, &sz_param); + dest1Len = sourceLen; + status = SZ_BufftoBuffDecompress(dest1, &dest1Len, dest, destLen, &sz_param); if (status != SZ_OK) return status; - fprintf(stderr, "Uncompressed size is %li again\n", sourceLen); + if (memcmp(source, dest1, sourceLen) != 0) + fprintf(stderr, "File %s Buffers differ\n", argv[2]); - for(c = 0; c < sourceLen / sizeof(uint16_t); c++) - { - putc(source[c], stdout); - putc(source[c] >> 8, stdout); - } free(source); free(dest); + free(dest1); return 0; } -- 2.7.4