Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/zmod/zmod.c
Show All 31 Lines | |||||
/* | /* | ||||
* Uncompress the buffer 'src' into the buffer 'dst'. The caller must store | * Uncompress the buffer 'src' into the buffer 'dst'. The caller must store | ||||
* the expected decompressed data size externally so it can be passed in. | * the expected decompressed data size externally so it can be passed in. | ||||
* The resulting decompressed size is then returned through dstlen. This | * The resulting decompressed size is then returned through dstlen. This | ||||
* function return Z_OK on success, or another error code on failure. | * function return Z_OK on success, or another error code on failure. | ||||
*/ | */ | ||||
int | int | ||||
z_uncompress(void *dst, size_t *dstlen, const void *src, size_t srclen) | zz_uncompress(void *dst, size_t *dstlen, const void *src, size_t srclen) | ||||
{ | { | ||||
z_stream zs; | z_stream zs; | ||||
int err; | int err; | ||||
bzero(&zs, sizeof (zs)); | bzero(&zs, sizeof (zs)); | ||||
zs.next_in = (uchar_t *)src; | zs.next_in = (uchar_t *)src; | ||||
zs.avail_in = srclen; | zs.avail_in = srclen; | ||||
zs.next_out = dst; | zs.next_out = dst; | ||||
Show All 12 Lines | if ((err = inflate(&zs, Z_FINISH)) != Z_STREAM_END) { | ||||
return (err == Z_OK ? Z_BUF_ERROR : err); | return (err == Z_OK ? Z_BUF_ERROR : err); | ||||
} | } | ||||
*dstlen = zs.total_out; | *dstlen = zs.total_out; | ||||
return (inflateEnd(&zs)); | return (inflateEnd(&zs)); | ||||
} | } | ||||
int | int | ||||
z_compress_level(void *dst, size_t *dstlen, const void *src, size_t srclen, | zz_compress_level(void *dst, size_t *dstlen, const void *src, size_t srclen, | ||||
int level) | int level) | ||||
{ | { | ||||
z_stream zs; | z_stream zs; | ||||
int err; | int err; | ||||
bzero(&zs, sizeof (zs)); | bzero(&zs, sizeof (zs)); | ||||
zs.next_in = (uchar_t *)src; | zs.next_in = (uchar_t *)src; | ||||
Show All 9 Lines | if ((err = deflate(&zs, Z_FINISH)) != Z_STREAM_END) { | ||||
return (err == Z_OK ? Z_BUF_ERROR : err); | return (err == Z_OK ? Z_BUF_ERROR : err); | ||||
} | } | ||||
*dstlen = zs.total_out; | *dstlen = zs.total_out; | ||||
return (deflateEnd(&zs)); | return (deflateEnd(&zs)); | ||||
} | } | ||||
int | int | ||||
z_compress(void *dst, size_t *dstlen, const void *src, size_t srclen) | zz_compress(void *dst, size_t *dstlen, const void *src, size_t srclen) | ||||
{ | { | ||||
return (z_compress_level(dst, dstlen, src, srclen, | return (zz_compress_level(dst, dstlen, src, srclen, | ||||
Z_DEFAULT_COMPRESSION)); | Z_DEFAULT_COMPRESSION)); | ||||
} | } | ||||
/* | /* | ||||
* Convert a zlib error code into a string error message. | * Convert a zlib error code into a string error message. | ||||
*/ | */ | ||||
const char * | const char * | ||||
z_strerror(int err) | z_strerror(int err) | ||||
{ | { | ||||
int i = Z_NEED_DICT - err; | int i = Z_NEED_DICT - err; | ||||
if (i < 0 || i > Z_NEED_DICT - Z_VERSION_ERROR) | if (i < 0 || i > Z_NEED_DICT - Z_VERSION_ERROR) | ||||
return ("unknown error"); | return ("unknown error"); | ||||
return (zError(err)); | return (zError(err)); | ||||
} | } |