wrapper: give zlib wrappers their own translation unit
Programs using xmalloc() but not git_inflate() require -lz on the linker command line because git_inflate() is in the same translation unit as xmalloc(). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6bab74e7fb
commit
b0613ce0f9
1
Makefile
1
Makefile
@ -662,6 +662,7 @@ LIB_OBJS += write_or_die.o
|
|||||||
LIB_OBJS += ws.o
|
LIB_OBJS += ws.o
|
||||||
LIB_OBJS += wt-status.o
|
LIB_OBJS += wt-status.o
|
||||||
LIB_OBJS += xdiff-interface.o
|
LIB_OBJS += xdiff-interface.o
|
||||||
|
LIB_OBJS += zlib.o
|
||||||
|
|
||||||
BUILTIN_OBJS += builtin/add.o
|
BUILTIN_OBJS += builtin/add.o
|
||||||
BUILTIN_OBJS += builtin/annotate.o
|
BUILTIN_OBJS += builtin/annotate.o
|
||||||
|
60
wrapper.c
60
wrapper.c
@ -327,66 +327,6 @@ int xmkstemp_mode(char *template, int mode)
|
|||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* zlib wrappers to make sure we don't silently miss errors
|
|
||||||
* at init time.
|
|
||||||
*/
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int warn_if_unremovable(const char *op, const char *file, int rc)
|
static int warn_if_unremovable(const char *op, const char *file, int rc)
|
||||||
{
|
{
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
61
zlib.c
Normal file
61
zlib.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user