zlib wrapper: refactor error message formatter

Before refactoring the main part of the wrappers, first move the logic to convert error status that come back from zlib to string to a helper function. Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Jun 10, 2011 at 10:31 UTC 1a507fc1121865009fd961ef08cb03700650cbd4
1 file changed +38 -35
zlib.c
+38 -35
@@ -4,58 +4,61 @@
4 */
5 #include "cache.h"
6
7 -void git_inflate_init(z_streamp strm)
7 +static const char *zerr_to_string(int status)
8 {
9 - const char *err;
10 -
11 - switch (inflateInit(strm)) {
12 - case Z_OK:
13 - return;
14 -
9 + switch (status) {
10 case Z_MEM_ERROR:
16 - err = "out of memory";
17 - break;
11 + return "out of memory";
12 case Z_VERSION_ERROR:
19 - err = "wrong version";
20 - break;
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:
22 - err = "error";
21 + return "unknown error";
22 }
24 - die("inflateInit: %s (%s)", err, strm->msg ? strm->msg : "no message");
23 }
24
27 -void git_inflate_end(z_streamp strm)
25 +void git_inflate_init(z_streamp strm)
26 {
29 - if (inflateEnd(strm) != Z_OK)
30 - error("inflateEnd: %s", strm->msg ? strm->msg : "failed");
27 + int status = inflateInit(strm);
28 +
29 + if (status == Z_OK)
30 + return;
31 + die("inflateInit: %s (%s)", zerr_to_string(status),
32 + strm->msg ? strm->msg : "no message");
33 }
34
33 -int git_inflate(z_streamp strm, int flush)
35 +void git_inflate_end(z_streamp strm)
36 {
35 - int ret = inflate(strm, flush);
36 - const char *err;
37 + int status = inflateEnd(strm);
38
38 - switch (ret) {
39 - /* Out of memory is fatal. */
40 - case Z_MEM_ERROR:
41 - die("inflate: out of memory");
39 + if (status == Z_OK)
40 + return;
41 + error("inflateEnd: %s (%s)", zerr_to_string(status),
42 + strm->msg ? strm->msg : "no message");
43 +}
44
43 - /* Data corruption errors: we may want to recover from them (fsck) */
44 - case Z_NEED_DICT:
45 - err = "needs dictionary"; break;
46 - case Z_DATA_ERROR:
47 - err = "data stream error"; break;
48 - case Z_STREAM_ERROR:
49 - err = "stream consistency error"; break;
50 - default:
51 - err = "unknown error"; break;
45 +int git_inflate(z_streamp strm, int flush)
46 +{
47 + int status = inflate(strm, flush);
48
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:
57 - return ret;
54 + return status;
55 +
56 + case Z_MEM_ERROR:
57 + die("inflate: out of memory");
58 + default:
59 + break;
60 }
59 - error("inflate: %s (%s)", err, strm->msg ? strm->msg : "no message");
60 - return ret;
61 + error("inflate: %s (%s)", zerr_to_string(status),
62 + strm->msg ? strm->msg : "no message");
63 + return status;
64 }