zlib: wrap remaining calls to direct inflate/inflateEnd
[git/mjg.git] / zlib.c
blobbe9d7e963b88ac20cf4639de9dd4ddaaf3ff7a80
1 /*
2 * zlib wrappers to make sure we don't silently miss errors
3 * at init time.
4 */
5 #include "cache.h"
7 static const char *zerr_to_string(int status)
9 switch (status) {
10 case Z_MEM_ERROR:
11 return "out of memory";
12 case Z_VERSION_ERROR:
13 return "wrong version";
14 case Z_NEED_DICT:
15 return "needs dictionary";
16 case Z_DATA_ERROR:
17 return "data stream error";
18 case Z_STREAM_ERROR:
19 return "stream consistency error";
20 default:
21 return "unknown error";
25 void git_inflate_init(z_streamp strm)
27 int status = inflateInit(strm);
29 if (status == Z_OK)
30 return;
31 die("inflateInit: %s (%s)", zerr_to_string(status),
32 strm->msg ? strm->msg : "no message");
35 void git_inflate_end(z_streamp strm)
37 int status = inflateEnd(strm);
39 if (status == Z_OK)
40 return;
41 error("inflateEnd: %s (%s)", zerr_to_string(status),
42 strm->msg ? strm->msg : "no message");
45 int git_inflate(z_streamp strm, int flush)
47 int status = inflate(strm, flush);
49 switch (status) {
50 /* Z_BUF_ERROR: normal, needs more space in the output buffer */
51 case Z_BUF_ERROR:
52 case Z_OK:
53 case Z_STREAM_END:
54 return status;
56 case Z_MEM_ERROR:
57 die("inflate: out of memory");
58 default:
59 break;
61 error("inflate: %s (%s)", zerr_to_string(status),
62 strm->msg ? strm->msg : "no message");
63 return status;