mirror of
https://github.com/git/git.git
synced 2024-11-28 20:44:04 +08:00
62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
|
/*
|
||
|
* zlib wrappers to make sure we don't silently miss errors
|
||
|
* at init time.
|
||
|
*/
|
||
|
#include "cache.h"
|
||
|
|
||
|
void git_inflate_init(z_streamp strm)
|
||
|
{
|
||
|
const char *err;
|
||
|
|
||
|
switch (inflateInit(strm)) {
|
||
|
case Z_OK:
|
||
|
return;
|
||
|
|
||
|
case Z_MEM_ERROR:
|
||
|
err = "out of memory";
|
||
|
break;
|
||
|
case Z_VERSION_ERROR:
|
||
|
err = "wrong version";
|
||
|
break;
|
||
|
default:
|
||
|
err = "error";
|
||
|
}
|
||
|
die("inflateInit: %s (%s)", err, strm->msg ? strm->msg : "no message");
|
||
|
}
|
||
|
|
||
|
void git_inflate_end(z_streamp strm)
|
||
|
{
|
||
|
if (inflateEnd(strm) != Z_OK)
|
||
|
error("inflateEnd: %s", strm->msg ? strm->msg : "failed");
|
||
|
}
|
||
|
|
||
|
int git_inflate(z_streamp strm, int flush)
|
||
|
{
|
||
|
int ret = inflate(strm, flush);
|
||
|
const char *err;
|
||
|
|
||
|
switch (ret) {
|
||
|
/* Out of memory is fatal. */
|
||
|
case Z_MEM_ERROR:
|
||
|
die("inflate: out of memory");
|
||
|
|
||
|
/* 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;
|
||
|
|
||
|
/* Z_BUF_ERROR: normal, needs more space in the output buffer */
|
||
|
case Z_BUF_ERROR:
|
||
|
case Z_OK:
|
||
|
case Z_STREAM_END:
|
||
|
return ret;
|
||
|
}
|
||
|
error("inflate: %s (%s)", err, strm->msg ? strm->msg : "no message");
|
||
|
return ret;
|
||
|
}
|