summaryrefslogtreecommitdiff
path: root/zlib.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-06-10 17:45:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-06-10 17:51:02 (GMT)
commit5e86c1fb866ca4bc8d6e015ccbdafd114fd616fa (patch)
tree1acd628b6280d13d2dfae14d704edc1eb1544aa7 /zlib.c
parent9e7e5ca372a0242069ff4e7eccecc7d5fe7ec385 (diff)
downloadgit-5e86c1fb866ca4bc8d6e015ccbdafd114fd616fa.zip
git-5e86c1fb866ca4bc8d6e015ccbdafd114fd616fa.tar.gz
git-5e86c1fb866ca4bc8d6e015ccbdafd114fd616fa.tar.bz2
zlib: wrap inflateInit2 used to accept only for gzip format
http-backend.c uses inflateInit2() to tell the library that it wants to accept only gzip format. Wrap it in a helper function so that readers do not have to wonder what the magic numbers 15 and 16 are for. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'zlib.c')
-rw-r--r--zlib.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/zlib.c b/zlib.c
index be9d7e9..b613cbd 100644
--- a/zlib.c
+++ b/zlib.c
@@ -32,6 +32,21 @@ void git_inflate_init(z_streamp strm)
strm->msg ? strm->msg : "no message");
}
+void git_inflate_init_gzip_only(z_streamp strm)
+{
+ /*
+ * Use default 15 bits, +16 is to accept only gzip and to
+ * yield Z_DATA_ERROR when fed zlib format.
+ */
+ const int windowBits = 15 + 16;
+ int status = inflateInit2(strm, windowBits);
+
+ if (status == Z_OK)
+ return;
+ die("inflateInit2: %s (%s)", zerr_to_string(status),
+ strm->msg ? strm->msg : "no message");
+}
+
void git_inflate_end(z_streamp strm)
{
int status = inflateEnd(strm);