the_Foundation [master]
Block: gzip-compatible decompression
9ba83afa531dc64fd20a577628af38b97b0bb969
[1mdiff --git a/include/the_Foundation/block.h b/include/the_Foundation/block.h[m
[1mindex 20cb3bc..58dd23f 100644[m
[1m--- a/include/the_Foundation/block.h[m
[1m+++ b/include/the_Foundation/block.h[m
[36m@@ -141,6 +141,7 @@[m [miBlock * base64Decode_Block (const iBlock *);[m
[m
iBlock * compressLevel_Block (const iBlock *, int level);[m
iBlock * decompress_Block (const iBlock *);[m
[32m+[m[32miBlock * decompressGzip_Block(const iBlock *);[m
[m
iLocalDef iBlock * compress_Block(const iBlock *d) {[m
return compressLevel_Block(d, iBlockDefaultCompressionLevel);[m
[1mdiff --git a/src/block.c b/src/block.c[m
[1mindex 89bc9b9..01b9b75 100644[m
[1m--- a/src/block.c[m
[1m+++ b/src/block.c[m
[36m@@ -620,4 +620,18 @@[m [miBlock *decompress_Block(const iBlock *d) {[m
return out;[m
}[m
[m
[32m+[m[32miBlock *decompressGzip_Block(const iBlock *d) {[m
[32m+[m[32m iBlock *out = new_Block(1024);[m
[32m+[m[32m iZStream z;[m
[32m+[m[32m init_ZStream_(&z, d, out);[m
[32m+[m[32m if (inflateInit2(&z.stream, 16 + MAX_WBITS) == Z_OK) {[m
[32m+[m[32m if (!process_ZStream_(&z, inflate)) {[m
[32m+[m[32m clear_Block(out);[m
[32m+[m[32m }[m
[32m+[m[32m }[m
[32m+[m[32m inflateEnd(&z.stream);[m
[32m+[m[32m return out;[m
[32m+[m[41m [m
[32m+[m[32m}[m
[32m+[m
#endif // HaveZlib[m