From 1a507fc1121865009fd961ef08cb03700650cbd4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 10 Jun 2011 10:31:34 -0700 Subject: 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 --- zlib.c | 73 ++++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/zlib.c b/zlib.c index c4d58da4e..be9d7e963 100644 --- a/zlib.c +++ b/zlib.c @@ -4,58 +4,61 @@ */ #include "cache.h" -void git_inflate_init(z_streamp strm) +static const char *zerr_to_string(int status) { - const char *err; - - switch (inflateInit(strm)) { - case Z_OK: - return; - + switch (status) { case Z_MEM_ERROR: - err = "out of memory"; - break; + return "out of memory"; case Z_VERSION_ERROR: - err = "wrong version"; - break; + return "wrong version"; + case Z_NEED_DICT: + return "needs dictionary"; + case Z_DATA_ERROR: + return "data stream error"; + case Z_STREAM_ERROR: + return "stream consistency error"; default: - err = "error"; + return "unknown error"; } - die("inflateInit: %s (%s)", err, strm->msg ? strm->msg : "no message"); } -void git_inflate_end(z_streamp strm) +void git_inflate_init(z_streamp strm) { - if (inflateEnd(strm) != Z_OK) - error("inflateEnd: %s", strm->msg ? strm->msg : "failed"); + int status = inflateInit(strm); + + if (status == Z_OK) + return; + die("inflateInit: %s (%s)", zerr_to_string(status), + strm->msg ? strm->msg : "no message"); } -int git_inflate(z_streamp strm, int flush) +void git_inflate_end(z_streamp strm) { - int ret = inflate(strm, flush); - const char *err; + int status = inflateEnd(strm); - switch (ret) { - /* Out of memory is fatal. */ - case Z_MEM_ERROR: - die("inflate: out of memory"); + if (status == Z_OK) + return; + error("inflateEnd: %s (%s)", zerr_to_string(status), + strm->msg ? strm->msg : "no message"); +} - /* Data corruption errors: we may want to recover from them (fsck) */ - case Z_NEED_DICT: - err = "needs dictionary"; break; - case Z_DATA_ERROR: - err = "data stream error"; break; - case Z_STREAM_ERROR: - err = "stream consistency error"; break; - default: - err = "unknown error"; break; +int git_inflate(z_streamp strm, int flush) +{ + int status = inflate(strm, flush); + switch (status) { /* Z_BUF_ERROR: normal, needs more space in the output buffer */ case Z_BUF_ERROR: case Z_OK: case Z_STREAM_END: - return ret; + return status; + + case Z_MEM_ERROR: + die("inflate: out of memory"); + default: + break; } - error("inflate: %s (%s)", err, strm->msg ? strm->msg : "no message"); - return ret; + error("inflate: %s (%s)", zerr_to_string(status), + strm->msg ? strm->msg : "no message"); + return status; } -- cgit v1.2.1