Index: third_party/zlib/compress.c |
diff --git a/third_party/zlib/compress.c b/third_party/zlib/compress.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ea4dfbe9d7b3ee2b7b380cc435973aca1976d4c0 |
--- /dev/null |
+++ b/third_party/zlib/compress.c |
@@ -0,0 +1,80 @@ |
+/* compress.c -- compress a memory buffer |
+ * Copyright (C) 1995-2005 Jean-loup Gailly. |
+ * For conditions of distribution and use, see copyright notice in zlib.h |
+ */ |
+ |
+/* @(#) $Id$ */ |
+ |
+#define ZLIB_INTERNAL |
+#include "zlib.h" |
+ |
+/* =========================================================================== |
+ Compresses the source buffer into the destination buffer. The level |
+ parameter has the same meaning as in deflateInit. sourceLen is the byte |
+ length of the source buffer. Upon entry, destLen is the total size of the |
+ destination buffer, which must be at least 0.1% larger than sourceLen plus |
+ 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. |
+ |
+ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough |
+ memory, Z_BUF_ERROR if there was not enough room in the output buffer, |
+ Z_STREAM_ERROR if the level parameter is invalid. |
+*/ |
+int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) |
+ Bytef *dest; |
+ uLongf *destLen; |
+ const Bytef *source; |
+ uLong sourceLen; |
+ int level; |
+{ |
+ z_stream stream; |
+ int err; |
+ |
+ stream.next_in = (Bytef*)source; |
+ stream.avail_in = (uInt)sourceLen; |
+#ifdef MAXSEG_64K |
+ /* Check for source > 64K on 16-bit machine: */ |
+ if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; |
+#endif |
+ stream.next_out = dest; |
+ stream.avail_out = (uInt)*destLen; |
+ if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; |
+ |
+ stream.zalloc = (alloc_func)0; |
+ stream.zfree = (free_func)0; |
+ stream.opaque = (voidpf)0; |
+ |
+ err = deflateInit(&stream, level); |
+ if (err != Z_OK) return err; |
+ |
+ err = deflate(&stream, Z_FINISH); |
+ if (err != Z_STREAM_END) { |
+ deflateEnd(&stream); |
+ return err == Z_OK ? Z_BUF_ERROR : err; |
+ } |
+ *destLen = stream.total_out; |
+ |
+ err = deflateEnd(&stream); |
+ return err; |
+} |
+ |
+/* =========================================================================== |
+ */ |
+int ZEXPORT compress (dest, destLen, source, sourceLen) |
+ Bytef *dest; |
+ uLongf *destLen; |
+ const Bytef *source; |
+ uLong sourceLen; |
+{ |
+ return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); |
+} |
+ |
+/* =========================================================================== |
+ If the default memLevel or windowBits for deflateInit() is changed, then |
+ this function needs to be updated. |
+ */ |
+uLong ZEXPORT compressBound (sourceLen) |
+ uLong sourceLen; |
+{ |
+ return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + |
+ (sourceLen >> 25) + 13; |
+} |