2 * zlib wrappers to make sure we don't silently miss errors
7 static const char *zerr_to_string(int status)
11 return "out of memory";
13 return "wrong version";
15 return "needs dictionary";
17 return "data stream error";
19 return "stream consistency error";
21 return "unknown error";
25 void git_inflate_init(z_streamp strm)
27 int status = inflateInit(strm);
31 die("inflateInit: %s (%s)", zerr_to_string(status),
32 strm->msg ? strm->msg : "no message");
35 void git_inflate_init_gzip_only(z_streamp strm)
38 * Use default 15 bits, +16 is to accept only gzip and to
39 * yield Z_DATA_ERROR when fed zlib format.
41 const int windowBits = 15 + 16;
42 int status = inflateInit2(strm, windowBits);
46 die("inflateInit2: %s (%s)", zerr_to_string(status),
47 strm->msg ? strm->msg : "no message");
50 void git_inflate_end(z_streamp strm)
52 int status = inflateEnd(strm);
56 error("inflateEnd: %s (%s)", zerr_to_string(status),
57 strm->msg ? strm->msg : "no message");
60 int git_inflate(z_streamp strm, int flush)
62 int status = inflate(strm, flush);
65 /* Z_BUF_ERROR: normal, needs more space in the output buffer */
72 die("inflate: out of memory");
76 error("inflate: %s (%s)", zerr_to_string(status),
77 strm->msg ? strm->msg : "no message");
81 #if defined(NO_DEFLATE_BOUND) || ZLIB_VERNUM < 0x1200
82 #define deflateBound(c,s) ((s) + (((s) + 7) >> 3) + (((s) + 63) >> 6) + 11)
85 unsigned long git_deflate_bound(z_streamp strm, unsigned long size)
87 return deflateBound(strm, size);
90 void git_deflate_init(z_streamp strm, int level)
92 int status = deflateInit(strm, level);
96 die("deflateInit: %s (%s)", zerr_to_string(status),
97 strm->msg ? strm->msg : "no message");
100 void git_deflate_init_gzip(z_streamp strm, int level)
103 * Use default 15 bits, +16 is to generate gzip header/trailer
104 * instead of the zlib wrapper.
106 const int windowBits = 15 + 16;
107 int status = deflateInit2(strm, level,
108 Z_DEFLATED, windowBits,
109 8, Z_DEFAULT_STRATEGY);
112 die("deflateInit2: %s (%s)", zerr_to_string(status),
113 strm->msg ? strm->msg : "no message");
116 void git_deflate_end(z_streamp strm)
118 int status = deflateEnd(strm);
122 error("deflateEnd: %s (%s)", zerr_to_string(status),
123 strm->msg ? strm->msg : "no message");
126 int git_deflate_end_gently(z_streamp strm)
128 return deflateEnd(strm);
131 int git_deflate(z_streamp strm, int flush)
133 int status = deflate(strm, flush);
136 /* Z_BUF_ERROR: normal, needs more space in the output buffer */
143 die("deflate: out of memory");
147 error("deflate: %s (%s)", zerr_to_string(status),
148 strm->msg ? strm->msg : "no message");