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
}