31 #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
34 #define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
36 #define SET_BINARY_MODE(file)
51 unsigned char in[
CHUNK];
52 unsigned char out[
CHUNK];
58 ret = deflateInit(&strm, level);
64 strm.avail_in = fread(in, 1,
CHUNK, source);
66 (void)deflateEnd(&strm);
69 flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;
75 strm.avail_out =
CHUNK;
77 ret = deflate(&strm, flush);
78 assert(ret != Z_STREAM_ERROR);
79 have =
CHUNK - strm.avail_out;
80 if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
81 (void)deflateEnd(&strm);
84 }
while (strm.avail_out == 0);
85 assert(strm.avail_in == 0);
88 }
while (flush != Z_FINISH);
89 assert(ret == Z_STREAM_END);
92 (void)deflateEnd(&strm);
106 unsigned char in[
CHUNK];
107 unsigned char out[
CHUNK];
110 strm.zalloc = Z_NULL;
112 strm.opaque = Z_NULL;
114 strm.next_in = Z_NULL;
115 ret = inflateInit(&strm);
121 strm.avail_in = fread(in, 1,
CHUNK, source);
122 if (ferror(source)) {
123 (void)inflateEnd(&strm);
126 if (strm.avail_in == 0)
132 strm.avail_out =
CHUNK;
134 ret = inflate(&strm, Z_NO_FLUSH);
135 assert(ret != Z_STREAM_ERROR);
141 (void)inflateEnd(&strm);
144 have =
CHUNK - strm.avail_out;
145 if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
146 (void)inflateEnd(&strm);
149 }
while (strm.avail_out == 0);
152 }
while (ret != Z_STREAM_END);
155 (void)inflateEnd(&strm);
156 return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
161 fputs(
"zpipe: ", stderr);
165 fputs(
"error reading stdin\n", stderr);
167 fputs(
"error writing stdout\n", stderr);
170 fputs(
"invalid compression level\n", stderr);
173 fputs(
"invalid or incomplete deflate data\n", stderr);
176 fputs(
"out of memory\n", stderr);
178 case Z_VERSION_ERROR:
179 fputs(
"zlib version mismatch!\n", stderr);
192 if (!options.
Has(
"decompress")) {
193 ret =
def(stdin, stdout, Z_DEFAULT_COMPRESSION);
199 ret =
inf(stdin, stdout);
bool Has(const std::string &key) const
CVMFS_EXPORT const LogSource source
#define SET_BINARY_MODE(file)
assert((mem||(size==0))&&"Out Of Memory")
int def(FILE *source, FILE *dest, int level)
virtual int Main(const Options &options)
int inf(FILE *source, FILE *dest)