30 #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
33 #define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
35 #define SET_BINARY_MODE(file)
50 unsigned char in[
CHUNK];
51 unsigned char out[
CHUNK];
57 ret = deflateInit(&strm, level);
63 strm.avail_in = fread(in, 1,
CHUNK, source);
65 (void)deflateEnd(&strm);
68 flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;
74 strm.avail_out =
CHUNK;
76 ret = deflate(&strm, flush);
77 assert(ret != Z_STREAM_ERROR);
78 have =
CHUNK - strm.avail_out;
79 if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
80 (void)deflateEnd(&strm);
83 }
while (strm.avail_out == 0);
84 assert(strm.avail_in == 0);
87 }
while (flush != Z_FINISH);
88 assert(ret == Z_STREAM_END);
91 (void)deflateEnd(&strm);
105 unsigned char in[
CHUNK];
106 unsigned char out[
CHUNK];
109 strm.zalloc = Z_NULL;
111 strm.opaque = Z_NULL;
113 strm.next_in = Z_NULL;
114 ret = inflateInit(&strm);
120 strm.avail_in = fread(in, 1,
CHUNK, source);
121 if (ferror(source)) {
122 (void)inflateEnd(&strm);
125 if (strm.avail_in == 0)
131 strm.avail_out =
CHUNK;
133 ret = inflate(&strm, Z_NO_FLUSH);
134 assert(ret != Z_STREAM_ERROR);
140 (void)inflateEnd(&strm);
143 have =
CHUNK - strm.avail_out;
144 if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
145 (void)inflateEnd(&strm);
148 }
while (strm.avail_out == 0);
151 }
while (ret != Z_STREAM_END);
154 (void)inflateEnd(&strm);
155 return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
160 fputs(
"zpipe: ", stderr);
164 fputs(
"error reading stdin\n", stderr);
166 fputs(
"error writing stdout\n", stderr);
169 fputs(
"invalid compression level\n", stderr);
172 fputs(
"invalid or incomplete deflate data\n", stderr);
175 fputs(
"out of memory\n", stderr);
177 case Z_VERSION_ERROR:
178 fputs(
"zlib version mismatch!\n", stderr);
191 if (args.find(
'd') == args.end()) {
192 ret =
def(stdin, stdout, Z_DEFAULT_COMPRESSION);
198 ret =
inf(stdin, stdout);
CVMFS_EXPORT const LogSource source
#define SET_BINARY_MODE(file)
virtual int Main(const ArgumentList &args)
assert((mem||(size==0))&&"Out Of Memory")
int def(FILE *source, FILE *dest, int level)
std::map< char, SharedPtr< std::string > > ArgumentList
int inf(FILE *source, FILE *dest)