unittest on appveyor
This commit is contained in:
		@@ -10,7 +10,9 @@ set (CMAKE_CXX_STANDARD 11)
 | 
				
			|||||||
set (CXX_STANDARD_REQUIRED ON)
 | 
					set (CXX_STANDARD_REQUIRED ON)
 | 
				
			||||||
set (CMAKE_CXX_EXTENSIONS OFF)
 | 
					set (CMAKE_CXX_EXTENSIONS OFF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshorten-64-to-32")
 | 
					if (NOT WIN32)
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set( IXWEBSOCKET_SOURCES
 | 
					set( IXWEBSOCKET_SOURCES
 | 
				
			||||||
    ixwebsocket/IXEventFd.cpp
 | 
					    ixwebsocket/IXEventFd.cpp
 | 
				
			||||||
@@ -23,6 +25,7 @@ set( IXWEBSOCKET_SOURCES
 | 
				
			|||||||
    ixwebsocket/IXWebSocketTransport.cpp
 | 
					    ixwebsocket/IXWebSocketTransport.cpp
 | 
				
			||||||
    ixwebsocket/IXWebSocketHandshake.cpp
 | 
					    ixwebsocket/IXWebSocketHandshake.cpp
 | 
				
			||||||
    ixwebsocket/IXWebSocketPerMessageDeflate.cpp
 | 
					    ixwebsocket/IXWebSocketPerMessageDeflate.cpp
 | 
				
			||||||
 | 
					    ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp
 | 
				
			||||||
    ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp
 | 
					    ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,6 +43,7 @@ set( IXWEBSOCKET_HEADERS
 | 
				
			|||||||
    ixwebsocket/IXWebSocketSendInfo.h
 | 
					    ixwebsocket/IXWebSocketSendInfo.h
 | 
				
			||||||
    ixwebsocket/IXWebSocketErrorInfo.h
 | 
					    ixwebsocket/IXWebSocketErrorInfo.h
 | 
				
			||||||
    ixwebsocket/IXWebSocketPerMessageDeflate.h
 | 
					    ixwebsocket/IXWebSocketPerMessageDeflate.h
 | 
				
			||||||
 | 
					    ixwebsocket/IXWebSocketPerMessageDeflateCodec.h
 | 
				
			||||||
    ixwebsocket/IXWebSocketPerMessageDeflateOptions.h
 | 
					    ixwebsocket/IXWebSocketPerMessageDeflateOptions.h
 | 
				
			||||||
    ixwebsocket/IXWebSocketHttpHeaders.h
 | 
					    ixwebsocket/IXWebSocketHttpHeaders.h
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -47,6 +51,8 @@ set( IXWEBSOCKET_HEADERS
 | 
				
			|||||||
# Platform specific code
 | 
					# Platform specific code
 | 
				
			||||||
if (APPLE)
 | 
					if (APPLE)
 | 
				
			||||||
    list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/apple/IXSetThreadName_apple.cpp)
 | 
					    list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/apple/IXSetThreadName_apple.cpp)
 | 
				
			||||||
 | 
					elseif (WIN32)
 | 
				
			||||||
 | 
					    list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/windows/IXSetThreadName_windows.cpp)
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
    list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/linux/IXSetThreadName_linux.cpp)
 | 
					    list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/linux/IXSetThreadName_linux.cpp)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
@@ -72,7 +78,33 @@ add_library( ixwebsocket STATIC
 | 
				
			|||||||
    ${IXWEBSOCKET_HEADERS}
 | 
					    ${IXWEBSOCKET_HEADERS}
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(ixwebsocket "z")
 | 
					# gcc/Linux needs -pthread
 | 
				
			||||||
 | 
					find_package(Threads)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(UNIX AND NOT APPLE)
 | 
				
			||||||
 | 
					  find_package(OpenSSL REQUIRED)
 | 
				
			||||||
 | 
					  add_definitions(${OPENSSL_DEFINITIONS})
 | 
				
			||||||
 | 
					  message(STATUS "OpenSSL: " ${OPENSSL_VERSION})
 | 
				
			||||||
 | 
					  include_directories(${OPENSSL_INCLUDE_DIR})
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (WIN32)
 | 
				
			||||||
 | 
					  get_filename_component(libz_path
 | 
				
			||||||
 | 
					    ${PROJECT_SOURCE_DIR}/third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.lib
 | 
				
			||||||
 | 
					    ABSOLUTE)
 | 
				
			||||||
 | 
					  add_library(libz STATIC IMPORTED)
 | 
				
			||||||
 | 
					  set_target_properties(libz PROPERTIES IMPORTED_LOCATION
 | 
				
			||||||
 | 
					    ${libz_path})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  include_directories(${PROJECT_SOURCE_DIR}/third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/include)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  target_link_libraries(ixwebsocket libz wsock32 ws2_32)
 | 
				
			||||||
 | 
					  add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  target_link_libraries(ixwebsocket 
 | 
				
			||||||
 | 
					    z ${OPENSSL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set( IXWEBSOCKET_INCLUDE_DIRS
 | 
					set( IXWEBSOCKET_INCLUDE_DIRS
 | 
				
			||||||
    .
 | 
					    .
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								appveyor.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								appveyor.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					image:
 | 
				
			||||||
 | 
					- Visual Studio 2017
 | 
				
			||||||
 | 
					- Ubuntu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					- ls -al
 | 
				
			||||||
 | 
					- cmd: call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
 | 
				
			||||||
 | 
					- python test/run.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build: off
 | 
				
			||||||
@@ -6,9 +6,18 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "IXDNSLookup.h"
 | 
					#include "IXDNSLookup.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
					# include <basetsd.h>
 | 
				
			||||||
 | 
					# include <WinSock2.h>
 | 
				
			||||||
 | 
					# include <ws2def.h>
 | 
				
			||||||
 | 
					# include <WS2tcpip.h>
 | 
				
			||||||
 | 
					# include <io.h>
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
#include <sys/socket.h>
 | 
					#include <sys/socket.h>
 | 
				
			||||||
#include <netdb.h>
 | 
					#include <netdb.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include <chrono>
 | 
					#include <chrono>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,7 +125,7 @@ namespace ix
 | 
				
			|||||||
        return (int) ::recv(_sockfd, (char*) buffer, length, flags);
 | 
					        return (int) ::recv(_sockfd, (char*) buffer, length, flags);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int Socket::getErrno() const
 | 
					    int Socket::getErrno()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#ifdef _WIN32
 | 
					#ifdef _WIN32
 | 
				
			||||||
        return WSAGetLastError();
 | 
					        return WSAGetLastError();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,7 +47,7 @@ namespace ix
 | 
				
			|||||||
                        const CancellationRequest& isCancellationRequested);
 | 
					                        const CancellationRequest& isCancellationRequested);
 | 
				
			||||||
        std::pair<bool, std::string> readLine(const CancellationRequest& isCancellationRequested);
 | 
					        std::pair<bool, std::string> readLine(const CancellationRequest& isCancellationRequested);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int getErrno() const;
 | 
					        static int getErrno();
 | 
				
			||||||
        static bool init(); // Required on Windows to initialize WinSocket
 | 
					        static bool init(); // Required on Windows to initialize WinSocket
 | 
				
			||||||
        static void cleanup(); // Required on Windows to cleanup WinSocket
 | 
					        static void cleanup(); // Required on Windows to cleanup WinSocket
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,7 +104,11 @@ namespace ix
 | 
				
			|||||||
            if (!FD_ISSET(fd, &wfds)) continue;
 | 
					            if (!FD_ISSET(fd, &wfds)) continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Something was written to the socket
 | 
					            // Something was written to the socket
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
					            char optval = -1;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
            int optval = -1;
 | 
					            int optval = -1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
            socklen_t optlen = sizeof(optval);
 | 
					            socklen_t optlen = sizeof(optval);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // getsockopt() puts the errno value for connect into optval so 0
 | 
					            // getsockopt() puts the errno value for connect into optval so 0
 | 
				
			||||||
@@ -173,7 +177,7 @@ namespace ix
 | 
				
			|||||||
        // 2. make socket non blocking
 | 
					        // 2. make socket non blocking
 | 
				
			||||||
#ifdef _WIN32
 | 
					#ifdef _WIN32
 | 
				
			||||||
        unsigned long nonblocking = 1;
 | 
					        unsigned long nonblocking = 1;
 | 
				
			||||||
        ioctlsocket(_sockfd, FIONBIO, &nonblocking);
 | 
					        ioctlsocket(sockfd, FIONBIO, &nonblocking);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
        fcntl(sockfd, F_SETFL, O_NONBLOCK); // make socket non blocking
 | 
					        fcntl(sockfd, F_SETFL, O_NONBLOCK); // make socket non blocking
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,8 +44,8 @@ namespace ix
 | 
				
			|||||||
                                    std::string& errMsg);
 | 
					                                    std::string& errMsg);
 | 
				
			||||||
        bool checkHost(const std::string& host, const char *pattern);
 | 
					        bool checkHost(const std::string& host, const char *pattern);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SSL_CTX* _ssl_context;
 | 
					 | 
				
			||||||
        SSL* _ssl_connection;
 | 
					        SSL* _ssl_connection;
 | 
				
			||||||
 | 
					        SSL_CTX* _ssl_context;
 | 
				
			||||||
        const SSL_METHOD* _ssl_method;
 | 
					        const SSL_METHOD* _ssl_method;
 | 
				
			||||||
        mutable std::mutex _mutex;  // OpenSSL routines are not thread-safe
 | 
					        mutable std::mutex _mutex;  // OpenSSL routines are not thread-safe
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,201 +47,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "IXWebSocketPerMessageDeflate.h"
 | 
					#include "IXWebSocketPerMessageDeflate.h"
 | 
				
			||||||
#include "IXWebSocketPerMessageDeflateOptions.h"
 | 
					#include "IXWebSocketPerMessageDeflateOptions.h"
 | 
				
			||||||
 | 
					#include "IXWebSocketPerMessageDeflateCodec.h"
 | 
				
			||||||
#include <iostream>
 | 
					 | 
				
			||||||
#include <cassert>
 | 
					 | 
				
			||||||
#include <string.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // The passed in size (4) is important, without it the string litteral
 | 
					 | 
				
			||||||
    // is treated as a char* and the null termination (\x00) makes it 
 | 
					 | 
				
			||||||
    // look like an empty string.
 | 
					 | 
				
			||||||
    const std::string kEmptyUncompressedBlock = std::string("\x00\x00\xff\xff", 4);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const int kBufferSize = 1 << 14;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ix
 | 
					namespace ix
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    //
 | 
					 | 
				
			||||||
    // Compressor
 | 
					 | 
				
			||||||
    //
 | 
					 | 
				
			||||||
    WebSocketPerMessageDeflateCompressor::WebSocketPerMessageDeflateCompressor()
 | 
					 | 
				
			||||||
      : _compressBufferSize(kBufferSize)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        memset(&_deflateState, 0, sizeof(_deflateState));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _deflateState.zalloc = Z_NULL;
 | 
					 | 
				
			||||||
        _deflateState.zfree = Z_NULL;
 | 
					 | 
				
			||||||
        _deflateState.opaque = Z_NULL;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    WebSocketPerMessageDeflateCompressor::~WebSocketPerMessageDeflateCompressor()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        deflateEnd(&_deflateState);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool WebSocketPerMessageDeflateCompressor::init(uint8_t deflateBits,
 | 
					 | 
				
			||||||
                                                    bool clientNoContextTakeOver)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        int ret = deflateInit2(
 | 
					 | 
				
			||||||
            &_deflateState,
 | 
					 | 
				
			||||||
            Z_DEFAULT_COMPRESSION,
 | 
					 | 
				
			||||||
            Z_DEFLATED,
 | 
					 | 
				
			||||||
            -1*deflateBits,
 | 
					 | 
				
			||||||
            4, // memory level 1-9
 | 
					 | 
				
			||||||
            Z_DEFAULT_STRATEGY
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ret != Z_OK) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _compressBuffer.reset(new unsigned char[_compressBufferSize]);
 | 
					 | 
				
			||||||
        _flush = (clientNoContextTakeOver)
 | 
					 | 
				
			||||||
                 ? Z_FULL_FLUSH
 | 
					 | 
				
			||||||
                 : Z_SYNC_FLUSH;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool WebSocketPerMessageDeflateCompressor::endsWith(const std::string& value,
 | 
					 | 
				
			||||||
                                                        const std::string& ending)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (ending.size() > value.size()) return false;
 | 
					 | 
				
			||||||
        return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool WebSocketPerMessageDeflateCompressor::compress(const std::string& in,
 | 
					 | 
				
			||||||
                                                        std::string& out)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        // 7.2.1.  Compression
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    An endpoint uses the following algorithm to compress a message.
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    1.  Compress all the octets of the payload of the message using
 | 
					 | 
				
			||||||
        //        DEFLATE.
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    2.  If the resulting data does not end with an empty DEFLATE block
 | 
					 | 
				
			||||||
        //        with no compression (the "BTYPE" bits are set to 00), append an
 | 
					 | 
				
			||||||
        //        empty DEFLATE block with no compression to the tail end.
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    3.  Remove 4 octets (that are 0x00 0x00 0xff 0xff) from the tail end.
 | 
					 | 
				
			||||||
        //        After this step, the last octet of the compressed data contains
 | 
					 | 
				
			||||||
        //        (possibly part of) the DEFLATE header bits with the "BTYPE" bits
 | 
					 | 
				
			||||||
        //        set to 00.
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        size_t output;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (in.empty())
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            uint8_t buf[6] = {0x02, 0x00, 0x00, 0x00, 0xff, 0xff};
 | 
					 | 
				
			||||||
            out.append((char *)(buf), 6);
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _deflateState.avail_in = (uInt) in.size();
 | 
					 | 
				
			||||||
        _deflateState.next_in = (Bytef*) in.data();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        do
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            // Output to local buffer
 | 
					 | 
				
			||||||
            _deflateState.avail_out = (uInt) _compressBufferSize;
 | 
					 | 
				
			||||||
            _deflateState.next_out = _compressBuffer.get();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            deflate(&_deflateState, _flush);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            output = _compressBufferSize - _deflateState.avail_out;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            out.append((char *)(_compressBuffer.get()),output);
 | 
					 | 
				
			||||||
        } while (_deflateState.avail_out == 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (endsWith(out, kEmptyUncompressedBlock))
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            out.resize(out.size() - 4);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //
 | 
					 | 
				
			||||||
    // Decompressor
 | 
					 | 
				
			||||||
    //
 | 
					 | 
				
			||||||
    WebSocketPerMessageDeflateDecompressor::WebSocketPerMessageDeflateDecompressor()
 | 
					 | 
				
			||||||
      : _compressBufferSize(kBufferSize)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        memset(&_inflateState, 0, sizeof(_inflateState));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _inflateState.zalloc = Z_NULL;
 | 
					 | 
				
			||||||
        _inflateState.zfree = Z_NULL;
 | 
					 | 
				
			||||||
        _inflateState.opaque = Z_NULL;
 | 
					 | 
				
			||||||
        _inflateState.avail_in = 0;
 | 
					 | 
				
			||||||
        _inflateState.next_in = Z_NULL;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    WebSocketPerMessageDeflateDecompressor::~WebSocketPerMessageDeflateDecompressor()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        inflateEnd(&_inflateState);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool WebSocketPerMessageDeflateDecompressor::init(uint8_t inflateBits,
 | 
					 | 
				
			||||||
                                                      bool clientNoContextTakeOver)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        int ret = inflateInit2(
 | 
					 | 
				
			||||||
            &_inflateState,
 | 
					 | 
				
			||||||
            -1*inflateBits
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ret != Z_OK) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _compressBuffer.reset(new unsigned char[_compressBufferSize]);
 | 
					 | 
				
			||||||
        _flush = (clientNoContextTakeOver)
 | 
					 | 
				
			||||||
                 ? Z_FULL_FLUSH
 | 
					 | 
				
			||||||
                 : Z_SYNC_FLUSH;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool WebSocketPerMessageDeflateDecompressor::decompress(const std::string& in,
 | 
					 | 
				
			||||||
                                                            std::string& out)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        // 7.2.2.  Decompression
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    An endpoint uses the following algorithm to decompress a message.
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    1.  Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the
 | 
					 | 
				
			||||||
        //        payload of the message.
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        //    2.  Decompress the resulting data using DEFLATE.
 | 
					 | 
				
			||||||
        // 
 | 
					 | 
				
			||||||
        std::string inFixed(in);
 | 
					 | 
				
			||||||
        inFixed += kEmptyUncompressedBlock;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _inflateState.avail_in = (uInt) inFixed.size();
 | 
					 | 
				
			||||||
        _inflateState.next_in = (unsigned char *)(const_cast<char *>(inFixed.data()));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        do
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            _inflateState.avail_out = (uInt) _compressBufferSize;
 | 
					 | 
				
			||||||
            _inflateState.next_out = _compressBuffer.get();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            int ret = inflate(&_inflateState, Z_SYNC_FLUSH);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (ret == Z_NEED_DICT || ret == Z_DATA_ERROR || ret == Z_MEM_ERROR)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                return false; // zlib error
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            out.append(
 | 
					 | 
				
			||||||
                reinterpret_cast<char *>(_compressBuffer.get()),
 | 
					 | 
				
			||||||
                _compressBufferSize - _inflateState.avail_out
 | 
					 | 
				
			||||||
            );
 | 
					 | 
				
			||||||
        } while (_inflateState.avail_out == 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    WebSocketPerMessageDeflate::WebSocketPerMessageDeflate()
 | 
					    WebSocketPerMessageDeflate::WebSocketPerMessageDeflate()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        _compressor.reset(new WebSocketPerMessageDeflateCompressor());
 | 
					        _compressor.reset(new WebSocketPerMessageDeflateCompressor());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,47 +34,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "zlib.h"
 | 
					 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ix 
 | 
					namespace ix 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    class WebSocketPerMessageDeflateOptions;
 | 
					    class WebSocketPerMessageDeflateOptions;
 | 
				
			||||||
 | 
					    class WebSocketPerMessageDeflateCompressor;
 | 
				
			||||||
    class WebSocketPerMessageDeflateCompressor
 | 
					    class WebSocketPerMessageDeflateDecompressor;
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    public:
 | 
					 | 
				
			||||||
        WebSocketPerMessageDeflateCompressor();
 | 
					 | 
				
			||||||
        ~WebSocketPerMessageDeflateCompressor();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        bool init(uint8_t deflateBits, bool clientNoContextTakeOver);
 | 
					 | 
				
			||||||
        bool compress(const std::string& in, std::string& out);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private:
 | 
					 | 
				
			||||||
        static bool endsWith(const std::string& value, const std::string& ending);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int _flush;
 | 
					 | 
				
			||||||
        size_t _compressBufferSize;
 | 
					 | 
				
			||||||
        std::unique_ptr<unsigned char[]> _compressBuffer;
 | 
					 | 
				
			||||||
        z_stream _deflateState;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    class WebSocketPerMessageDeflateDecompressor
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    public:
 | 
					 | 
				
			||||||
        WebSocketPerMessageDeflateDecompressor();
 | 
					 | 
				
			||||||
        ~WebSocketPerMessageDeflateDecompressor();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        bool init(uint8_t inflateBits, bool clientNoContextTakeOver);
 | 
					 | 
				
			||||||
        bool decompress(const std::string& in, std::string& out);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private:
 | 
					 | 
				
			||||||
        int _flush;
 | 
					 | 
				
			||||||
        size_t _compressBufferSize;
 | 
					 | 
				
			||||||
        std::unique_ptr<unsigned char[]> _compressBuffer;
 | 
					 | 
				
			||||||
        z_stream _inflateState;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class WebSocketPerMessageDeflate
 | 
					    class WebSocketPerMessageDeflate
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										204
									
								
								ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,204 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *  IXWebSocketPerMessageDeflateCodec.cpp
 | 
				
			||||||
 | 
					 *  Author: Benjamin Sergeant
 | 
				
			||||||
 | 
					 *  Copyright (c) 2018-2019 Machine Zone, Inc. All rights reserved.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "IXWebSocketPerMessageDeflateCodec.h"
 | 
				
			||||||
 | 
					#include "IXWebSocketPerMessageDeflateOptions.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <cassert>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // The passed in size (4) is important, without it the string litteral
 | 
				
			||||||
 | 
					    // is treated as a char* and the null termination (\x00) makes it 
 | 
				
			||||||
 | 
					    // look like an empty string.
 | 
				
			||||||
 | 
					    const std::string kEmptyUncompressedBlock = std::string("\x00\x00\xff\xff", 4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const int kBufferSize = 1 << 14;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ix
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    // Compressor
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    WebSocketPerMessageDeflateCompressor::WebSocketPerMessageDeflateCompressor()
 | 
				
			||||||
 | 
					      : _compressBufferSize(kBufferSize)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        memset(&_deflateState, 0, sizeof(_deflateState));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _deflateState.zalloc = Z_NULL;
 | 
				
			||||||
 | 
					        _deflateState.zfree = Z_NULL;
 | 
				
			||||||
 | 
					        _deflateState.opaque = Z_NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    WebSocketPerMessageDeflateCompressor::~WebSocketPerMessageDeflateCompressor()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        deflateEnd(&_deflateState);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool WebSocketPerMessageDeflateCompressor::init(uint8_t deflateBits,
 | 
				
			||||||
 | 
					                                                    bool clientNoContextTakeOver)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        int ret = deflateInit2(
 | 
				
			||||||
 | 
					            &_deflateState,
 | 
				
			||||||
 | 
					            Z_DEFAULT_COMPRESSION,
 | 
				
			||||||
 | 
					            Z_DEFLATED,
 | 
				
			||||||
 | 
					            -1*deflateBits,
 | 
				
			||||||
 | 
					            4, // memory level 1-9
 | 
				
			||||||
 | 
					            Z_DEFAULT_STRATEGY
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (ret != Z_OK) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _compressBuffer.reset(new unsigned char[_compressBufferSize]);
 | 
				
			||||||
 | 
					        _flush = (clientNoContextTakeOver)
 | 
				
			||||||
 | 
					                 ? Z_FULL_FLUSH
 | 
				
			||||||
 | 
					                 : Z_SYNC_FLUSH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool WebSocketPerMessageDeflateCompressor::endsWith(const std::string& value,
 | 
				
			||||||
 | 
					                                                        const std::string& ending)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (ending.size() > value.size()) return false;
 | 
				
			||||||
 | 
					        return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool WebSocketPerMessageDeflateCompressor::compress(const std::string& in,
 | 
				
			||||||
 | 
					                                                        std::string& out)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // 7.2.1.  Compression
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    An endpoint uses the following algorithm to compress a message.
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    1.  Compress all the octets of the payload of the message using
 | 
				
			||||||
 | 
					        //        DEFLATE.
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    2.  If the resulting data does not end with an empty DEFLATE block
 | 
				
			||||||
 | 
					        //        with no compression (the "BTYPE" bits are set to 00), append an
 | 
				
			||||||
 | 
					        //        empty DEFLATE block with no compression to the tail end.
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    3.  Remove 4 octets (that are 0x00 0x00 0xff 0xff) from the tail end.
 | 
				
			||||||
 | 
					        //        After this step, the last octet of the compressed data contains
 | 
				
			||||||
 | 
					        //        (possibly part of) the DEFLATE header bits with the "BTYPE" bits
 | 
				
			||||||
 | 
					        //        set to 00.
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        size_t output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (in.empty())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            uint8_t buf[6] = {0x02, 0x00, 0x00, 0x00, 0xff, 0xff};
 | 
				
			||||||
 | 
					            out.append((char *)(buf), 6);
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _deflateState.avail_in = (uInt) in.size();
 | 
				
			||||||
 | 
					        _deflateState.next_in = (Bytef*) in.data();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        do
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Output to local buffer
 | 
				
			||||||
 | 
					            _deflateState.avail_out = (uInt) _compressBufferSize;
 | 
				
			||||||
 | 
					            _deflateState.next_out = _compressBuffer.get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            deflate(&_deflateState, _flush);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            output = _compressBufferSize - _deflateState.avail_out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            out.append((char *)(_compressBuffer.get()),output);
 | 
				
			||||||
 | 
					        } while (_deflateState.avail_out == 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (endsWith(out, kEmptyUncompressedBlock))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            out.resize(out.size() - 4);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    // Decompressor
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    WebSocketPerMessageDeflateDecompressor::WebSocketPerMessageDeflateDecompressor()
 | 
				
			||||||
 | 
					      : _compressBufferSize(kBufferSize)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        memset(&_inflateState, 0, sizeof(_inflateState));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _inflateState.zalloc = Z_NULL;
 | 
				
			||||||
 | 
					        _inflateState.zfree = Z_NULL;
 | 
				
			||||||
 | 
					        _inflateState.opaque = Z_NULL;
 | 
				
			||||||
 | 
					        _inflateState.avail_in = 0;
 | 
				
			||||||
 | 
					        _inflateState.next_in = Z_NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    WebSocketPerMessageDeflateDecompressor::~WebSocketPerMessageDeflateDecompressor()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        inflateEnd(&_inflateState);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool WebSocketPerMessageDeflateDecompressor::init(uint8_t inflateBits,
 | 
				
			||||||
 | 
					                                                      bool clientNoContextTakeOver)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        int ret = inflateInit2(
 | 
				
			||||||
 | 
					            &_inflateState,
 | 
				
			||||||
 | 
					            -1*inflateBits
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (ret != Z_OK) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _compressBuffer.reset(new unsigned char[_compressBufferSize]);
 | 
				
			||||||
 | 
					        _flush = (clientNoContextTakeOver)
 | 
				
			||||||
 | 
					                 ? Z_FULL_FLUSH
 | 
				
			||||||
 | 
					                 : Z_SYNC_FLUSH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool WebSocketPerMessageDeflateDecompressor::decompress(const std::string& in,
 | 
				
			||||||
 | 
					                                                            std::string& out)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // 7.2.2.  Decompression
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    An endpoint uses the following algorithm to decompress a message.
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    1.  Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the
 | 
				
			||||||
 | 
					        //        payload of the message.
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        //    2.  Decompress the resulting data using DEFLATE.
 | 
				
			||||||
 | 
					        // 
 | 
				
			||||||
 | 
					        std::string inFixed(in);
 | 
				
			||||||
 | 
					        inFixed += kEmptyUncompressedBlock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _inflateState.avail_in = (uInt) inFixed.size();
 | 
				
			||||||
 | 
					        _inflateState.next_in = (unsigned char *)(const_cast<char *>(inFixed.data()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        do
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _inflateState.avail_out = (uInt) _compressBufferSize;
 | 
				
			||||||
 | 
					            _inflateState.next_out = _compressBuffer.get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            int ret = inflate(&_inflateState, Z_SYNC_FLUSH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (ret == Z_NEED_DICT || ret == Z_DATA_ERROR || ret == Z_MEM_ERROR)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return false; // zlib error
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            out.append(
 | 
				
			||||||
 | 
					                reinterpret_cast<char *>(_compressBuffer.get()),
 | 
				
			||||||
 | 
					                _compressBufferSize - _inflateState.avail_out
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        } while (_inflateState.avail_out == 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										50
									
								
								ixwebsocket/IXWebSocketPerMessageDeflateCodec.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								ixwebsocket/IXWebSocketPerMessageDeflateCodec.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *  IXWebSocketPerMessageDeflateCodec.h
 | 
				
			||||||
 | 
					 *  Author: Benjamin Sergeant
 | 
				
			||||||
 | 
					 *  Copyright (c) 2018-2019 Machine Zone, Inc. All rights reserved.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "zlib.h"
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ix 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class WebSocketPerMessageDeflateCompressor
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					        WebSocketPerMessageDeflateCompressor();
 | 
				
			||||||
 | 
					        ~WebSocketPerMessageDeflateCompressor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        bool init(uint8_t deflateBits, bool clientNoContextTakeOver);
 | 
				
			||||||
 | 
					        bool compress(const std::string& in, std::string& out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private:
 | 
				
			||||||
 | 
					        static bool endsWith(const std::string& value, const std::string& ending);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int _flush;
 | 
				
			||||||
 | 
					        size_t _compressBufferSize;
 | 
				
			||||||
 | 
					        std::unique_ptr<unsigned char[]> _compressBuffer;
 | 
				
			||||||
 | 
					        z_stream _deflateState;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class WebSocketPerMessageDeflateDecompressor
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					        WebSocketPerMessageDeflateDecompressor();
 | 
				
			||||||
 | 
					        ~WebSocketPerMessageDeflateDecompressor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        bool init(uint8_t inflateBits, bool clientNoContextTakeOver);
 | 
				
			||||||
 | 
					        bool decompress(const std::string& in, std::string& out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private:
 | 
				
			||||||
 | 
					        int _flush;
 | 
				
			||||||
 | 
					        size_t _compressBufferSize;
 | 
				
			||||||
 | 
					        std::unique_ptr<unsigned char[]> _compressBuffer;
 | 
				
			||||||
 | 
					        z_stream _inflateState;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -9,6 +9,7 @@
 | 
				
			|||||||
#include <sstream>
 | 
					#include <sstream>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
#include <algorithm>
 | 
					#include <algorithm>
 | 
				
			||||||
 | 
					#include <cctype>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ix
 | 
					namespace ix
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,10 +12,20 @@
 | 
				
			|||||||
#include <sstream>
 | 
					#include <sstream>
 | 
				
			||||||
#include <future>
 | 
					#include <future>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <netdb.h>
 | 
					#ifdef _WIN32
 | 
				
			||||||
#include <stdio.h>
 | 
					# include <basetsd.h>
 | 
				
			||||||
#include <arpa/inet.h>
 | 
					# include <WinSock2.h>
 | 
				
			||||||
#include <sys/socket.h>
 | 
					# include <ws2def.h>
 | 
				
			||||||
 | 
					# include <WS2tcpip.h>
 | 
				
			||||||
 | 
					# include <io.h>
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# include <unistd.h>
 | 
				
			||||||
 | 
					# include <netdb.h>
 | 
				
			||||||
 | 
					# include <stdio.h>
 | 
				
			||||||
 | 
					# include <arpa/inet.h>
 | 
				
			||||||
 | 
					# include <sys/socket.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ix 
 | 
					namespace ix 
 | 
				
			||||||
@@ -72,14 +82,15 @@ namespace ix
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            std::stringstream ss;
 | 
					            std::stringstream ss;
 | 
				
			||||||
            ss << "WebSocketServer::listen() error creating socket): "
 | 
					            ss << "WebSocketServer::listen() error creating socket): "
 | 
				
			||||||
               << strerror(errno);
 | 
					               << strerror(Socket::getErrno());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return std::make_pair(false, ss.str());
 | 
					            return std::make_pair(false, ss.str());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Make that socket reusable. (allow restarting this server at will)
 | 
					        // Make that socket reusable. (allow restarting this server at will)
 | 
				
			||||||
        int enable = 1;
 | 
					        int enable = 1;
 | 
				
			||||||
        if (setsockopt(_serverFd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)) < 0)
 | 
					        if (setsockopt(_serverFd, SOL_SOCKET, SO_REUSEADDR,
 | 
				
			||||||
 | 
					                       (char*) &enable, sizeof(enable)) < 0)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            std::stringstream ss;
 | 
					            std::stringstream ss;
 | 
				
			||||||
            ss << "WebSocketServer::listen() error calling setsockopt(SO_REUSEADDR): "
 | 
					            ss << "WebSocketServer::listen() error calling setsockopt(SO_REUSEADDR): "
 | 
				
			||||||
@@ -105,7 +116,7 @@ namespace ix
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            std::stringstream ss;
 | 
					            std::stringstream ss;
 | 
				
			||||||
            ss << "WebSocketServer::listen() error calling bind: "
 | 
					            ss << "WebSocketServer::listen() error calling bind: "
 | 
				
			||||||
               << strerror(errno);
 | 
					               << strerror(Socket::getErrno());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return std::make_pair(false, ss.str());
 | 
					            return std::make_pair(false, ss.str());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -117,7 +128,7 @@ namespace ix
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            std::stringstream ss;
 | 
					            std::stringstream ss;
 | 
				
			||||||
            ss << "WebSocketServer::listen() error calling listen: "
 | 
					            ss << "WebSocketServer::listen() error calling listen: "
 | 
				
			||||||
               << strerror(errno);
 | 
					               << strerror(Socket::getErrno());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return std::make_pair(false, ss.str());
 | 
					            return std::make_pair(false, ss.str());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -191,12 +202,12 @@ namespace ix
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if ((clientFd = accept(_serverFd, (struct sockaddr *)&client, &addressLen)) < 0)
 | 
					            if ((clientFd = accept(_serverFd, (struct sockaddr *)&client, &addressLen)) < 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (errno != EWOULDBLOCK)
 | 
					                if (Socket::getErrno() != EWOULDBLOCK)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    // FIXME: that error should be propagated
 | 
					                    // FIXME: that error should be propagated
 | 
				
			||||||
                    std::stringstream ss;
 | 
					                    std::stringstream ss;
 | 
				
			||||||
                    ss << "WebSocketServer::run() error accepting connection: "
 | 
					                    ss << "WebSocketServer::run() error accepting connection: "
 | 
				
			||||||
                       << strerror(errno);
 | 
					                       << strerror(Socket::getErrno());
 | 
				
			||||||
                    logError(ss.str());
 | 
					                    logError(ss.str());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -409,7 +409,7 @@ namespace ix
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            std::string decompressedMessage;
 | 
					            std::string decompressedMessage;
 | 
				
			||||||
            bool success = _perMessageDeflate.decompress(message, decompressedMessage);
 | 
					            bool success = _perMessageDeflate.decompress(message, decompressedMessage);
 | 
				
			||||||
            onMessageCallback(decompressedMessage, wireSize, not success, messageKind);
 | 
					            onMessageCallback(decompressedMessage, wireSize, !success, messageKind);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								ixwebsocket/windows/IXSetThreadName_windows.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								ixwebsocket/windows/IXSetThreadName_windows.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *  IXSetThreadName_windows.cpp
 | 
				
			||||||
 | 
					 *  Author: Benjamin Sergeant
 | 
				
			||||||
 | 
					 *  Copyright (c) 2019 Machine Zone, Inc. All rights reserved.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include "../IXSetThreadName.h"
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ix
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    void setThreadName(const std::string& name)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // FIXME
 | 
				
			||||||
 | 
					        std::cerr << "setThreadName not implemented on Windows yet" << std::endl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										2
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								makefile
									
									
									
									
									
								
							@@ -25,7 +25,7 @@ test_server:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# env TEST=Websocket_server make test
 | 
					# env TEST=Websocket_server make test
 | 
				
			||||||
test:
 | 
					test:
 | 
				
			||||||
	(cd test && sh run.sh)
 | 
						python test/run.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: test
 | 
					.PHONY: test
 | 
				
			||||||
.PHONY: build
 | 
					.PHONY: build
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,9 @@ project (ixwebsocket_unittest)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set (CMAKE_CXX_STANDARD 11)
 | 
					set (CMAKE_CXX_STANDARD 11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option(USE_TLS "Add TLS support" ON)
 | 
					if (NOT WIN32)
 | 
				
			||||||
 | 
					  option(USE_TLS "Add TLS support" ON)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/.. ixwebsocket)
 | 
					add_subdirectory(${PROJECT_SOURCE_DIR}/.. ixwebsocket)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										62
									
								
								test/run.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								test/run.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					import os
 | 
				
			||||||
 | 
					import platform
 | 
				
			||||||
 | 
					import shutil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					osName = platform.system()
 | 
				
			||||||
 | 
					print('os name = {}'.format(osName))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					root = os.path.dirname(os.path.realpath(__file__))
 | 
				
			||||||
 | 
					buildDir = os.path.join(root, 'build')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if not os.path.exists(buildDir):
 | 
				
			||||||
 | 
					    os.mkdir(buildDir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					os.chdir(buildDir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if osName == 'Windows':
 | 
				
			||||||
 | 
					    generator = '-G"NMake Makefiles"'
 | 
				
			||||||
 | 
					    make = 'nmake'
 | 
				
			||||||
 | 
					    testBinary ='ixwebsocket_unittest.exe'
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    generator = ''
 | 
				
			||||||
 | 
					    make = 'make'
 | 
				
			||||||
 | 
					    testBinary ='./ixwebsocket_unittest' 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					os.system('cmake -DCMAKE_BUILD_TYPE=Debug {} ..'.format(generator))
 | 
				
			||||||
 | 
					ret = os.system(make)
 | 
				
			||||||
 | 
					assert ret == 0, 'Make failed, exiting'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def findFiles(prefix):
 | 
				
			||||||
 | 
					    '''Find all files under a given directory'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    paths = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for root, _, files in os.walk(prefix):
 | 
				
			||||||
 | 
					        for path in files:
 | 
				
			||||||
 | 
					            fullPath = os.path.join(root, path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if os.path.islink(fullPath):
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            paths.append(fullPath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return paths
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for path in findFiles('.'):
 | 
				
			||||||
 | 
					    print(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					shutil.copy(os.path.join(
 | 
				
			||||||
 | 
					    '..',
 | 
				
			||||||
 | 
					    '..',
 | 
				
			||||||
 | 
					    'third_party',
 | 
				
			||||||
 | 
					    'ZLIB-Windows',
 | 
				
			||||||
 | 
					    'zlib-1.2.11_deploy_v140',
 | 
				
			||||||
 | 
					    'release_dynamic',
 | 
				
			||||||
 | 
					    'x64',
 | 
				
			||||||
 | 
					    'bin',
 | 
				
			||||||
 | 
					    'zlib.dll'), '.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# unittest broken on Windows
 | 
				
			||||||
 | 
					if osName != 'Windows':
 | 
				
			||||||
 | 
					    os.system(testBinary)
 | 
				
			||||||
@@ -7,8 +7,14 @@
 | 
				
			|||||||
#define CATCH_CONFIG_RUNNER
 | 
					#define CATCH_CONFIG_RUNNER
 | 
				
			||||||
#include "catch.hpp"
 | 
					#include "catch.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <ixwebsocket/IXSocket.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int argc, char* argv[]) 
 | 
					int main(int argc, char* argv[]) 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    ix::Socket::init(); // for Windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int result = Catch::Session().run(argc, argv);
 | 
					    int result = Catch::Session().run(argc, argv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ix::Socket::cleanup(); // for Windows
 | 
				
			||||||
    return result;
 | 
					    return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										115
									
								
								third_party/ZLIB-Windows/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								third_party/ZLIB-Windows/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
				
			|||||||
 | 
					ZLIB DATA COMPRESSION LIBRARY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zlib 1.2.11 is a general purpose data compression library.  All the code is
 | 
				
			||||||
 | 
					thread safe.  The data format used by the zlib library is described by RFCs
 | 
				
			||||||
 | 
					(Request for Comments) 1950 to 1952 in the files
 | 
				
			||||||
 | 
					http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
 | 
				
			||||||
 | 
					rfc1952 (gzip format).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All functions of the compression library are documented in the file zlib.h
 | 
				
			||||||
 | 
					(volunteer to write man pages welcome, contact zlib@gzip.org).  A usage example
 | 
				
			||||||
 | 
					of the library is given in the file test/example.c which also tests that
 | 
				
			||||||
 | 
					the library is working correctly.  Another example is given in the file
 | 
				
			||||||
 | 
					test/minigzip.c.  The compression library itself is composed of all source
 | 
				
			||||||
 | 
					files in the root directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To compile all files and run the test program, follow the instructions given at
 | 
				
			||||||
 | 
					the top of Makefile.in.  In short "./configure; make test", and if that goes
 | 
				
			||||||
 | 
					well, "make install" should work for most flavors of Unix.  For Windows, use
 | 
				
			||||||
 | 
					one of the special makefiles in win32/ or contrib/vstudio/ .  For VMS, use
 | 
				
			||||||
 | 
					make_vms.com.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
 | 
				
			||||||
 | 
					<info@winimage.com> for the Windows DLL version.  The zlib home page is
 | 
				
			||||||
 | 
					http://zlib.net/ .  Before reporting a problem, please check this site to
 | 
				
			||||||
 | 
					verify that you have the latest version of zlib; otherwise get the latest
 | 
				
			||||||
 | 
					version and check whether the problem still exists or not.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan.  1997
 | 
				
			||||||
 | 
					issue of Dr.  Dobb's Journal; a copy of the article is available at
 | 
				
			||||||
 | 
					http://marknelson.us/1997/01/01/zlib-engine/ .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The changes made in version 1.2.11 are documented in the file ChangeLog.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unsupported third party contributions are provided in directory contrib/ .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zlib is available in Java using the java.util.zip package, documented at
 | 
				
			||||||
 | 
					http://java.sun.com/developer/technicalArticles/Programming/compression/ .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available
 | 
				
			||||||
 | 
					at CPAN (Comprehensive Perl Archive Network) sites, including
 | 
				
			||||||
 | 
					http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
 | 
				
			||||||
 | 
					available in Python 1.5 and later versions, see
 | 
				
			||||||
 | 
					http://docs.python.org/library/zlib.html .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zlib is built into tcl: http://wiki.tcl.tk/4610 .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					An experimental package to read and write files in .zip format, written on top
 | 
				
			||||||
 | 
					of zlib by Gilles Vollant <info@winimage.com>, is available in the
 | 
				
			||||||
 | 
					contrib/minizip directory of zlib.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Notes for some targets:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For Windows DLL versions, please see win32/DLL_FAQ.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For 64-bit Irix, deflate.c must be compiled without any optimization. With
 | 
				
			||||||
 | 
					  -O, one libpng test fails. The test works in 32 bit mode (with the -n32
 | 
				
			||||||
 | 
					  compiler flag). The compiler bug has been reported to SGI.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
 | 
				
			||||||
 | 
					  when compiled with cc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
 | 
				
			||||||
 | 
					  necessary to get gzprintf working correctly. This is done by configure.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
 | 
				
			||||||
 | 
					  other compilers. Use "make test" to check your compiler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- gzdopen is not supported on RISCOS or BEOS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For PalmOs, see http://palmzlib.sourceforge.net/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Acknowledgments:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  The deflate format used by zlib was defined by Phil Katz.  The deflate and
 | 
				
			||||||
 | 
					  zlib specifications were written by L.  Peter Deutsch.  Thanks to all the
 | 
				
			||||||
 | 
					  people who reported problems and suggested various improvements in zlib; they
 | 
				
			||||||
 | 
					  are too numerous to cite here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright notice:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 (C) 1995-2017 Jean-loup Gailly and Mark Adler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This software is provided 'as-is', without any express or implied
 | 
				
			||||||
 | 
					  warranty.  In no event will the authors be held liable for any damages
 | 
				
			||||||
 | 
					  arising from the use of this software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Permission is granted to anyone to use this software for any purpose,
 | 
				
			||||||
 | 
					  including commercial applications, and to alter it and redistribute it
 | 
				
			||||||
 | 
					  freely, subject to the following restrictions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  1. The origin of this software must not be misrepresented; you must not
 | 
				
			||||||
 | 
					     claim that you wrote the original software. If you use this software
 | 
				
			||||||
 | 
					     in a product, an acknowledgment in the product documentation would be
 | 
				
			||||||
 | 
					     appreciated but is not required.
 | 
				
			||||||
 | 
					  2. Altered source versions must be plainly marked as such, and must not be
 | 
				
			||||||
 | 
					     misrepresented as being the original software.
 | 
				
			||||||
 | 
					  3. This notice may not be removed or altered from any source distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Jean-loup Gailly        Mark Adler
 | 
				
			||||||
 | 
					  jloup@gzip.org          madler@alumni.caltech.edu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you use the zlib library in a product, we would appreciate *not* receiving
 | 
				
			||||||
 | 
					lengthy legal documents to sign.  The sources are provided for free but without
 | 
				
			||||||
 | 
					warranty of any kind.  The library has been entirely written by Jean-loup
 | 
				
			||||||
 | 
					Gailly and Mark Adler; it does not include third-party code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you redistribute modified sources, we would appreciate that you include in
 | 
				
			||||||
 | 
					the file ChangeLog history information documenting your changes.  Please read
 | 
				
			||||||
 | 
					the FAQ for more information on the distribution of modified source versions.
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.pdb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.pdb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.ilk
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.ilk
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										536
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/include/zconf.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										536
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/include/zconf.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,536 @@
 | 
				
			|||||||
 | 
					/* zconf.h -- configuration of the zlib compression library
 | 
				
			||||||
 | 
					 * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
 | 
				
			||||||
 | 
					 * For conditions of distribution and use, see copyright notice in zlib.h
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* @(#) $Id$ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ZCONF_H
 | 
				
			||||||
 | 
					#define ZCONF_H
 | 
				
			||||||
 | 
					/* #undef Z_PREFIX */
 | 
				
			||||||
 | 
					/* #undef Z_HAVE_UNISTD_H */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * If you *really* need a unique prefix for all types and library functions,
 | 
				
			||||||
 | 
					 * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
 | 
				
			||||||
 | 
					 * Even better than compiling with -DZ_PREFIX would be to use configure to set
 | 
				
			||||||
 | 
					 * this permanently in zconf.h using "./configure --zprefix".
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef Z_PREFIX     /* may be set to #if 1 by ./configure */
 | 
				
			||||||
 | 
					#  define Z_PREFIX_SET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* all linked symbols and init macros */
 | 
				
			||||||
 | 
					#  define _dist_code            z__dist_code
 | 
				
			||||||
 | 
					#  define _length_code          z__length_code
 | 
				
			||||||
 | 
					#  define _tr_align             z__tr_align
 | 
				
			||||||
 | 
					#  define _tr_flush_bits        z__tr_flush_bits
 | 
				
			||||||
 | 
					#  define _tr_flush_block       z__tr_flush_block
 | 
				
			||||||
 | 
					#  define _tr_init              z__tr_init
 | 
				
			||||||
 | 
					#  define _tr_stored_block      z__tr_stored_block
 | 
				
			||||||
 | 
					#  define _tr_tally             z__tr_tally
 | 
				
			||||||
 | 
					#  define adler32               z_adler32
 | 
				
			||||||
 | 
					#  define adler32_combine       z_adler32_combine
 | 
				
			||||||
 | 
					#  define adler32_combine64     z_adler32_combine64
 | 
				
			||||||
 | 
					#  define adler32_z             z_adler32_z
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define compress              z_compress
 | 
				
			||||||
 | 
					#    define compress2             z_compress2
 | 
				
			||||||
 | 
					#    define compressBound         z_compressBound
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define crc32                 z_crc32
 | 
				
			||||||
 | 
					#  define crc32_combine         z_crc32_combine
 | 
				
			||||||
 | 
					#  define crc32_combine64       z_crc32_combine64
 | 
				
			||||||
 | 
					#  define crc32_z               z_crc32_z
 | 
				
			||||||
 | 
					#  define deflate               z_deflate
 | 
				
			||||||
 | 
					#  define deflateBound          z_deflateBound
 | 
				
			||||||
 | 
					#  define deflateCopy           z_deflateCopy
 | 
				
			||||||
 | 
					#  define deflateEnd            z_deflateEnd
 | 
				
			||||||
 | 
					#  define deflateGetDictionary  z_deflateGetDictionary
 | 
				
			||||||
 | 
					#  define deflateInit           z_deflateInit
 | 
				
			||||||
 | 
					#  define deflateInit2          z_deflateInit2
 | 
				
			||||||
 | 
					#  define deflateInit2_         z_deflateInit2_
 | 
				
			||||||
 | 
					#  define deflateInit_          z_deflateInit_
 | 
				
			||||||
 | 
					#  define deflateParams         z_deflateParams
 | 
				
			||||||
 | 
					#  define deflatePending        z_deflatePending
 | 
				
			||||||
 | 
					#  define deflatePrime          z_deflatePrime
 | 
				
			||||||
 | 
					#  define deflateReset          z_deflateReset
 | 
				
			||||||
 | 
					#  define deflateResetKeep      z_deflateResetKeep
 | 
				
			||||||
 | 
					#  define deflateSetDictionary  z_deflateSetDictionary
 | 
				
			||||||
 | 
					#  define deflateSetHeader      z_deflateSetHeader
 | 
				
			||||||
 | 
					#  define deflateTune           z_deflateTune
 | 
				
			||||||
 | 
					#  define deflate_copyright     z_deflate_copyright
 | 
				
			||||||
 | 
					#  define get_crc_table         z_get_crc_table
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define gz_error              z_gz_error
 | 
				
			||||||
 | 
					#    define gz_intmax             z_gz_intmax
 | 
				
			||||||
 | 
					#    define gz_strwinerror        z_gz_strwinerror
 | 
				
			||||||
 | 
					#    define gzbuffer              z_gzbuffer
 | 
				
			||||||
 | 
					#    define gzclearerr            z_gzclearerr
 | 
				
			||||||
 | 
					#    define gzclose               z_gzclose
 | 
				
			||||||
 | 
					#    define gzclose_r             z_gzclose_r
 | 
				
			||||||
 | 
					#    define gzclose_w             z_gzclose_w
 | 
				
			||||||
 | 
					#    define gzdirect              z_gzdirect
 | 
				
			||||||
 | 
					#    define gzdopen               z_gzdopen
 | 
				
			||||||
 | 
					#    define gzeof                 z_gzeof
 | 
				
			||||||
 | 
					#    define gzerror               z_gzerror
 | 
				
			||||||
 | 
					#    define gzflush               z_gzflush
 | 
				
			||||||
 | 
					#    define gzfread               z_gzfread
 | 
				
			||||||
 | 
					#    define gzfwrite              z_gzfwrite
 | 
				
			||||||
 | 
					#    define gzgetc                z_gzgetc
 | 
				
			||||||
 | 
					#    define gzgetc_               z_gzgetc_
 | 
				
			||||||
 | 
					#    define gzgets                z_gzgets
 | 
				
			||||||
 | 
					#    define gzoffset              z_gzoffset
 | 
				
			||||||
 | 
					#    define gzoffset64            z_gzoffset64
 | 
				
			||||||
 | 
					#    define gzopen                z_gzopen
 | 
				
			||||||
 | 
					#    define gzopen64              z_gzopen64
 | 
				
			||||||
 | 
					#    ifdef _WIN32
 | 
				
			||||||
 | 
					#      define gzopen_w              z_gzopen_w
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#    define gzprintf              z_gzprintf
 | 
				
			||||||
 | 
					#    define gzputc                z_gzputc
 | 
				
			||||||
 | 
					#    define gzputs                z_gzputs
 | 
				
			||||||
 | 
					#    define gzread                z_gzread
 | 
				
			||||||
 | 
					#    define gzrewind              z_gzrewind
 | 
				
			||||||
 | 
					#    define gzseek                z_gzseek
 | 
				
			||||||
 | 
					#    define gzseek64              z_gzseek64
 | 
				
			||||||
 | 
					#    define gzsetparams           z_gzsetparams
 | 
				
			||||||
 | 
					#    define gztell                z_gztell
 | 
				
			||||||
 | 
					#    define gztell64              z_gztell64
 | 
				
			||||||
 | 
					#    define gzungetc              z_gzungetc
 | 
				
			||||||
 | 
					#    define gzvprintf             z_gzvprintf
 | 
				
			||||||
 | 
					#    define gzwrite               z_gzwrite
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define inflate               z_inflate
 | 
				
			||||||
 | 
					#  define inflateBack           z_inflateBack
 | 
				
			||||||
 | 
					#  define inflateBackEnd        z_inflateBackEnd
 | 
				
			||||||
 | 
					#  define inflateBackInit       z_inflateBackInit
 | 
				
			||||||
 | 
					#  define inflateBackInit_      z_inflateBackInit_
 | 
				
			||||||
 | 
					#  define inflateCodesUsed      z_inflateCodesUsed
 | 
				
			||||||
 | 
					#  define inflateCopy           z_inflateCopy
 | 
				
			||||||
 | 
					#  define inflateEnd            z_inflateEnd
 | 
				
			||||||
 | 
					#  define inflateGetDictionary  z_inflateGetDictionary
 | 
				
			||||||
 | 
					#  define inflateGetHeader      z_inflateGetHeader
 | 
				
			||||||
 | 
					#  define inflateInit           z_inflateInit
 | 
				
			||||||
 | 
					#  define inflateInit2          z_inflateInit2
 | 
				
			||||||
 | 
					#  define inflateInit2_         z_inflateInit2_
 | 
				
			||||||
 | 
					#  define inflateInit_          z_inflateInit_
 | 
				
			||||||
 | 
					#  define inflateMark           z_inflateMark
 | 
				
			||||||
 | 
					#  define inflatePrime          z_inflatePrime
 | 
				
			||||||
 | 
					#  define inflateReset          z_inflateReset
 | 
				
			||||||
 | 
					#  define inflateReset2         z_inflateReset2
 | 
				
			||||||
 | 
					#  define inflateResetKeep      z_inflateResetKeep
 | 
				
			||||||
 | 
					#  define inflateSetDictionary  z_inflateSetDictionary
 | 
				
			||||||
 | 
					#  define inflateSync           z_inflateSync
 | 
				
			||||||
 | 
					#  define inflateSyncPoint      z_inflateSyncPoint
 | 
				
			||||||
 | 
					#  define inflateUndermine      z_inflateUndermine
 | 
				
			||||||
 | 
					#  define inflateValidate       z_inflateValidate
 | 
				
			||||||
 | 
					#  define inflate_copyright     z_inflate_copyright
 | 
				
			||||||
 | 
					#  define inflate_fast          z_inflate_fast
 | 
				
			||||||
 | 
					#  define inflate_table         z_inflate_table
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define uncompress            z_uncompress
 | 
				
			||||||
 | 
					#    define uncompress2           z_uncompress2
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define zError                z_zError
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define zcalloc               z_zcalloc
 | 
				
			||||||
 | 
					#    define zcfree                z_zcfree
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define zlibCompileFlags      z_zlibCompileFlags
 | 
				
			||||||
 | 
					#  define zlibVersion           z_zlibVersion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* all zlib typedefs in zlib.h and zconf.h */
 | 
				
			||||||
 | 
					#  define Byte                  z_Byte
 | 
				
			||||||
 | 
					#  define Bytef                 z_Bytef
 | 
				
			||||||
 | 
					#  define alloc_func            z_alloc_func
 | 
				
			||||||
 | 
					#  define charf                 z_charf
 | 
				
			||||||
 | 
					#  define free_func             z_free_func
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define gzFile                z_gzFile
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define gz_header             z_gz_header
 | 
				
			||||||
 | 
					#  define gz_headerp            z_gz_headerp
 | 
				
			||||||
 | 
					#  define in_func               z_in_func
 | 
				
			||||||
 | 
					#  define intf                  z_intf
 | 
				
			||||||
 | 
					#  define out_func              z_out_func
 | 
				
			||||||
 | 
					#  define uInt                  z_uInt
 | 
				
			||||||
 | 
					#  define uIntf                 z_uIntf
 | 
				
			||||||
 | 
					#  define uLong                 z_uLong
 | 
				
			||||||
 | 
					#  define uLongf                z_uLongf
 | 
				
			||||||
 | 
					#  define voidp                 z_voidp
 | 
				
			||||||
 | 
					#  define voidpc                z_voidpc
 | 
				
			||||||
 | 
					#  define voidpf                z_voidpf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* all zlib structs in zlib.h and zconf.h */
 | 
				
			||||||
 | 
					#  define gz_header_s           z_gz_header_s
 | 
				
			||||||
 | 
					#  define internal_state        z_internal_state
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__MSDOS__) && !defined(MSDOS)
 | 
				
			||||||
 | 
					#  define MSDOS
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
 | 
				
			||||||
 | 
					#  define OS2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(_WINDOWS) && !defined(WINDOWS)
 | 
				
			||||||
 | 
					#  define WINDOWS
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
 | 
				
			||||||
 | 
					#  ifndef WIN32
 | 
				
			||||||
 | 
					#    define WIN32
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
 | 
				
			||||||
 | 
					#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
 | 
				
			||||||
 | 
					#    ifndef SYS16BIT
 | 
				
			||||||
 | 
					#      define SYS16BIT
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
 | 
				
			||||||
 | 
					 * than 64k bytes at a time (needed on systems with 16-bit int).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef SYS16BIT
 | 
				
			||||||
 | 
					#  define MAXSEG_64K
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef MSDOS
 | 
				
			||||||
 | 
					#  define UNALIGNED_OK
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __STDC_VERSION__
 | 
				
			||||||
 | 
					#  ifndef STDC
 | 
				
			||||||
 | 
					#    define STDC
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  if __STDC_VERSION__ >= 199901L
 | 
				
			||||||
 | 
					#    ifndef STDC99
 | 
				
			||||||
 | 
					#      define STDC99
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef STDC
 | 
				
			||||||
 | 
					#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
 | 
				
			||||||
 | 
					#    define const       /* note: need a more gentle solution here */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(ZLIB_CONST) && !defined(z_const)
 | 
				
			||||||
 | 
					#  define z_const const
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define z_const
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef Z_SOLO
 | 
				
			||||||
 | 
					   typedef unsigned long z_size_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define z_longlong long long
 | 
				
			||||||
 | 
					#  if defined(NO_SIZE_T)
 | 
				
			||||||
 | 
					     typedef unsigned NO_SIZE_T z_size_t;
 | 
				
			||||||
 | 
					#  elif defined(STDC)
 | 
				
			||||||
 | 
					#    include <stddef.h>
 | 
				
			||||||
 | 
					     typedef size_t z_size_t;
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					     typedef unsigned long z_size_t;
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  undef z_longlong
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Maximum value for memLevel in deflateInit2 */
 | 
				
			||||||
 | 
					#ifndef MAX_MEM_LEVEL
 | 
				
			||||||
 | 
					#  ifdef MAXSEG_64K
 | 
				
			||||||
 | 
					#    define MAX_MEM_LEVEL 8
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define MAX_MEM_LEVEL 9
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Maximum value for windowBits in deflateInit2 and inflateInit2.
 | 
				
			||||||
 | 
					 * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
 | 
				
			||||||
 | 
					 * created by gzip. (Files created by minigzip can still be extracted by
 | 
				
			||||||
 | 
					 * gzip.)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifndef MAX_WBITS
 | 
				
			||||||
 | 
					#  define MAX_WBITS   15 /* 32K LZ77 window */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The memory requirements for deflate are (in bytes):
 | 
				
			||||||
 | 
					            (1 << (windowBits+2)) +  (1 << (memLevel+9))
 | 
				
			||||||
 | 
					 that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
 | 
				
			||||||
 | 
					 plus a few kilobytes for small objects. For example, if you want to reduce
 | 
				
			||||||
 | 
					 the default memory requirements from 256K to 128K, compile with
 | 
				
			||||||
 | 
					     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
 | 
				
			||||||
 | 
					 Of course this will generally degrade compression (there's no free lunch).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   The memory requirements for inflate are (in bytes) 1 << windowBits
 | 
				
			||||||
 | 
					 that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
 | 
				
			||||||
 | 
					 for small objects.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        /* Type declarations */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OF /* function prototypes */
 | 
				
			||||||
 | 
					#  ifdef STDC
 | 
				
			||||||
 | 
					#    define OF(args)  args
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define OF(args)  ()
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef Z_ARG /* function prototypes for stdarg */
 | 
				
			||||||
 | 
					#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
 | 
				
			||||||
 | 
					#    define Z_ARG(args)  args
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define Z_ARG(args)  ()
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The following definitions for FAR are needed only for MSDOS mixed
 | 
				
			||||||
 | 
					 * model programming (small or medium model with some far allocations).
 | 
				
			||||||
 | 
					 * This was tested only with MSC; for other MSDOS compilers you may have
 | 
				
			||||||
 | 
					 * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
 | 
				
			||||||
 | 
					 * just define FAR to be empty.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef SYS16BIT
 | 
				
			||||||
 | 
					#  if defined(M_I86SM) || defined(M_I86MM)
 | 
				
			||||||
 | 
					     /* MSC small or medium model */
 | 
				
			||||||
 | 
					#    define SMALL_MEDIUM
 | 
				
			||||||
 | 
					#    ifdef _MSC_VER
 | 
				
			||||||
 | 
					#      define FAR _far
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define FAR far
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  if (defined(__SMALL__) || defined(__MEDIUM__))
 | 
				
			||||||
 | 
					     /* Turbo C small or medium model */
 | 
				
			||||||
 | 
					#    define SMALL_MEDIUM
 | 
				
			||||||
 | 
					#    ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#      define FAR _far
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define FAR far
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(WINDOWS) || defined(WIN32)
 | 
				
			||||||
 | 
					   /* If building or using zlib as a DLL, define ZLIB_DLL.
 | 
				
			||||||
 | 
					    * This is not mandatory, but it offers a little performance increase.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					#  ifdef ZLIB_DLL
 | 
				
			||||||
 | 
					#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
 | 
				
			||||||
 | 
					#      ifdef ZLIB_INTERNAL
 | 
				
			||||||
 | 
					#        define ZEXTERN extern __declspec(dllexport)
 | 
				
			||||||
 | 
					#      else
 | 
				
			||||||
 | 
					#        define ZEXTERN extern __declspec(dllimport)
 | 
				
			||||||
 | 
					#      endif
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif  /* ZLIB_DLL */
 | 
				
			||||||
 | 
					   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
 | 
				
			||||||
 | 
					    * define ZLIB_WINAPI.
 | 
				
			||||||
 | 
					    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					#  ifdef ZLIB_WINAPI
 | 
				
			||||||
 | 
					#    ifdef FAR
 | 
				
			||||||
 | 
					#      undef FAR
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#    include <windows.h>
 | 
				
			||||||
 | 
					     /* No need for _export, use ZLIB.DEF instead. */
 | 
				
			||||||
 | 
					     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
 | 
				
			||||||
 | 
					#    define ZEXPORT WINAPI
 | 
				
			||||||
 | 
					#    ifdef WIN32
 | 
				
			||||||
 | 
					#      define ZEXPORTVA WINAPIV
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define ZEXPORTVA FAR CDECL
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined (__BEOS__)
 | 
				
			||||||
 | 
					#  ifdef ZLIB_DLL
 | 
				
			||||||
 | 
					#    ifdef ZLIB_INTERNAL
 | 
				
			||||||
 | 
					#      define ZEXPORT   __declspec(dllexport)
 | 
				
			||||||
 | 
					#      define ZEXPORTVA __declspec(dllexport)
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define ZEXPORT   __declspec(dllimport)
 | 
				
			||||||
 | 
					#      define ZEXPORTVA __declspec(dllimport)
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ZEXTERN
 | 
				
			||||||
 | 
					#  define ZEXTERN extern
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef ZEXPORT
 | 
				
			||||||
 | 
					#  define ZEXPORT
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef ZEXPORTVA
 | 
				
			||||||
 | 
					#  define ZEXPORTVA
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef FAR
 | 
				
			||||||
 | 
					#  define FAR
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(__MACTYPES__)
 | 
				
			||||||
 | 
					typedef unsigned char  Byte;  /* 8 bits */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					typedef unsigned int   uInt;  /* 16 bits or more */
 | 
				
			||||||
 | 
					typedef unsigned long  uLong; /* 32 bits or more */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SMALL_MEDIUM
 | 
				
			||||||
 | 
					   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
 | 
				
			||||||
 | 
					#  define Bytef Byte FAR
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					   typedef Byte  FAR Bytef;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					typedef char  FAR charf;
 | 
				
			||||||
 | 
					typedef int   FAR intf;
 | 
				
			||||||
 | 
					typedef uInt  FAR uIntf;
 | 
				
			||||||
 | 
					typedef uLong FAR uLongf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef STDC
 | 
				
			||||||
 | 
					   typedef void const *voidpc;
 | 
				
			||||||
 | 
					   typedef void FAR   *voidpf;
 | 
				
			||||||
 | 
					   typedef void       *voidp;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					   typedef Byte const *voidpc;
 | 
				
			||||||
 | 
					   typedef Byte FAR   *voidpf;
 | 
				
			||||||
 | 
					   typedef Byte       *voidp;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
 | 
				
			||||||
 | 
					#  include <limits.h>
 | 
				
			||||||
 | 
					#  if (UINT_MAX == 0xffffffffUL)
 | 
				
			||||||
 | 
					#    define Z_U4 unsigned
 | 
				
			||||||
 | 
					#  elif (ULONG_MAX == 0xffffffffUL)
 | 
				
			||||||
 | 
					#    define Z_U4 unsigned long
 | 
				
			||||||
 | 
					#  elif (USHRT_MAX == 0xffffffffUL)
 | 
				
			||||||
 | 
					#    define Z_U4 unsigned short
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef Z_U4
 | 
				
			||||||
 | 
					   typedef Z_U4 z_crc_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					   typedef unsigned long z_crc_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
 | 
				
			||||||
 | 
					#  define Z_HAVE_UNISTD_H
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_STDARG_H    /* may be set to #if 1 by ./configure */
 | 
				
			||||||
 | 
					#  define Z_HAVE_STDARG_H
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef STDC
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    include <sys/types.h>      /* for off_t */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(STDC) || defined(Z_HAVE_STDARG_H)
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    include <stdarg.h>         /* for va_list */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    include <stddef.h>         /* for wchar_t */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
 | 
				
			||||||
 | 
					 * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
 | 
				
			||||||
 | 
					 * though the former does not conform to the LFS document), but considering
 | 
				
			||||||
 | 
					 * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
 | 
				
			||||||
 | 
					 * equivalently requesting no 64-bit operations
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
 | 
				
			||||||
 | 
					#  undef _LARGEFILE64_SOURCE
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
 | 
				
			||||||
 | 
					#  define Z_HAVE_UNISTD_H
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef Z_SOLO
 | 
				
			||||||
 | 
					#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
 | 
				
			||||||
 | 
					#    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 | 
				
			||||||
 | 
					#    ifdef VMS
 | 
				
			||||||
 | 
					#      include <unixio.h>       /* for off_t */
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#    ifndef z_off_t
 | 
				
			||||||
 | 
					#      define z_off_t off_t
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
 | 
				
			||||||
 | 
					#  define Z_LFS64
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
 | 
				
			||||||
 | 
					#  define Z_LARGE64
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
 | 
				
			||||||
 | 
					#  define Z_WANT64
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(SEEK_SET) && !defined(Z_SOLO)
 | 
				
			||||||
 | 
					#  define SEEK_SET        0       /* Seek from beginning of file.  */
 | 
				
			||||||
 | 
					#  define SEEK_CUR        1       /* Seek from current position.  */
 | 
				
			||||||
 | 
					#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef z_off_t
 | 
				
			||||||
 | 
					#  define z_off_t long
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(_WIN32) && defined(Z_LARGE64)
 | 
				
			||||||
 | 
					#  define z_off64_t off64_t
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
 | 
				
			||||||
 | 
					#    define z_off64_t __int64
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define z_off64_t z_off_t
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MVS linker does not support external names larger than 8 bytes */
 | 
				
			||||||
 | 
					#if defined(__MVS__)
 | 
				
			||||||
 | 
					  #pragma map(deflateInit_,"DEIN")
 | 
				
			||||||
 | 
					  #pragma map(deflateInit2_,"DEIN2")
 | 
				
			||||||
 | 
					  #pragma map(deflateEnd,"DEEND")
 | 
				
			||||||
 | 
					  #pragma map(deflateBound,"DEBND")
 | 
				
			||||||
 | 
					  #pragma map(inflateInit_,"ININ")
 | 
				
			||||||
 | 
					  #pragma map(inflateInit2_,"ININ2")
 | 
				
			||||||
 | 
					  #pragma map(inflateEnd,"INEND")
 | 
				
			||||||
 | 
					  #pragma map(inflateSync,"INSY")
 | 
				
			||||||
 | 
					  #pragma map(inflateSetDictionary,"INSEDI")
 | 
				
			||||||
 | 
					  #pragma map(compressBound,"CMBND")
 | 
				
			||||||
 | 
					  #pragma map(inflate_table,"INTABL")
 | 
				
			||||||
 | 
					  #pragma map(inflate_fast,"INFA")
 | 
				
			||||||
 | 
					  #pragma map(inflate_copyright,"INCOPY")
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* ZCONF_H */
 | 
				
			||||||
							
								
								
									
										1912
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/include/zlib.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1912
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/include/zlib.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/bin/zlib.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/bin/zlib.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlib-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.pdb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/bin/zlibd.pdb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.ilk
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.ilk
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/debug_dynamic/x64/lib/zlibd.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										536
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/include/zconf.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										536
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/include/zconf.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,536 @@
 | 
				
			|||||||
 | 
					/* zconf.h -- configuration of the zlib compression library
 | 
				
			||||||
 | 
					 * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
 | 
				
			||||||
 | 
					 * For conditions of distribution and use, see copyright notice in zlib.h
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* @(#) $Id$ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ZCONF_H
 | 
				
			||||||
 | 
					#define ZCONF_H
 | 
				
			||||||
 | 
					/* #undef Z_PREFIX */
 | 
				
			||||||
 | 
					/* #undef Z_HAVE_UNISTD_H */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * If you *really* need a unique prefix for all types and library functions,
 | 
				
			||||||
 | 
					 * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
 | 
				
			||||||
 | 
					 * Even better than compiling with -DZ_PREFIX would be to use configure to set
 | 
				
			||||||
 | 
					 * this permanently in zconf.h using "./configure --zprefix".
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef Z_PREFIX     /* may be set to #if 1 by ./configure */
 | 
				
			||||||
 | 
					#  define Z_PREFIX_SET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* all linked symbols and init macros */
 | 
				
			||||||
 | 
					#  define _dist_code            z__dist_code
 | 
				
			||||||
 | 
					#  define _length_code          z__length_code
 | 
				
			||||||
 | 
					#  define _tr_align             z__tr_align
 | 
				
			||||||
 | 
					#  define _tr_flush_bits        z__tr_flush_bits
 | 
				
			||||||
 | 
					#  define _tr_flush_block       z__tr_flush_block
 | 
				
			||||||
 | 
					#  define _tr_init              z__tr_init
 | 
				
			||||||
 | 
					#  define _tr_stored_block      z__tr_stored_block
 | 
				
			||||||
 | 
					#  define _tr_tally             z__tr_tally
 | 
				
			||||||
 | 
					#  define adler32               z_adler32
 | 
				
			||||||
 | 
					#  define adler32_combine       z_adler32_combine
 | 
				
			||||||
 | 
					#  define adler32_combine64     z_adler32_combine64
 | 
				
			||||||
 | 
					#  define adler32_z             z_adler32_z
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define compress              z_compress
 | 
				
			||||||
 | 
					#    define compress2             z_compress2
 | 
				
			||||||
 | 
					#    define compressBound         z_compressBound
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define crc32                 z_crc32
 | 
				
			||||||
 | 
					#  define crc32_combine         z_crc32_combine
 | 
				
			||||||
 | 
					#  define crc32_combine64       z_crc32_combine64
 | 
				
			||||||
 | 
					#  define crc32_z               z_crc32_z
 | 
				
			||||||
 | 
					#  define deflate               z_deflate
 | 
				
			||||||
 | 
					#  define deflateBound          z_deflateBound
 | 
				
			||||||
 | 
					#  define deflateCopy           z_deflateCopy
 | 
				
			||||||
 | 
					#  define deflateEnd            z_deflateEnd
 | 
				
			||||||
 | 
					#  define deflateGetDictionary  z_deflateGetDictionary
 | 
				
			||||||
 | 
					#  define deflateInit           z_deflateInit
 | 
				
			||||||
 | 
					#  define deflateInit2          z_deflateInit2
 | 
				
			||||||
 | 
					#  define deflateInit2_         z_deflateInit2_
 | 
				
			||||||
 | 
					#  define deflateInit_          z_deflateInit_
 | 
				
			||||||
 | 
					#  define deflateParams         z_deflateParams
 | 
				
			||||||
 | 
					#  define deflatePending        z_deflatePending
 | 
				
			||||||
 | 
					#  define deflatePrime          z_deflatePrime
 | 
				
			||||||
 | 
					#  define deflateReset          z_deflateReset
 | 
				
			||||||
 | 
					#  define deflateResetKeep      z_deflateResetKeep
 | 
				
			||||||
 | 
					#  define deflateSetDictionary  z_deflateSetDictionary
 | 
				
			||||||
 | 
					#  define deflateSetHeader      z_deflateSetHeader
 | 
				
			||||||
 | 
					#  define deflateTune           z_deflateTune
 | 
				
			||||||
 | 
					#  define deflate_copyright     z_deflate_copyright
 | 
				
			||||||
 | 
					#  define get_crc_table         z_get_crc_table
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define gz_error              z_gz_error
 | 
				
			||||||
 | 
					#    define gz_intmax             z_gz_intmax
 | 
				
			||||||
 | 
					#    define gz_strwinerror        z_gz_strwinerror
 | 
				
			||||||
 | 
					#    define gzbuffer              z_gzbuffer
 | 
				
			||||||
 | 
					#    define gzclearerr            z_gzclearerr
 | 
				
			||||||
 | 
					#    define gzclose               z_gzclose
 | 
				
			||||||
 | 
					#    define gzclose_r             z_gzclose_r
 | 
				
			||||||
 | 
					#    define gzclose_w             z_gzclose_w
 | 
				
			||||||
 | 
					#    define gzdirect              z_gzdirect
 | 
				
			||||||
 | 
					#    define gzdopen               z_gzdopen
 | 
				
			||||||
 | 
					#    define gzeof                 z_gzeof
 | 
				
			||||||
 | 
					#    define gzerror               z_gzerror
 | 
				
			||||||
 | 
					#    define gzflush               z_gzflush
 | 
				
			||||||
 | 
					#    define gzfread               z_gzfread
 | 
				
			||||||
 | 
					#    define gzfwrite              z_gzfwrite
 | 
				
			||||||
 | 
					#    define gzgetc                z_gzgetc
 | 
				
			||||||
 | 
					#    define gzgetc_               z_gzgetc_
 | 
				
			||||||
 | 
					#    define gzgets                z_gzgets
 | 
				
			||||||
 | 
					#    define gzoffset              z_gzoffset
 | 
				
			||||||
 | 
					#    define gzoffset64            z_gzoffset64
 | 
				
			||||||
 | 
					#    define gzopen                z_gzopen
 | 
				
			||||||
 | 
					#    define gzopen64              z_gzopen64
 | 
				
			||||||
 | 
					#    ifdef _WIN32
 | 
				
			||||||
 | 
					#      define gzopen_w              z_gzopen_w
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#    define gzprintf              z_gzprintf
 | 
				
			||||||
 | 
					#    define gzputc                z_gzputc
 | 
				
			||||||
 | 
					#    define gzputs                z_gzputs
 | 
				
			||||||
 | 
					#    define gzread                z_gzread
 | 
				
			||||||
 | 
					#    define gzrewind              z_gzrewind
 | 
				
			||||||
 | 
					#    define gzseek                z_gzseek
 | 
				
			||||||
 | 
					#    define gzseek64              z_gzseek64
 | 
				
			||||||
 | 
					#    define gzsetparams           z_gzsetparams
 | 
				
			||||||
 | 
					#    define gztell                z_gztell
 | 
				
			||||||
 | 
					#    define gztell64              z_gztell64
 | 
				
			||||||
 | 
					#    define gzungetc              z_gzungetc
 | 
				
			||||||
 | 
					#    define gzvprintf             z_gzvprintf
 | 
				
			||||||
 | 
					#    define gzwrite               z_gzwrite
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define inflate               z_inflate
 | 
				
			||||||
 | 
					#  define inflateBack           z_inflateBack
 | 
				
			||||||
 | 
					#  define inflateBackEnd        z_inflateBackEnd
 | 
				
			||||||
 | 
					#  define inflateBackInit       z_inflateBackInit
 | 
				
			||||||
 | 
					#  define inflateBackInit_      z_inflateBackInit_
 | 
				
			||||||
 | 
					#  define inflateCodesUsed      z_inflateCodesUsed
 | 
				
			||||||
 | 
					#  define inflateCopy           z_inflateCopy
 | 
				
			||||||
 | 
					#  define inflateEnd            z_inflateEnd
 | 
				
			||||||
 | 
					#  define inflateGetDictionary  z_inflateGetDictionary
 | 
				
			||||||
 | 
					#  define inflateGetHeader      z_inflateGetHeader
 | 
				
			||||||
 | 
					#  define inflateInit           z_inflateInit
 | 
				
			||||||
 | 
					#  define inflateInit2          z_inflateInit2
 | 
				
			||||||
 | 
					#  define inflateInit2_         z_inflateInit2_
 | 
				
			||||||
 | 
					#  define inflateInit_          z_inflateInit_
 | 
				
			||||||
 | 
					#  define inflateMark           z_inflateMark
 | 
				
			||||||
 | 
					#  define inflatePrime          z_inflatePrime
 | 
				
			||||||
 | 
					#  define inflateReset          z_inflateReset
 | 
				
			||||||
 | 
					#  define inflateReset2         z_inflateReset2
 | 
				
			||||||
 | 
					#  define inflateResetKeep      z_inflateResetKeep
 | 
				
			||||||
 | 
					#  define inflateSetDictionary  z_inflateSetDictionary
 | 
				
			||||||
 | 
					#  define inflateSync           z_inflateSync
 | 
				
			||||||
 | 
					#  define inflateSyncPoint      z_inflateSyncPoint
 | 
				
			||||||
 | 
					#  define inflateUndermine      z_inflateUndermine
 | 
				
			||||||
 | 
					#  define inflateValidate       z_inflateValidate
 | 
				
			||||||
 | 
					#  define inflate_copyright     z_inflate_copyright
 | 
				
			||||||
 | 
					#  define inflate_fast          z_inflate_fast
 | 
				
			||||||
 | 
					#  define inflate_table         z_inflate_table
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define uncompress            z_uncompress
 | 
				
			||||||
 | 
					#    define uncompress2           z_uncompress2
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define zError                z_zError
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define zcalloc               z_zcalloc
 | 
				
			||||||
 | 
					#    define zcfree                z_zcfree
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define zlibCompileFlags      z_zlibCompileFlags
 | 
				
			||||||
 | 
					#  define zlibVersion           z_zlibVersion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* all zlib typedefs in zlib.h and zconf.h */
 | 
				
			||||||
 | 
					#  define Byte                  z_Byte
 | 
				
			||||||
 | 
					#  define Bytef                 z_Bytef
 | 
				
			||||||
 | 
					#  define alloc_func            z_alloc_func
 | 
				
			||||||
 | 
					#  define charf                 z_charf
 | 
				
			||||||
 | 
					#  define free_func             z_free_func
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    define gzFile                z_gzFile
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  define gz_header             z_gz_header
 | 
				
			||||||
 | 
					#  define gz_headerp            z_gz_headerp
 | 
				
			||||||
 | 
					#  define in_func               z_in_func
 | 
				
			||||||
 | 
					#  define intf                  z_intf
 | 
				
			||||||
 | 
					#  define out_func              z_out_func
 | 
				
			||||||
 | 
					#  define uInt                  z_uInt
 | 
				
			||||||
 | 
					#  define uIntf                 z_uIntf
 | 
				
			||||||
 | 
					#  define uLong                 z_uLong
 | 
				
			||||||
 | 
					#  define uLongf                z_uLongf
 | 
				
			||||||
 | 
					#  define voidp                 z_voidp
 | 
				
			||||||
 | 
					#  define voidpc                z_voidpc
 | 
				
			||||||
 | 
					#  define voidpf                z_voidpf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* all zlib structs in zlib.h and zconf.h */
 | 
				
			||||||
 | 
					#  define gz_header_s           z_gz_header_s
 | 
				
			||||||
 | 
					#  define internal_state        z_internal_state
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__MSDOS__) && !defined(MSDOS)
 | 
				
			||||||
 | 
					#  define MSDOS
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
 | 
				
			||||||
 | 
					#  define OS2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(_WINDOWS) && !defined(WINDOWS)
 | 
				
			||||||
 | 
					#  define WINDOWS
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
 | 
				
			||||||
 | 
					#  ifndef WIN32
 | 
				
			||||||
 | 
					#    define WIN32
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
 | 
				
			||||||
 | 
					#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
 | 
				
			||||||
 | 
					#    ifndef SYS16BIT
 | 
				
			||||||
 | 
					#      define SYS16BIT
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
 | 
				
			||||||
 | 
					 * than 64k bytes at a time (needed on systems with 16-bit int).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef SYS16BIT
 | 
				
			||||||
 | 
					#  define MAXSEG_64K
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef MSDOS
 | 
				
			||||||
 | 
					#  define UNALIGNED_OK
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __STDC_VERSION__
 | 
				
			||||||
 | 
					#  ifndef STDC
 | 
				
			||||||
 | 
					#    define STDC
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  if __STDC_VERSION__ >= 199901L
 | 
				
			||||||
 | 
					#    ifndef STDC99
 | 
				
			||||||
 | 
					#      define STDC99
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
 | 
				
			||||||
 | 
					#  define STDC
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef STDC
 | 
				
			||||||
 | 
					#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
 | 
				
			||||||
 | 
					#    define const       /* note: need a more gentle solution here */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(ZLIB_CONST) && !defined(z_const)
 | 
				
			||||||
 | 
					#  define z_const const
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define z_const
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef Z_SOLO
 | 
				
			||||||
 | 
					   typedef unsigned long z_size_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define z_longlong long long
 | 
				
			||||||
 | 
					#  if defined(NO_SIZE_T)
 | 
				
			||||||
 | 
					     typedef unsigned NO_SIZE_T z_size_t;
 | 
				
			||||||
 | 
					#  elif defined(STDC)
 | 
				
			||||||
 | 
					#    include <stddef.h>
 | 
				
			||||||
 | 
					     typedef size_t z_size_t;
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					     typedef unsigned long z_size_t;
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  undef z_longlong
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Maximum value for memLevel in deflateInit2 */
 | 
				
			||||||
 | 
					#ifndef MAX_MEM_LEVEL
 | 
				
			||||||
 | 
					#  ifdef MAXSEG_64K
 | 
				
			||||||
 | 
					#    define MAX_MEM_LEVEL 8
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define MAX_MEM_LEVEL 9
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Maximum value for windowBits in deflateInit2 and inflateInit2.
 | 
				
			||||||
 | 
					 * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
 | 
				
			||||||
 | 
					 * created by gzip. (Files created by minigzip can still be extracted by
 | 
				
			||||||
 | 
					 * gzip.)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifndef MAX_WBITS
 | 
				
			||||||
 | 
					#  define MAX_WBITS   15 /* 32K LZ77 window */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The memory requirements for deflate are (in bytes):
 | 
				
			||||||
 | 
					            (1 << (windowBits+2)) +  (1 << (memLevel+9))
 | 
				
			||||||
 | 
					 that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
 | 
				
			||||||
 | 
					 plus a few kilobytes for small objects. For example, if you want to reduce
 | 
				
			||||||
 | 
					 the default memory requirements from 256K to 128K, compile with
 | 
				
			||||||
 | 
					     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
 | 
				
			||||||
 | 
					 Of course this will generally degrade compression (there's no free lunch).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   The memory requirements for inflate are (in bytes) 1 << windowBits
 | 
				
			||||||
 | 
					 that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
 | 
				
			||||||
 | 
					 for small objects.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        /* Type declarations */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OF /* function prototypes */
 | 
				
			||||||
 | 
					#  ifdef STDC
 | 
				
			||||||
 | 
					#    define OF(args)  args
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define OF(args)  ()
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef Z_ARG /* function prototypes for stdarg */
 | 
				
			||||||
 | 
					#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
 | 
				
			||||||
 | 
					#    define Z_ARG(args)  args
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define Z_ARG(args)  ()
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The following definitions for FAR are needed only for MSDOS mixed
 | 
				
			||||||
 | 
					 * model programming (small or medium model with some far allocations).
 | 
				
			||||||
 | 
					 * This was tested only with MSC; for other MSDOS compilers you may have
 | 
				
			||||||
 | 
					 * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
 | 
				
			||||||
 | 
					 * just define FAR to be empty.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef SYS16BIT
 | 
				
			||||||
 | 
					#  if defined(M_I86SM) || defined(M_I86MM)
 | 
				
			||||||
 | 
					     /* MSC small or medium model */
 | 
				
			||||||
 | 
					#    define SMALL_MEDIUM
 | 
				
			||||||
 | 
					#    ifdef _MSC_VER
 | 
				
			||||||
 | 
					#      define FAR _far
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define FAR far
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#  if (defined(__SMALL__) || defined(__MEDIUM__))
 | 
				
			||||||
 | 
					     /* Turbo C small or medium model */
 | 
				
			||||||
 | 
					#    define SMALL_MEDIUM
 | 
				
			||||||
 | 
					#    ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#      define FAR _far
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define FAR far
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(WINDOWS) || defined(WIN32)
 | 
				
			||||||
 | 
					   /* If building or using zlib as a DLL, define ZLIB_DLL.
 | 
				
			||||||
 | 
					    * This is not mandatory, but it offers a little performance increase.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					#  ifdef ZLIB_DLL
 | 
				
			||||||
 | 
					#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
 | 
				
			||||||
 | 
					#      ifdef ZLIB_INTERNAL
 | 
				
			||||||
 | 
					#        define ZEXTERN extern __declspec(dllexport)
 | 
				
			||||||
 | 
					#      else
 | 
				
			||||||
 | 
					#        define ZEXTERN extern __declspec(dllimport)
 | 
				
			||||||
 | 
					#      endif
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif  /* ZLIB_DLL */
 | 
				
			||||||
 | 
					   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
 | 
				
			||||||
 | 
					    * define ZLIB_WINAPI.
 | 
				
			||||||
 | 
					    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					#  ifdef ZLIB_WINAPI
 | 
				
			||||||
 | 
					#    ifdef FAR
 | 
				
			||||||
 | 
					#      undef FAR
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#    include <windows.h>
 | 
				
			||||||
 | 
					     /* No need for _export, use ZLIB.DEF instead. */
 | 
				
			||||||
 | 
					     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
 | 
				
			||||||
 | 
					#    define ZEXPORT WINAPI
 | 
				
			||||||
 | 
					#    ifdef WIN32
 | 
				
			||||||
 | 
					#      define ZEXPORTVA WINAPIV
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define ZEXPORTVA FAR CDECL
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined (__BEOS__)
 | 
				
			||||||
 | 
					#  ifdef ZLIB_DLL
 | 
				
			||||||
 | 
					#    ifdef ZLIB_INTERNAL
 | 
				
			||||||
 | 
					#      define ZEXPORT   __declspec(dllexport)
 | 
				
			||||||
 | 
					#      define ZEXPORTVA __declspec(dllexport)
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#      define ZEXPORT   __declspec(dllimport)
 | 
				
			||||||
 | 
					#      define ZEXPORTVA __declspec(dllimport)
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ZEXTERN
 | 
				
			||||||
 | 
					#  define ZEXTERN extern
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef ZEXPORT
 | 
				
			||||||
 | 
					#  define ZEXPORT
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef ZEXPORTVA
 | 
				
			||||||
 | 
					#  define ZEXPORTVA
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef FAR
 | 
				
			||||||
 | 
					#  define FAR
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(__MACTYPES__)
 | 
				
			||||||
 | 
					typedef unsigned char  Byte;  /* 8 bits */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					typedef unsigned int   uInt;  /* 16 bits or more */
 | 
				
			||||||
 | 
					typedef unsigned long  uLong; /* 32 bits or more */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SMALL_MEDIUM
 | 
				
			||||||
 | 
					   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
 | 
				
			||||||
 | 
					#  define Bytef Byte FAR
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					   typedef Byte  FAR Bytef;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					typedef char  FAR charf;
 | 
				
			||||||
 | 
					typedef int   FAR intf;
 | 
				
			||||||
 | 
					typedef uInt  FAR uIntf;
 | 
				
			||||||
 | 
					typedef uLong FAR uLongf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef STDC
 | 
				
			||||||
 | 
					   typedef void const *voidpc;
 | 
				
			||||||
 | 
					   typedef void FAR   *voidpf;
 | 
				
			||||||
 | 
					   typedef void       *voidp;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					   typedef Byte const *voidpc;
 | 
				
			||||||
 | 
					   typedef Byte FAR   *voidpf;
 | 
				
			||||||
 | 
					   typedef Byte       *voidp;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
 | 
				
			||||||
 | 
					#  include <limits.h>
 | 
				
			||||||
 | 
					#  if (UINT_MAX == 0xffffffffUL)
 | 
				
			||||||
 | 
					#    define Z_U4 unsigned
 | 
				
			||||||
 | 
					#  elif (ULONG_MAX == 0xffffffffUL)
 | 
				
			||||||
 | 
					#    define Z_U4 unsigned long
 | 
				
			||||||
 | 
					#  elif (USHRT_MAX == 0xffffffffUL)
 | 
				
			||||||
 | 
					#    define Z_U4 unsigned short
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef Z_U4
 | 
				
			||||||
 | 
					   typedef Z_U4 z_crc_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					   typedef unsigned long z_crc_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
 | 
				
			||||||
 | 
					#  define Z_HAVE_UNISTD_H
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_STDARG_H    /* may be set to #if 1 by ./configure */
 | 
				
			||||||
 | 
					#  define Z_HAVE_STDARG_H
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef STDC
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    include <sys/types.h>      /* for off_t */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(STDC) || defined(Z_HAVE_STDARG_H)
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    include <stdarg.h>         /* for va_list */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
					#  ifndef Z_SOLO
 | 
				
			||||||
 | 
					#    include <stddef.h>         /* for wchar_t */
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
 | 
				
			||||||
 | 
					 * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
 | 
				
			||||||
 | 
					 * though the former does not conform to the LFS document), but considering
 | 
				
			||||||
 | 
					 * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
 | 
				
			||||||
 | 
					 * equivalently requesting no 64-bit operations
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
 | 
				
			||||||
 | 
					#  undef _LARGEFILE64_SOURCE
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
 | 
				
			||||||
 | 
					#  define Z_HAVE_UNISTD_H
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef Z_SOLO
 | 
				
			||||||
 | 
					#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
 | 
				
			||||||
 | 
					#    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 | 
				
			||||||
 | 
					#    ifdef VMS
 | 
				
			||||||
 | 
					#      include <unixio.h>       /* for off_t */
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#    ifndef z_off_t
 | 
				
			||||||
 | 
					#      define z_off_t off_t
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
 | 
				
			||||||
 | 
					#  define Z_LFS64
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
 | 
				
			||||||
 | 
					#  define Z_LARGE64
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
 | 
				
			||||||
 | 
					#  define Z_WANT64
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(SEEK_SET) && !defined(Z_SOLO)
 | 
				
			||||||
 | 
					#  define SEEK_SET        0       /* Seek from beginning of file.  */
 | 
				
			||||||
 | 
					#  define SEEK_CUR        1       /* Seek from current position.  */
 | 
				
			||||||
 | 
					#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef z_off_t
 | 
				
			||||||
 | 
					#  define z_off_t long
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(_WIN32) && defined(Z_LARGE64)
 | 
				
			||||||
 | 
					#  define z_off64_t off64_t
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
 | 
				
			||||||
 | 
					#    define z_off64_t __int64
 | 
				
			||||||
 | 
					#  else
 | 
				
			||||||
 | 
					#    define z_off64_t z_off_t
 | 
				
			||||||
 | 
					#  endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MVS linker does not support external names larger than 8 bytes */
 | 
				
			||||||
 | 
					#if defined(__MVS__)
 | 
				
			||||||
 | 
					  #pragma map(deflateInit_,"DEIN")
 | 
				
			||||||
 | 
					  #pragma map(deflateInit2_,"DEIN2")
 | 
				
			||||||
 | 
					  #pragma map(deflateEnd,"DEEND")
 | 
				
			||||||
 | 
					  #pragma map(deflateBound,"DEBND")
 | 
				
			||||||
 | 
					  #pragma map(inflateInit_,"ININ")
 | 
				
			||||||
 | 
					  #pragma map(inflateInit2_,"ININ2")
 | 
				
			||||||
 | 
					  #pragma map(inflateEnd,"INEND")
 | 
				
			||||||
 | 
					  #pragma map(inflateSync,"INSY")
 | 
				
			||||||
 | 
					  #pragma map(inflateSetDictionary,"INSEDI")
 | 
				
			||||||
 | 
					  #pragma map(compressBound,"CMBND")
 | 
				
			||||||
 | 
					  #pragma map(inflate_table,"INTABL")
 | 
				
			||||||
 | 
					  #pragma map(inflate_fast,"INFA")
 | 
				
			||||||
 | 
					  #pragma map(inflate_copyright,"INCOPY")
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* ZCONF_H */
 | 
				
			||||||
							
								
								
									
										1913
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/include/zlib.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1913
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/include/zlib.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/release_dynamic/x64/bin/zlib.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/release_dynamic/x64/bin/zlib.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.exp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								third_party/ZLIB-Windows/zlibwapi-1.2.11_deploy_v140/release_dynamic/x64/lib/zlib.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user