diff options
Diffstat (limited to 'libtests/runlength.cc')
-rw-r--r-- | libtests/runlength.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/libtests/runlength.cc b/libtests/runlength.cc new file mode 100644 index 00000000..3dfe0563 --- /dev/null +++ b/libtests/runlength.cc @@ -0,0 +1,47 @@ +#include <qpdf/Pl_RunLength.hh> +#include <qpdf/Pl_StdioFile.hh> +#include <qpdf/QUtil.hh> + +#include <stdio.h> +#include <string.h> +#include <iostream> +#include <stdlib.h> + +int main(int argc, char* argv[]) +{ + if (argc != 4) + { + std::cerr << "Usage: runlength {-encode|-decode} infile outfile" + << std::endl; + exit(2); + } + + bool encode = (strcmp("-encode", argv[1]) == 0); + char* infilename = argv[2]; + char* outfilename = argv[3]; + + FILE* infile = QUtil::safe_fopen(infilename, "rb"); + FILE* outfile = QUtil::safe_fopen(outfilename, "wb"); + Pl_StdioFile out("stdout", outfile); + unsigned char buf[100]; + bool done = false; + Pl_RunLength rl( + "runlength", &out, + (encode ? Pl_RunLength::a_encode : Pl_RunLength::a_decode)); + while (! done) + { + size_t len = fread(buf, 1, sizeof(buf), infile); + if (len <= 0) + { + done = true; + } + else + { + rl.write(buf, len); + } + } + rl.finish(); + fclose(infile); + fclose(outfile); + return 0; +} |