mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-07-01 06:27:11 +02:00
Update libraries and make it build on windows.
Still gets some warnings because compilers have changed. But should work.
This commit is contained in:
35
cmake/FindWinSock.cmake
Normal file
35
cmake/FindWinSock.cmake
Normal file
@ -0,0 +1,35 @@
|
||||
# Try to find WinSock library and include path.
|
||||
# Once done this will define
|
||||
#
|
||||
# WINSOCK_FOUND
|
||||
# WINSOCK_INCLUDE_DIR
|
||||
# WINSOCK_LIBRARIES
|
||||
|
||||
find_path(WINSOCK_INCLUDE_DIR WinSock2.h)
|
||||
if(MSVC)
|
||||
find_library(WINSOCK_LIBRARY mswsock.lib)
|
||||
find_library(WINSOCK2_LIBRARY ws2_32.lib)
|
||||
find_library(WINSOCK2_LIBRARY bcrypt.lib)
|
||||
else()
|
||||
find_library(WINSOCK_LIBRARY mswsock)
|
||||
find_library(WINSOCK2_LIBRARY ws2_32)
|
||||
find_library(WINSOCK2_LIBRARY bcrypt)
|
||||
endif()
|
||||
|
||||
# Handle the REQUIRED argument and set WINSOCK_FOUND
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(WinSock DEFAULT_MSG WINSOCK_LIBRARY WINSOCK2_LIBRARY WINSOCK_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(WINSOCK_INCLUDE_DIR)
|
||||
mark_as_advanced(WINSOCK_LIBRARY)
|
||||
mark_as_advanced(WINSOCK2_LIBRARY)
|
||||
|
||||
if(WINSOCK_FOUND)
|
||||
add_definitions(-DWINSOCK_SUPPORT)
|
||||
set(WINSOCK_LIBRARIES ${WINSOCK_LIBRARY} ${WINSOCK2_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(MINGW)
|
||||
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lwsock32 -lws2_32 -lbcrypt")
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lwsock32 -lws2_32 -lbcrypt")
|
||||
endif()
|
@ -493,7 +493,11 @@ Quaternion Quaternion::Abs() const
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool Quaternion::IsNaN() const
|
||||
{
|
||||
return isnanf(w) || isnanf(x) || isnanf(y) || isnanf(z);
|
||||
#if defined (__MINGW32__) || defined (__MINGW64__)
|
||||
return _isnanf(w) || _isnanf(x) || _isnanf(y) || _isnanf(z);
|
||||
#else
|
||||
return isnanf(w) || isnanf(x) || isnanf(y) || isnanf(z);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
@ -474,7 +474,11 @@ Vector3 Vector3::Abs() const
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool Vector3::IsNaN() const
|
||||
{
|
||||
#if defined (__MINGW32__) || defined (__MINGW64__)
|
||||
return _isnanf(x) || _isnanf(y) || _isnanf(z);
|
||||
#else
|
||||
return isnanf(x) || isnanf(y) || isnanf(z);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
@ -138,7 +138,7 @@ if(WIN32 OR MINGW)
|
||||
target_link_libraries(SqModule wsock32 ws2_32 shlwapi)
|
||||
endif()
|
||||
# Link to base libraries
|
||||
target_link_libraries(SqModule RPMalloc Squirrel fmt::fmt SimpleINI TinyDir xxHash ConcurrentQueue SAJSON CPR UTF8Lib PUGIXML CivetWeb inja maxminddb libzmq-static)
|
||||
target_link_libraries(SqModule Squirrel fmt::fmt SimpleINI TinyDir xxHash ConcurrentQueue SAJSON CPR UTF8Lib PUGIXML CivetWeb inja maxminddb libzmq-static)
|
||||
# Link to POCO libraries
|
||||
target_link_libraries(SqModule Poco::Foundation Poco::Crypto Poco::Data Poco::Net)
|
||||
# Does POCO have SQLite support?
|
||||
|
@ -40,7 +40,6 @@
|
||||
#include <sqratTable.h>
|
||||
#include <sqratUtil.h>
|
||||
#include <fmt/core.h>
|
||||
#include <rpmalloc.h>
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
namespace SqMod {
|
||||
@ -272,93 +271,4 @@ SQMOD_NODISCARD SQFloat PopStackFloat(HSQUIRRELVM vm, SQInteger idx);
|
||||
*/
|
||||
SQMOD_NODISCARD bool SToB(const SQChar * str);
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* RAII allocator initializer.
|
||||
*/
|
||||
struct RPMallocInit
|
||||
{
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Default constructor.
|
||||
*/
|
||||
RPMallocInit()
|
||||
{
|
||||
if (rpmalloc_initialize() != 0)
|
||||
{
|
||||
OutputError("Failed to initialize memory allocator");
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy constructor (disabled).
|
||||
*/
|
||||
RPMallocInit(const RPMallocInit &) = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Move constructor (disabled).
|
||||
*/
|
||||
RPMallocInit(RPMallocInit &&) noexcept = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Destructor.
|
||||
*/
|
||||
~RPMallocInit()
|
||||
{
|
||||
if (rpmalloc_is_thread_initialized()) rpmalloc_finalize();
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy assignment operator (disabled).
|
||||
*/
|
||||
RPMallocInit & operator = (const RPMallocInit &) = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy assignment operator (disabled).
|
||||
*/
|
||||
RPMallocInit & operator = (RPMallocInit &&) noexcept = delete;
|
||||
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* RAII allocator thread initializer.
|
||||
*/
|
||||
struct RPMallocThreadInit
|
||||
{
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Default constructor.
|
||||
*/
|
||||
RPMallocThreadInit()
|
||||
{
|
||||
rpmalloc_thread_initialize();
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy constructor (disabled).
|
||||
*/
|
||||
RPMallocThreadInit(const RPMallocThreadInit &) = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Move constructor (disabled).
|
||||
*/
|
||||
RPMallocThreadInit(RPMallocThreadInit &&) noexcept = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Destructor.
|
||||
*/
|
||||
~RPMallocThreadInit()
|
||||
{
|
||||
if (rpmalloc_is_thread_initialized()) rpmalloc_thread_finalize(1);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy assignment operator (disabled).
|
||||
*/
|
||||
RPMallocThreadInit & operator = (const RPMallocThreadInit &) = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy assignment operator (disabled).
|
||||
*/
|
||||
RPMallocThreadInit & operator = (RPMallocThreadInit &&) noexcept = delete;
|
||||
|
||||
};
|
||||
|
||||
} // Namespace:: SqMod
|
||||
|
@ -146,8 +146,6 @@ void ThreadPool::WorkerProc()
|
||||
bool retry = false;
|
||||
// Pointer to the dequeued item
|
||||
Item item;
|
||||
// Initialize third-party allocator for this thread
|
||||
auto rpmallocinit = std::make_unique< RPMallocThreadInit >();
|
||||
// Constantly process items from the queue
|
||||
while (true)
|
||||
{
|
||||
|
@ -977,11 +977,6 @@ static void OnServerPerformanceReport(size_t /*entry_count*/, const char * * /*d
|
||||
|
||||
} // Namespace:: SqMod
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* Automatically terminate the third-party allocator.
|
||||
*/
|
||||
static std::unique_ptr< SqMod::RPMallocInit > gsRPMallocInit;
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* Plug-in initialization procedure.
|
||||
*/
|
||||
@ -1008,8 +1003,6 @@ SQMOD_API_EXPORT unsigned int VcmpPluginInit(PluginFuncs * funcs, PluginCallback
|
||||
std::snprintf(_Info->name, sizeof(_Info->name), "%s", SQMOD_HOST_NAME);
|
||||
// Initialize CURL
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
// Initialize third-party allocator
|
||||
gsRPMallocInit = std::make_unique< RPMallocInit >();
|
||||
// Attempt to initialize the logger before anything else
|
||||
Logger::Get().Initialize(nullptr);
|
||||
// Attempt to initialize the plug-in core
|
||||
|
@ -41,7 +41,7 @@ SQMOD_DECL_TYPENAME(SqPcSqDataAsyncBuilder, _SC("SqSqDataAsyncBuilder"))
|
||||
SQMOD_DECL_TYPENAME(SqPcDataStatementResult, _SC("SqDataStatementResult"))
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
static const Poco::Data::NullData g_NullData{Poco::NULL_GENERIC};
|
||||
static const Poco::Data::NullData g_NullData = std::nullopt;
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void InitializePocoDataConnectors()
|
||||
|
1
vendor/CMakeLists.txt
vendored
1
vendor/CMakeLists.txt
vendored
@ -1,7 +1,6 @@
|
||||
add_subdirectory(ConcurrentQueue)
|
||||
add_subdirectory(Fmt)
|
||||
add_subdirectory(xxHash)
|
||||
add_subdirectory(RPMalloc)
|
||||
add_subdirectory(Squirrel)
|
||||
add_subdirectory(SimpleIni)
|
||||
add_subdirectory(TinyDir)
|
||||
|
29
vendor/CivetWeb/CMakeLists.txt
vendored
29
vendor/CivetWeb/CMakeLists.txt
vendored
@ -24,7 +24,7 @@ target_compile_definitions(CivetWeb PUBLIC USE_TIMERS=1 USE_WEBSOCKET=1 USE_IPV6
|
||||
# Look for SSL
|
||||
find_package(OpenSSL)
|
||||
# Check SSL status
|
||||
if (OPENSSL_FOUND)
|
||||
if(OPENSSL_FOUND)
|
||||
message(STATUS "CivetWeb: OpenSSL was found ${OPENSSL_VERSION}")
|
||||
target_link_libraries(CivetWeb PUBLIC OpenSSL::Crypto OpenSSL::SSL)
|
||||
string(REPLACE "." ";" OPENSSL_VERSION_LIST ${OPENSSL_VERSION})
|
||||
@ -32,10 +32,21 @@ if (OPENSSL_FOUND)
|
||||
list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
|
||||
list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_PATCH)
|
||||
# Tell the library what SSL version to expect
|
||||
target_compile_definitions(CivetWeb PRIVATE "OPENSSL_API_${OPENSSL_VERSION_MAJOR}_${OPENSSL_VERSION_MINOR}")
|
||||
message(STATUS "CivetWeb: OPENSSL_API_${OPENSSL_VERSION_MAJOR}_${OPENSSL_VERSION_MINOR}")
|
||||
if("${OPENSSL_VERSION_MAJOR}" STREQUAL "1")
|
||||
if("${OPENSSL_VERSION_MINOR}" STREQUAL "1")
|
||||
target_compile_definitions(CivetWeb PRIVATE OPENSSL_API_1_0=1)
|
||||
message(STATUS "CivetWeb: OPENSSL_API_1_0")
|
||||
else()
|
||||
target_compile_definitions(CivetWeb PRIVATE OPENSSL_API_1_1=1)
|
||||
message(STATUS "CivetWeb: OPENSSL_API_1_1")
|
||||
endif()
|
||||
else()
|
||||
target_compile_definitions(CivetWeb PRIVATE OPENSSL_API_3_0=1)
|
||||
message(STATUS "CivetWeb: OPENSSL_API_3_0")
|
||||
endif()
|
||||
else()
|
||||
target_compile_definitions(CivetWeb PUBLIC NO_SSL=1)
|
||||
message(STATUS "CivetWeb: OpenSSL was not found!")
|
||||
endif()
|
||||
# Look for ZLib
|
||||
find_package(ZLIB)
|
||||
@ -45,3 +56,15 @@ if (ZLIB_FOUND)
|
||||
target_link_libraries(CivetWeb PUBLIC ZLIB::ZLIB)
|
||||
target_compile_definitions(CivetWeb PUBLIC USE_ZLIB=1)
|
||||
endif()
|
||||
# Need Windows sockets if available
|
||||
if(MSVC OR MSYS OR MINGW)
|
||||
find_package(WinSock)
|
||||
if (WINSOCK_FOUND)
|
||||
target_link_libraries(CivetWeb PUBLIC ${WINSOCK_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
# We need threading
|
||||
find_package(Threads)
|
||||
target_link_libraries(CivetWeb PUBLIC ${CMAKE_THREAD_LIBS_INIT})
|
||||
# Other configs
|
||||
target_compile_definitions(CivetWeb PUBLIC USE_STACK_SIZE=102400)
|
||||
|
4
vendor/CivetWeb/LICENSE.md
vendored
4
vendor/CivetWeb/LICENSE.md
vendored
@ -66,6 +66,10 @@ http://www.lua.org/license.html
|
||||
> THE SOFTWARE.
|
||||
|
||||
|
||||
Additional components Copyright (C) Lua.org, PUC-Rio, with MIT license:
|
||||
http://www.inf.puc-rio.br/~roberto/struct/
|
||||
|
||||
|
||||
SQLite3 License
|
||||
------
|
||||
|
||||
|
1222
vendor/CivetWeb/civetweb.c
vendored
1222
vendor/CivetWeb/civetweb.c
vendored
File diff suppressed because it is too large
Load Diff
113
vendor/CivetWeb/handle_form.inl
vendored
113
vendor/CivetWeb/handle_form.inl
vendored
@ -162,14 +162,17 @@ search_boundary(const char *buf,
|
||||
const char *boundary,
|
||||
size_t boundary_len)
|
||||
{
|
||||
/* We must do a binary search here, not a string search, since the buffer
|
||||
* may contain '\x00' bytes, if binary data is transferred. */
|
||||
int clen = (int)buf_len - (int)boundary_len - 4;
|
||||
char *boundary_start = "\r\n--";
|
||||
size_t boundary_start_len = strlen(boundary_start);
|
||||
|
||||
/* We must do a binary search here, not a string search, since the
|
||||
* buffer may contain '\x00' bytes, if binary data is transferred. */
|
||||
int clen = (int)buf_len - (int)boundary_len - boundary_start_len;
|
||||
int i;
|
||||
|
||||
for (i = 0; i <= clen; i++) {
|
||||
if (!memcmp(buf + i, "\r\n--", 4)) {
|
||||
if (!memcmp(buf + i + 4, boundary, boundary_len)) {
|
||||
if (!memcmp(buf + i, boundary_start, boundary_start_len)) {
|
||||
if (!memcmp(buf + i + boundary_start_len, boundary, boundary_len)) {
|
||||
return buf + i;
|
||||
}
|
||||
}
|
||||
@ -185,7 +188,7 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
char path[512];
|
||||
char buf[MG_BUF_LEN]; /* Must not be smaller than ~900 */
|
||||
int field_storage;
|
||||
int buf_fill = 0;
|
||||
size_t buf_fill = 0;
|
||||
int r;
|
||||
int field_count = 0;
|
||||
struct mg_file fstore = STRUCT_FILE_INITIALIZER;
|
||||
@ -394,10 +397,10 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
int end_of_key_value_pair_found = 0;
|
||||
int get_block;
|
||||
|
||||
if ((size_t)buf_fill < (sizeof(buf) - 1)) {
|
||||
if (buf_fill < (sizeof(buf) - 1)) {
|
||||
|
||||
size_t to_read = sizeof(buf) - 1 - (size_t)buf_fill;
|
||||
r = mg_read(conn, buf + (size_t)buf_fill, to_read);
|
||||
size_t to_read = sizeof(buf) - 1 - buf_fill;
|
||||
r = mg_read(conn, buf + buf_fill, to_read);
|
||||
if ((r < 0) || ((r == 0) && all_data_read)) {
|
||||
/* read error */
|
||||
return -1;
|
||||
@ -526,11 +529,11 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
buf + (size_t)used,
|
||||
sizeof(buf) - (size_t)used);
|
||||
next = buf;
|
||||
buf_fill -= (int)used;
|
||||
if ((size_t)buf_fill < (sizeof(buf) - 1)) {
|
||||
buf_fill -= used;
|
||||
if (buf_fill < (sizeof(buf) - 1)) {
|
||||
|
||||
size_t to_read = sizeof(buf) - 1 - (size_t)buf_fill;
|
||||
r = mg_read(conn, buf + (size_t)buf_fill, to_read);
|
||||
size_t to_read = sizeof(buf) - 1 - buf_fill;
|
||||
r = mg_read(conn, buf + buf_fill, to_read);
|
||||
if ((r < 0) || ((r == 0) && all_data_read)) {
|
||||
#if !defined(NO_FILESYSTEMS)
|
||||
/* read error */
|
||||
@ -589,7 +592,7 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
/* Proceed to next entry */
|
||||
used = next - buf;
|
||||
memmove(buf, buf + (size_t)used, sizeof(buf) - (size_t)used);
|
||||
buf_fill -= (int)used;
|
||||
buf_fill -= used;
|
||||
}
|
||||
|
||||
return field_count;
|
||||
@ -624,6 +627,7 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
}
|
||||
|
||||
/* Copy boundary string to variable "boundary" */
|
||||
/* fbeg is pointer to start of value of boundary */
|
||||
fbeg = content_type + bl + 9;
|
||||
bl = strlen(fbeg);
|
||||
boundary = (char *)mg_malloc(bl + 1);
|
||||
@ -678,12 +682,12 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
for (part_no = 0;; part_no++) {
|
||||
size_t towrite, fnlen, n;
|
||||
int get_block;
|
||||
size_t to_read = sizeof(buf) - 1 - (size_t)buf_fill;
|
||||
size_t to_read = sizeof(buf) - 1 - buf_fill;
|
||||
|
||||
/* Unused without filesystems */
|
||||
(void)n;
|
||||
|
||||
r = mg_read(conn, buf + (size_t)buf_fill, to_read);
|
||||
r = mg_read(conn, buf + buf_fill, to_read);
|
||||
if ((r < 0) || ((r == 0) && all_data_read)) {
|
||||
/* read error */
|
||||
mg_free(boundary);
|
||||
@ -701,43 +705,74 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* @see https://www.rfc-editor.org/rfc/rfc2046.html#section-5.1.1
|
||||
*
|
||||
* multipart-body := [preamble CRLF]
|
||||
* dash-boundary transport-padding CRLF
|
||||
* body-part *encapsulation
|
||||
* close-delimiter transport-padding
|
||||
* [CRLF epilogue]
|
||||
*/
|
||||
|
||||
if (part_no == 0) {
|
||||
int d = 0;
|
||||
while ((d < buf_fill) && (buf[d] != '-')) {
|
||||
d++;
|
||||
size_t preamble_length = 0;
|
||||
/* skip over the preamble until we find a complete boundary
|
||||
* limit the preamble length to prevent abuse */
|
||||
/* +2 for the -- preceding the boundary */
|
||||
while (preamble_length < 1024
|
||||
&& (preamble_length < buf_fill - bl)
|
||||
&& strncmp(buf + preamble_length + 2, boundary, bl)) {
|
||||
preamble_length++;
|
||||
}
|
||||
if ((d > 0) && (buf[d] == '-')) {
|
||||
memmove(buf, buf + d, (unsigned)buf_fill - (unsigned)d);
|
||||
buf_fill -= d;
|
||||
/* reset the start of buf to remove the preamble */
|
||||
if (0 == strncmp(buf + preamble_length + 2, boundary, bl)) {
|
||||
memmove(buf,
|
||||
buf + preamble_length,
|
||||
(unsigned)buf_fill - (unsigned)preamble_length);
|
||||
buf_fill -= preamble_length;
|
||||
buf[buf_fill] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (buf[0] != '-' || buf[1] != '-') {
|
||||
/* either it starts with a boundary and it's fine, or it's malformed
|
||||
* because:
|
||||
* - the preamble was longer than accepted
|
||||
* - couldn't find a boundary at all in the body
|
||||
* - didn't have a terminating boundary */
|
||||
if (buf_fill < (bl + 2) || strncmp(buf, "--", 2)
|
||||
|| strncmp(buf + 2, boundary, bl)) {
|
||||
/* Malformed request */
|
||||
mg_free(boundary);
|
||||
return -1;
|
||||
}
|
||||
if (0 != strncmp(buf + 2, boundary, bl)) {
|
||||
/* Malformed request */
|
||||
mg_free(boundary);
|
||||
return -1;
|
||||
|
||||
/* skip the -- */
|
||||
char *boundary_start = buf + 2;
|
||||
size_t transport_padding = 0;
|
||||
while (boundary_start[bl + transport_padding] == ' '
|
||||
|| boundary_start[bl + transport_padding] == '\t') {
|
||||
transport_padding++;
|
||||
}
|
||||
if (buf[bl + 2] != '\r' || buf[bl + 3] != '\n') {
|
||||
/* Every part must end with \r\n, if there is another part.
|
||||
* The end of the request has an extra -- */
|
||||
if (((size_t)buf_fill != (size_t)(bl + 6))
|
||||
|| (strncmp(buf + bl + 2, "--\r\n", 4))) {
|
||||
char *boundary_end = boundary_start + bl + transport_padding;
|
||||
|
||||
/* after the transport padding, if the boundary isn't
|
||||
* immediately followed by a \r\n then it is either... */
|
||||
if (strncmp(boundary_end, "\r\n", 2)) {
|
||||
/* ...the final boundary, and it is followed by --, (in which
|
||||
* case it's the end of the request) or it's a malformed
|
||||
* request */
|
||||
if (strncmp(boundary_end, "--", 2)) {
|
||||
/* Malformed request */
|
||||
mg_free(boundary);
|
||||
return -1;
|
||||
}
|
||||
/* End of the request */
|
||||
/* Ingore any epilogue here */
|
||||
break;
|
||||
}
|
||||
|
||||
/* skip the \r\n */
|
||||
hbuf = boundary_end + 2;
|
||||
/* Next, we need to get the part header: Read until \r\n\r\n */
|
||||
hbuf = buf + bl + 4;
|
||||
hend = strstr(hbuf, "\r\n\r\n");
|
||||
if (!hend) {
|
||||
/* Malformed request */
|
||||
@ -965,12 +1000,12 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
#endif /* NO_FILESYSTEMS */
|
||||
|
||||
memmove(buf, hend + towrite, bl + 4);
|
||||
buf_fill = (int)(bl + 4);
|
||||
buf_fill = bl + 4;
|
||||
hend = buf;
|
||||
|
||||
/* Read new data */
|
||||
to_read = sizeof(buf) - 1 - (size_t)buf_fill;
|
||||
r = mg_read(conn, buf + (size_t)buf_fill, to_read);
|
||||
to_read = sizeof(buf) - 1 - buf_fill;
|
||||
r = mg_read(conn, buf + buf_fill, to_read);
|
||||
if ((r < 0) || ((r == 0) && all_data_read)) {
|
||||
#if !defined(NO_FILESYSTEMS)
|
||||
/* read error */
|
||||
@ -989,7 +1024,7 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
/* buf_fill is at least 8 here */
|
||||
|
||||
/* Find boundary */
|
||||
next = search_boundary(buf, (size_t)buf_fill, boundary, bl);
|
||||
next = search_boundary(buf, buf_fill, boundary, bl);
|
||||
|
||||
if (!next && (r == 0)) {
|
||||
/* incomplete request */
|
||||
@ -1064,7 +1099,7 @@ mg_handle_form_request(struct mg_connection *conn,
|
||||
if (next) {
|
||||
used = next - buf + 2;
|
||||
memmove(buf, buf + (size_t)used, sizeof(buf) - (size_t)used);
|
||||
buf_fill -= (int)used;
|
||||
buf_fill -= used;
|
||||
} else {
|
||||
buf_fill = 0;
|
||||
}
|
||||
|
4
vendor/CivetWeb/http2.inl
vendored
4
vendor/CivetWeb/http2.inl
vendored
@ -1442,7 +1442,7 @@ handle_http2(struct mg_connection *conn)
|
||||
hpack_decode(buf, &i, (int)bytes_read, conn->phys_ctx);
|
||||
CHECK_LEAK_HDR_ALLOC(key);
|
||||
if (!key) {
|
||||
DEBUG_TRACE("HTTP2 key decoding error");
|
||||
DEBUG_TRACE("%s", "HTTP2 key decoding error");
|
||||
goto clean_http2;
|
||||
}
|
||||
} else if (/*(idx >= 15) &&*/ (idx <= 61)) {
|
||||
@ -1509,7 +1509,7 @@ handle_http2(struct mg_connection *conn)
|
||||
conn->phys_ctx); /* leak? */
|
||||
CHECK_LEAK_HDR_ALLOC(val);
|
||||
if (!val) {
|
||||
DEBUG_TRACE("HTTP2 value decoding error");
|
||||
DEBUG_TRACE("%s", "HTTP2 value decoding error");
|
||||
mg_free((void *)key);
|
||||
goto clean_http2;
|
||||
}
|
||||
|
18
vendor/CivetWeb/include/civetweb.h
vendored
18
vendor/CivetWeb/include/civetweb.h
vendored
@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2013-2021 the Civetweb developers
|
||||
/* Copyright (c) 2013-2024 the Civetweb developers
|
||||
* Copyright (c) 2004-2013 Sergey Lyubka
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@ -23,9 +23,9 @@
|
||||
#ifndef CIVETWEB_HEADER_INCLUDED
|
||||
#define CIVETWEB_HEADER_INCLUDED
|
||||
|
||||
#define CIVETWEB_VERSION "1.16"
|
||||
#define CIVETWEB_VERSION "1.17"
|
||||
#define CIVETWEB_VERSION_MAJOR (1)
|
||||
#define CIVETWEB_VERSION_MINOR (16)
|
||||
#define CIVETWEB_VERSION_MINOR (17)
|
||||
#define CIVETWEB_VERSION_PATCH (0)
|
||||
|
||||
#ifndef CIVETWEB_API
|
||||
@ -714,8 +714,8 @@ struct mg_server_port {
|
||||
int port; /* port number */
|
||||
int is_ssl; /* https port: 0 = no, 1 = yes */
|
||||
int is_redirect; /* redirect all requests: 0 = no, 1 = yes */
|
||||
int _reserved1;
|
||||
int _reserved2;
|
||||
int is_optional; /* optional: 0 = no, 1 = yes */
|
||||
int is_bound; /* bound: 0 = no, 1 = yes, relevant for optional ports */
|
||||
int _reserved3;
|
||||
int _reserved4;
|
||||
};
|
||||
@ -1208,7 +1208,7 @@ struct mg_form_data_handler {
|
||||
* filename: Name of a file to upload, at the client computer.
|
||||
* Only set for input fields of type "file", otherwise NULL.
|
||||
* path: Output parameter: File name (incl. path) to store the file
|
||||
* at the server computer. Only used if FORM_FIELD_STORAGE_STORE
|
||||
* at the server computer. Only used if MG_FORM_FIELD_STORAGE_STORE
|
||||
* is returned by this callback. Existing files will be
|
||||
* overwritten.
|
||||
* pathlen: Length of the buffer for path.
|
||||
@ -1216,7 +1216,7 @@ struct mg_form_data_handler {
|
||||
*
|
||||
* Return value:
|
||||
* The callback must return the intended storage for this field
|
||||
* (See FORM_FIELD_STORAGE_*).
|
||||
* (See MG_FORM_FIELD_STORAGE_*).
|
||||
*/
|
||||
int (*field_found)(const char *key,
|
||||
const char *filename,
|
||||
@ -1224,7 +1224,7 @@ struct mg_form_data_handler {
|
||||
size_t pathlen,
|
||||
void *user_data);
|
||||
|
||||
/* If the "field_found" callback returned FORM_FIELD_STORAGE_GET,
|
||||
/* If the "field_found" callback returned MG_FORM_FIELD_STORAGE_GET,
|
||||
* this callback will receive the field data.
|
||||
*
|
||||
* Parameters:
|
||||
@ -1241,7 +1241,7 @@ struct mg_form_data_handler {
|
||||
size_t valuelen,
|
||||
void *user_data);
|
||||
|
||||
/* If the "field_found" callback returned FORM_FIELD_STORAGE_STORE,
|
||||
/* If the "field_found" callback returned MG_FORM_FIELD_STORAGE_STORE,
|
||||
* the data will be stored into a file. If the file has been written
|
||||
* successfully, this callback will be called. This callback will
|
||||
* not be called for only partially uploaded files. The
|
||||
|
10
vendor/CivetWeb/match.inl
vendored
10
vendor/CivetWeb/match.inl
vendored
@ -47,8 +47,8 @@ mg_match_impl(const char *pat,
|
||||
/* Advance as long as there are ? */
|
||||
i_pat++;
|
||||
i_str++;
|
||||
} while ((pat[i_pat] == '?') && (str[i_str] != '\0')
|
||||
&& (str[i_str] != '/') && (i_pat < pat_len));
|
||||
} while ((i_pat < pat_len) && (pat[i_pat] == '?')
|
||||
&& (str[i_str] != '\0') && (str[i_str] != '/'));
|
||||
|
||||
/* If we have a match context, add the substring we just found */
|
||||
if (mcx) {
|
||||
@ -72,7 +72,7 @@ mg_match_impl(const char *pat,
|
||||
ptrdiff_t ret;
|
||||
|
||||
i_pat++;
|
||||
if ((pat[i_pat] == '*') && (i_pat < pat_len)) {
|
||||
if ((i_pat < pat_len) && (pat[i_pat] == '*')) {
|
||||
/* Pattern ** matches all */
|
||||
i_pat++;
|
||||
len = strlen(str + i_str);
|
||||
@ -86,7 +86,7 @@ mg_match_impl(const char *pat,
|
||||
if (mcx) {
|
||||
match_context_push(str + i_str, len, mcx);
|
||||
}
|
||||
return (i_str + len);
|
||||
return ((ptrdiff_t)(i_str + len));
|
||||
}
|
||||
|
||||
/* This loop searches for the longest possible match */
|
||||
@ -102,7 +102,7 @@ mg_match_impl(const char *pat,
|
||||
if (mcx) {
|
||||
match_context_push(str + i_str, len, mcx);
|
||||
}
|
||||
return (i_str + ret + len);
|
||||
return ((ptrdiff_t)i_str + ret + (ptrdiff_t)len);
|
||||
}
|
||||
|
||||
return -1;
|
||||
|
240
vendor/CivetWeb/mod_gnutls.inl
vendored
Normal file
240
vendor/CivetWeb/mod_gnutls.inl
vendored
Normal file
@ -0,0 +1,240 @@
|
||||
#if defined(USE_GNUTLS) // USE_GNUTLS used with NO_SSL
|
||||
|
||||
#include <gnutls/gnutls.h>
|
||||
#include <gnutls/x509.h>
|
||||
|
||||
typedef struct {
|
||||
gnutls_session_t sess;
|
||||
} SSL;
|
||||
typedef struct {
|
||||
gnutls_certificate_credentials_t cred;
|
||||
gnutls_priority_t prio;
|
||||
} SSL_CTX;
|
||||
|
||||
|
||||
/* public api */
|
||||
CIVETWEB_API int gtls_sslctx_init(SSL_CTX *ctx, const char *crt);
|
||||
CIVETWEB_API void gtls_sslctx_uninit(SSL_CTX *ctx);
|
||||
CIVETWEB_API void gtls_ssl_close(SSL *ssl);
|
||||
CIVETWEB_API int gtls_ssl_accept(SSL **ssl,
|
||||
SSL_CTX *ssl_ctx,
|
||||
int sock,
|
||||
struct mg_context *phys_ctx);
|
||||
CIVETWEB_API int gtls_ssl_read(SSL *ssl, unsigned char *buf, size_t len);
|
||||
CIVETWEB_API int gtls_ssl_write(SSL *ssl, const unsigned char *buf, size_t len);
|
||||
|
||||
|
||||
CIVETWEB_API int
|
||||
gtls_sslctx_init(SSL_CTX *ctx, const char *crt)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (ctx == NULL || crt == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
DEBUG_TRACE("%s", "Initializing GnuTLS SSL");
|
||||
|
||||
rc = gnutls_certificate_allocate_credentials(&ctx->cred);
|
||||
if (rc != GNUTLS_E_SUCCESS) {
|
||||
DEBUG_TRACE("Failed to allocate credentials (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
rc = gnutls_priority_init(&ctx->prio, NULL, NULL);
|
||||
if (rc != GNUTLS_E_SUCCESS) {
|
||||
DEBUG_TRACE("Failed to allocate priority cache (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
rc = gnutls_certificate_set_x509_key_file2(ctx->cred,
|
||||
crt,
|
||||
crt,
|
||||
GNUTLS_X509_FMT_PEM,
|
||||
NULL,
|
||||
GNUTLS_PKCS_PLAIN
|
||||
| GNUTLS_PKCS_NULL_PASSWORD);
|
||||
if (rc != GNUTLS_E_SUCCESS) {
|
||||
DEBUG_TRACE("TLS parse crt/key file failed (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
failed:
|
||||
gtls_sslctx_uninit(ctx);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
CIVETWEB_API void
|
||||
gtls_sslctx_uninit(SSL_CTX *ctx)
|
||||
{
|
||||
if (ctx != NULL) {
|
||||
gnutls_certificate_free_credentials(ctx->cred);
|
||||
gnutls_priority_deinit(ctx->prio);
|
||||
ctx->cred = NULL;
|
||||
ctx->prio = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CIVETWEB_API int
|
||||
gtls_ssl_accept(SSL **ssl,
|
||||
SSL_CTX *ssl_ctx,
|
||||
int sock,
|
||||
struct mg_context *phys_ctx)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (ssl == NULL || ssl_ctx == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
DEBUG_TRACE("TLS accept processing %p", ssl);
|
||||
|
||||
*ssl = (SSL *)mg_calloc_ctx(1, sizeof(SSL), phys_ctx);
|
||||
if (*ssl == NULL) {
|
||||
DEBUG_TRACE("Failed to allocate memory for session %zu", sizeof(SSL));
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = gnutls_init(&(*ssl)->sess, GNUTLS_SERVER);
|
||||
if (rc != GNUTLS_E_SUCCESS) {
|
||||
DEBUG_TRACE("Failed to initialize session (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
rc = gnutls_priority_set((*ssl)->sess, ssl_ctx->prio);
|
||||
if (rc != GNUTLS_E_SUCCESS) {
|
||||
DEBUG_TRACE("TLS set priortities failed (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
rc = gnutls_credentials_set((*ssl)->sess,
|
||||
GNUTLS_CRD_CERTIFICATE,
|
||||
ssl_ctx->cred);
|
||||
if (rc != GNUTLS_E_SUCCESS) {
|
||||
DEBUG_TRACE("TLS set credentials failed (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
gnutls_certificate_send_x509_rdn_sequence((*ssl)->sess, 1);
|
||||
gnutls_certificate_server_set_request((*ssl)->sess, GNUTLS_CERT_IGNORE);
|
||||
gnutls_handshake_set_timeout((*ssl)->sess,
|
||||
GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT);
|
||||
gnutls_transport_set_int((*ssl)->sess, sock);
|
||||
|
||||
while ((rc = gnutls_handshake((*ssl)->sess)) != GNUTLS_E_SUCCESS) {
|
||||
if (gnutls_error_is_fatal(rc)) {
|
||||
if (rc == GNUTLS_E_FATAL_ALERT_RECEIVED) {
|
||||
DEBUG_TRACE("TLS fatal alert received: %s",
|
||||
gnutls_alert_get_name(
|
||||
gnutls_alert_get((*ssl)->sess)));
|
||||
} else {
|
||||
DEBUG_TRACE("TLS handshake failed (%d): %s",
|
||||
rc,
|
||||
gnutls_strerror(rc));
|
||||
}
|
||||
|
||||
goto failed;
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_TRACE("TLS connection %p accepted", *ssl);
|
||||
|
||||
return 0;
|
||||
|
||||
failed:
|
||||
gnutls_deinit((*ssl)->sess);
|
||||
mg_free(*ssl);
|
||||
*ssl = NULL;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
CIVETWEB_API void
|
||||
gtls_ssl_close(SSL *ssl)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (ssl == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
while ((rc = gnutls_bye(ssl->sess, GNUTLS_SHUT_RDWR)) != GNUTLS_E_SUCCESS) {
|
||||
switch (rc) {
|
||||
case GNUTLS_E_AGAIN: /* fall through */
|
||||
case GNUTLS_E_INTERRUPTED:
|
||||
continue;
|
||||
default: /* should actually never happen */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_TRACE("TLS connection %p closed", ssl);
|
||||
gnutls_deinit(ssl->sess);
|
||||
mg_free(ssl);
|
||||
}
|
||||
|
||||
|
||||
CIVETWEB_API int
|
||||
gtls_ssl_read(SSL *ssl, unsigned char *buf, size_t len)
|
||||
{
|
||||
ssize_t rc;
|
||||
|
||||
if (ssl == NULL) {
|
||||
return GNUTLS_E_INVALID_SESSION;
|
||||
}
|
||||
|
||||
while ((rc = gnutls_record_recv(ssl->sess, buf, len)) < 0) {
|
||||
switch (rc) {
|
||||
case GNUTLS_E_AGAIN: /* fall through */
|
||||
case GNUTLS_E_INTERRUPTED:
|
||||
continue;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* DEBUG_TRACE("gnutls_record_recv: %d", rc); */
|
||||
return (int)rc;
|
||||
}
|
||||
|
||||
|
||||
CIVETWEB_API int
|
||||
gtls_ssl_write(SSL *ssl, const unsigned char *buf, size_t len)
|
||||
{
|
||||
ssize_t rc;
|
||||
|
||||
if (ssl == NULL) {
|
||||
return GNUTLS_E_INVALID_SESSION;
|
||||
}
|
||||
|
||||
while ((rc = gnutls_record_send(ssl->sess, buf, len)) < 0) {
|
||||
switch (rc) {
|
||||
case GNUTLS_E_AGAIN: /* fall through */
|
||||
case GNUTLS_E_INTERRUPTED:
|
||||
continue;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* DEBUG_TRACE("gnutls_record_send: %d", rc); */
|
||||
return (int)rc;
|
||||
}
|
||||
|
||||
#endif /* USE_GNUTLS */
|
45
vendor/CivetWeb/mod_mbedtls.inl
vendored
45
vendor/CivetWeb/mod_mbedtls.inl
vendored
@ -1,11 +1,19 @@
|
||||
#if defined(USE_MBEDTLS) // USE_MBEDTLS used with NO_SSL
|
||||
|
||||
#include "mbedtls/certs.h"
|
||||
#include "mbedtls/ctr_drbg.h"
|
||||
#include "mbedtls/debug.h"
|
||||
#include "mbedtls/entropy.h"
|
||||
#include "mbedtls/error.h"
|
||||
|
||||
#if MBEDTLS_VERSION_NUMBER >= 0x03000000
|
||||
// The file include/mbedtls/net.h was removed in v3.0.0 because its only
|
||||
// function was to include mbedtls/net_sockets.h which now should be included
|
||||
// directly.
|
||||
#include "mbedtls/net_sockets.h"
|
||||
#else
|
||||
#include "mbedtls/net.h"
|
||||
#endif
|
||||
|
||||
#include "mbedtls/pk.h"
|
||||
#include "mbedtls/platform.h"
|
||||
#include "mbedtls/ssl.h"
|
||||
@ -80,6 +88,19 @@ mbed_sslctx_init(SSL_CTX *ctx, const char *crt)
|
||||
mbedtls_ctr_drbg_init(&ctx->ctr);
|
||||
mbedtls_x509_crt_init(&ctx->cert);
|
||||
|
||||
#ifdef MBEDTLS_PSA_CRYPTO_C
|
||||
/* Initialize PSA crypto (mandatory with TLS 1.3)
|
||||
* This must be done before calling any other PSA Crypto
|
||||
* functions or they will fail with PSA_ERROR_BAD_STATE
|
||||
*/
|
||||
const psa_status_t status = psa_crypto_init();
|
||||
if (status != PSA_SUCCESS) {
|
||||
DEBUG_TRACE("Failed to initialize PSA crypto, returned %d\n",
|
||||
(int)status);
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
rc = mbedtls_ctr_drbg_seed(&ctx->ctr,
|
||||
mbedtls_entropy_func,
|
||||
&ctx->entropy,
|
||||
@ -90,7 +111,17 @@ mbed_sslctx_init(SSL_CTX *ctx, const char *crt)
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if MBEDTLS_VERSION_NUMBER >= 0x03000000
|
||||
// mbedtls_pk_parse_keyfile() has changed in mbedTLS 3.0. You now need
|
||||
// to pass a properly seeded, cryptographically secure RNG when calling
|
||||
// these functions. It is used for blinding, a countermeasure against
|
||||
// side-channel attacks.
|
||||
// https://github.com/Mbed-TLS/mbedtls/blob/development/docs/3.0-migration-guide.md#some-functions-gained-an-rng-parameter
|
||||
rc = mbedtls_pk_parse_keyfile(
|
||||
&ctx->pkey, crt, NULL, mbedtls_ctr_drbg_random, &ctx->ctr);
|
||||
#else
|
||||
rc = mbedtls_pk_parse_keyfile(&ctx->pkey, crt, NULL);
|
||||
#endif
|
||||
if (rc != 0) {
|
||||
DEBUG_TRACE("TLS parse key file failed (%i)", rc);
|
||||
return -1;
|
||||
@ -170,7 +201,13 @@ mbed_ssl_accept(mbedtls_ssl_context **ssl,
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if MBEDTLS_VERSION_NUMBER >= 0x03000000
|
||||
DEBUG_TRACE("TLS connection %p accepted, state: %d",
|
||||
ssl,
|
||||
(*ssl)->MBEDTLS_PRIVATE(state));
|
||||
#else
|
||||
DEBUG_TRACE("TLS connection %p accepted, state: %d", ssl, (*ssl)->state);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -196,7 +233,13 @@ mbed_ssl_handshake(mbedtls_ssl_context *ssl)
|
||||
}
|
||||
}
|
||||
|
||||
#if MBEDTLS_VERSION_NUMBER >= 0x03000000
|
||||
DEBUG_TRACE("TLS handshake rc: %d, state: %d",
|
||||
rc,
|
||||
ssl->MBEDTLS_PRIVATE(state));
|
||||
#else
|
||||
DEBUG_TRACE("TLS handshake rc: %d, state: %d", rc, ssl->state);
|
||||
#endif
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
18
vendor/CivetWeb/sort.inl
vendored
18
vendor/CivetWeb/sort.inl
vendored
@ -14,32 +14,32 @@ mg_sort(void *data,
|
||||
*/
|
||||
|
||||
/* We use ShellSort here with this gap sequence: https://oeis.org/A102549 */
|
||||
int A102549[9] = {1, 4, 10, 23, 57, 132, 301, 701, 1750};
|
||||
int Aidx, gap, i, j, k;
|
||||
size_t A102549[9] = {1, 4, 10, 23, 57, 132, 301, 701, 1750};
|
||||
size_t gap, i, j, k;
|
||||
int Aidx;
|
||||
void *tmp = alloca(elemsize);
|
||||
|
||||
for (Aidx = 8; Aidx >= 0; Aidx--) {
|
||||
gap = A102549[Aidx];
|
||||
if (gap > ((int)elemcount / 2)) {
|
||||
if (gap > (elemcount / 2)) {
|
||||
continue;
|
||||
}
|
||||
for (i = 0; i < gap; i++) {
|
||||
for (j = i; j < (int)elemcount; j += gap) {
|
||||
memcpy(tmp, (void *)((ptrdiff_t)data + elemsize * j), elemsize);
|
||||
for (j = i; j < elemcount; j += gap) {
|
||||
memcpy(tmp, (void *)((size_t)data + elemsize * j), elemsize);
|
||||
|
||||
for (k = j; k >= gap; k -= gap) {
|
||||
void *cmp =
|
||||
(void *)((ptrdiff_t)data + elemsize * (k - gap));
|
||||
void *cmp = (void *)((size_t)data + elemsize * (k - gap));
|
||||
int cmpres = compfunc(cmp, tmp, userarg);
|
||||
if (cmpres > 0) {
|
||||
memcpy((void *)((ptrdiff_t)data + elemsize * k),
|
||||
memcpy((void *)((size_t)data + elemsize * k),
|
||||
cmp,
|
||||
elemsize);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
memcpy((void *)((ptrdiff_t)data + elemsize * k), tmp, elemsize);
|
||||
memcpy((void *)((size_t)data + elemsize * k), tmp, elemsize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
6
vendor/CivetWeb/timer.inl
vendored
6
vendor/CivetWeb/timer.inl
vendored
@ -39,13 +39,16 @@ TIMER_API double
|
||||
timer_getcurrenttime(struct mg_context *ctx)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
uint64_t now_tick64 = 0;
|
||||
#if defined(_WIN64)
|
||||
now_tick64 = GetTickCount64();
|
||||
#else
|
||||
/* GetTickCount returns milliseconds since system start as
|
||||
* unsigned 32 bit value. It will wrap around every 49.7 days.
|
||||
* We need to use a 64 bit counter (will wrap in 500 mio. years),
|
||||
* by adding the 32 bit difference since the last call to a
|
||||
* 64 bit counter. This algorithm will only work, if this
|
||||
* function is called at least once every 7 weeks. */
|
||||
uint64_t now_tick64 = 0;
|
||||
DWORD now_tick = GetTickCount();
|
||||
|
||||
if (ctx->timers) {
|
||||
@ -55,6 +58,7 @@ timer_getcurrenttime(struct mg_context *ctx)
|
||||
ctx->timers->last_tick = now_tick;
|
||||
pthread_mutex_unlock(&ctx->timers->mutex);
|
||||
}
|
||||
#endif
|
||||
return (double)now_tick64 * 1.0E-3;
|
||||
#else
|
||||
struct timespec now_ts;
|
||||
|
1
vendor/ConcurrentQueue/LICENSE.md
vendored
1
vendor/ConcurrentQueue/LICENSE.md
vendored
@ -1,6 +1,7 @@
|
||||
This license file applies to everything in this repository except that which
|
||||
is explicitly annotated as being written by other authors, i.e. the Boost
|
||||
queue (included in the benchmarks for comparison), Intel's TBB library (ditto),
|
||||
dlib::pipe (ditto),
|
||||
the CDSChecker tool (used for verification), the Relacy model checker (ditto),
|
||||
and Jeff Preshing's semaphore implementation (used in the blocking queue) which
|
||||
has a zlib license (embedded in lightweightsempahore.h).
|
||||
|
@ -544,7 +544,7 @@ public:
|
||||
// Returns true if the underlying atomic variables used by
|
||||
// the queue are lock-free (they should be on most platforms).
|
||||
// Thread-safe.
|
||||
static bool is_lock_free()
|
||||
static constexpr bool is_lock_free()
|
||||
{
|
||||
return ConcurrentQueue::is_lock_free();
|
||||
}
|
||||
|
165
vendor/ConcurrentQueue/include/concurrentqueue.h
vendored
165
vendor/ConcurrentQueue/include/concurrentqueue.h
vendored
@ -31,7 +31,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||
// Disable -Wconversion warnings (spuriously triggered when Traits::size_t and
|
||||
// Traits::index_t are set to < 32 bits, causing integer promotion, causing warnings
|
||||
// upon assigning any computed values)
|
||||
@ -77,6 +77,7 @@
|
||||
#include <climits> // for CHAR_BIT
|
||||
#include <array>
|
||||
#include <thread> // partly for __WINPTHREADS_VERSION if on MinGW-w64 w/ POSIX threading
|
||||
#include <mutex> // used for thread exit synchronization
|
||||
|
||||
// Platform-specific definitions of a numeric thread ID type and an invalid value
|
||||
namespace moodycamel { namespace details {
|
||||
@ -104,7 +105,7 @@ namespace moodycamel { namespace details {
|
||||
static const thread_id_t invalid_thread_id2 = 0xFFFFFFFFU; // Not technically guaranteed to be invalid, but is never used in practice. Note that all Win32 thread IDs are presently multiples of 4.
|
||||
static inline thread_id_t thread_id() { return static_cast<thread_id_t>(::GetCurrentThreadId()); }
|
||||
} }
|
||||
#elif defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || (defined(__APPLE__) && TARGET_OS_IPHONE)
|
||||
#elif defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || (defined(__APPLE__) && TARGET_OS_IPHONE) || defined(__MVS__) || defined(MOODYCAMEL_NO_THREAD_LOCAL)
|
||||
namespace moodycamel { namespace details {
|
||||
static_assert(sizeof(std::thread::id) == 4 || sizeof(std::thread::id) == 8, "std::thread::id is expected to be either 4 or 8 bytes");
|
||||
|
||||
@ -216,9 +217,9 @@ namespace moodycamel { namespace details {
|
||||
// VS2013 doesn't support `thread_local`, and MinGW-w64 w/ POSIX threading has a crippling bug: http://sourceforge.net/p/mingw-w64/bugs/445
|
||||
// g++ <=4.7 doesn't support thread_local either.
|
||||
// Finally, iOS/ARM doesn't have support for it either, and g++/ARM allows it to compile but it's unconfirmed to actually work
|
||||
#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && (!defined(__MINGW32__) && !defined(__MINGW64__) || !defined(__WINPTHREADS_VERSION)) && (!defined(__GNUC__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && (!defined(__APPLE__) || !TARGET_OS_IPHONE) && !defined(__arm__) && !defined(_M_ARM) && !defined(__aarch64__)
|
||||
#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && (!defined(__MINGW32__) && !defined(__MINGW64__) || !defined(__WINPTHREADS_VERSION)) && (!defined(__GNUC__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && (!defined(__APPLE__) || !TARGET_OS_IPHONE) && !defined(__arm__) && !defined(_M_ARM) && !defined(__aarch64__) && !defined(__MVS__)
|
||||
// Assume `thread_local` is fully supported in all other C++11 compilers/platforms
|
||||
//#define MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED // always disabled for now since several users report having problems with it on
|
||||
#define MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED // tentatively enabled for now; years ago several users report having problems with it on
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -378,7 +379,14 @@ struct ConcurrentQueueDefaultTraits
|
||||
// consumer threads exceeds the number of idle cores (in which case try 0-100).
|
||||
// Only affects instances of the BlockingConcurrentQueue.
|
||||
static const int MAX_SEMA_SPINS = 10000;
|
||||
|
||||
|
||||
// Whether to recycle dynamically-allocated blocks into an internal free list or
|
||||
// not. If false, only pre-allocated blocks (controlled by the constructor
|
||||
// arguments) will be recycled, and all others will be `free`d back to the heap.
|
||||
// Note that blocks consumed by explicit producers are only freed on destruction
|
||||
// of the queue (not following destruction of the token) regardless of this trait.
|
||||
static const bool RECYCLE_ALLOCATED_BLOCKS = false;
|
||||
|
||||
|
||||
#ifndef MCDBGQ_USE_RELACY
|
||||
// Memory allocation can be customized if needed.
|
||||
@ -468,15 +476,10 @@ namespace details
|
||||
template<typename T>
|
||||
static inline bool circular_less_than(T a, T b)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4554)
|
||||
#endif
|
||||
static_assert(std::is_integral<T>::value && !std::numeric_limits<T>::is_signed, "circular_less_than is intended to be used only with unsigned integer types");
|
||||
return static_cast<T>(a - b) > static_cast<T>(static_cast<T>(1) << static_cast<T>(sizeof(T) * CHAR_BIT - 1));
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
return static_cast<T>(a - b) > static_cast<T>(static_cast<T>(1) << (static_cast<T>(sizeof(T) * CHAR_BIT - 1)));
|
||||
// Note: extra parens around rhs of operator<< is MSVC bug: https://developercommunity2.visualstudio.com/t/C4554-triggers-when-both-lhs-and-rhs-is/10034931
|
||||
// silencing the bug requires #pragma warning(disable: 4554) around the calling code and has no effect when done here.
|
||||
}
|
||||
|
||||
template<typename U>
|
||||
@ -506,9 +509,9 @@ namespace details
|
||||
template<typename T>
|
||||
static inline void swap_relaxed(std::atomic<T>& left, std::atomic<T>& right)
|
||||
{
|
||||
T temp = std::move(left.load(std::memory_order_relaxed));
|
||||
left.store(std::move(right.load(std::memory_order_relaxed)), std::memory_order_relaxed);
|
||||
right.store(std::move(temp), std::memory_order_relaxed);
|
||||
T temp = left.load(std::memory_order_relaxed);
|
||||
left.store(right.load(std::memory_order_relaxed), std::memory_order_relaxed);
|
||||
right.store(temp, std::memory_order_relaxed);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
@ -555,6 +558,8 @@ namespace details
|
||||
typedef RelacyThreadExitListener ThreadExitListener;
|
||||
typedef RelacyThreadExitNotifier ThreadExitNotifier;
|
||||
#else
|
||||
class ThreadExitNotifier;
|
||||
|
||||
struct ThreadExitListener
|
||||
{
|
||||
typedef void (*callback_t)(void*);
|
||||
@ -562,22 +567,29 @@ namespace details
|
||||
void* userData;
|
||||
|
||||
ThreadExitListener* next; // reserved for use by the ThreadExitNotifier
|
||||
ThreadExitNotifier* chain; // reserved for use by the ThreadExitNotifier
|
||||
};
|
||||
|
||||
|
||||
|
||||
class ThreadExitNotifier
|
||||
{
|
||||
public:
|
||||
static void subscribe(ThreadExitListener* listener)
|
||||
{
|
||||
auto& tlsInst = instance();
|
||||
std::lock_guard<std::mutex> guard(mutex());
|
||||
listener->next = tlsInst.tail;
|
||||
listener->chain = &tlsInst;
|
||||
tlsInst.tail = listener;
|
||||
}
|
||||
|
||||
static void unsubscribe(ThreadExitListener* listener)
|
||||
{
|
||||
auto& tlsInst = instance();
|
||||
std::lock_guard<std::mutex> guard(mutex());
|
||||
if (!listener->chain) {
|
||||
return; // race with ~ThreadExitNotifier
|
||||
}
|
||||
auto& tlsInst = *listener->chain;
|
||||
listener->chain = nullptr;
|
||||
ThreadExitListener** prev = &tlsInst.tail;
|
||||
for (auto ptr = tlsInst.tail; ptr != nullptr; ptr = ptr->next) {
|
||||
if (ptr == listener) {
|
||||
@ -597,7 +609,9 @@ namespace details
|
||||
{
|
||||
// This thread is about to exit, let everyone know!
|
||||
assert(this == &instance() && "If this assert fails, you likely have a buggy compiler! Change the preprocessor conditions such that MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED is no longer defined.");
|
||||
std::lock_guard<std::mutex> guard(mutex());
|
||||
for (auto ptr = tail; ptr != nullptr; ptr = ptr->next) {
|
||||
ptr->chain = nullptr;
|
||||
ptr->callback(ptr->userData);
|
||||
}
|
||||
}
|
||||
@ -608,6 +622,13 @@ namespace details
|
||||
static thread_local ThreadExitNotifier notifier;
|
||||
return notifier;
|
||||
}
|
||||
|
||||
static inline std::mutex& mutex()
|
||||
{
|
||||
// Must be static because the ThreadExitNotifier could be destroyed while unsubscribe is called
|
||||
static std::mutex mutex;
|
||||
return mutex;
|
||||
}
|
||||
|
||||
private:
|
||||
ThreadExitListener* tail;
|
||||
@ -789,7 +810,7 @@ public:
|
||||
// queue is fully constructed before it starts being used by other threads (this
|
||||
// includes making the memory effects of construction visible, possibly with a
|
||||
// memory barrier).
|
||||
explicit ConcurrentQueue(size_t capacity = 6 * BLOCK_SIZE)
|
||||
explicit ConcurrentQueue(size_t capacity = 32 * BLOCK_SIZE)
|
||||
: producerListTail(nullptr),
|
||||
producerCount(0),
|
||||
initialBlockPoolIndex(0),
|
||||
@ -1314,7 +1335,7 @@ public:
|
||||
// Returns true if the underlying atomic variables used by
|
||||
// the queue are lock-free (they should be on most platforms).
|
||||
// Thread-safe.
|
||||
static bool is_lock_free()
|
||||
static constexpr bool is_lock_free()
|
||||
{
|
||||
return
|
||||
details::static_is_lock_free<bool>::value == 2 &&
|
||||
@ -1458,7 +1479,7 @@ private:
|
||||
while (head != nullptr) {
|
||||
auto prevHead = head;
|
||||
auto refs = head->freeListRefs.load(std::memory_order_relaxed);
|
||||
if ((refs & REFS_MASK) == 0 || !head->freeListRefs.compare_exchange_strong(refs, refs + 1, std::memory_order_acquire, std::memory_order_relaxed)) {
|
||||
if ((refs & REFS_MASK) == 0 || !head->freeListRefs.compare_exchange_strong(refs, refs + 1, std::memory_order_acquire)) {
|
||||
head = freeListHead.load(std::memory_order_acquire);
|
||||
continue;
|
||||
}
|
||||
@ -1508,7 +1529,7 @@ private:
|
||||
node->freeListRefs.store(1, std::memory_order_release);
|
||||
if (!freeListHead.compare_exchange_strong(head, node, std::memory_order_release, std::memory_order_relaxed)) {
|
||||
// Hmm, the add failed, but we can only try again when the refcount goes back to zero
|
||||
if (node->freeListRefs.fetch_add(SHOULD_BE_ON_FREELIST - 1, std::memory_order_release) == 1) {
|
||||
if (node->freeListRefs.fetch_add(SHOULD_BE_ON_FREELIST - 1, std::memory_order_acq_rel) == 1) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -1538,7 +1559,7 @@ private:
|
||||
struct Block
|
||||
{
|
||||
Block()
|
||||
: next(nullptr), elementsCompletelyDequeued(0), freeListRefs(0), freeListNext(nullptr), shouldBeOnFreeList(false), dynamicallyAllocated(true)
|
||||
: next(nullptr), elementsCompletelyDequeued(0), freeListRefs(0), freeListNext(nullptr), dynamicallyAllocated(true)
|
||||
{
|
||||
#ifdef MCDBGQ_TRACKMEM
|
||||
owner = nullptr;
|
||||
@ -1583,7 +1604,7 @@ private:
|
||||
}
|
||||
else {
|
||||
// Increment counter
|
||||
auto prevVal = elementsCompletelyDequeued.fetch_add(1, std::memory_order_release);
|
||||
auto prevVal = elementsCompletelyDequeued.fetch_add(1, std::memory_order_acq_rel);
|
||||
assert(prevVal < BLOCK_SIZE);
|
||||
return prevVal == BLOCK_SIZE - 1;
|
||||
}
|
||||
@ -1606,7 +1627,7 @@ private:
|
||||
}
|
||||
else {
|
||||
// Increment counter
|
||||
auto prevVal = elementsCompletelyDequeued.fetch_add(count, std::memory_order_release);
|
||||
auto prevVal = elementsCompletelyDequeued.fetch_add(count, std::memory_order_acq_rel);
|
||||
assert(prevVal + count <= BLOCK_SIZE);
|
||||
return prevVal + count == BLOCK_SIZE;
|
||||
}
|
||||
@ -1655,7 +1676,6 @@ private:
|
||||
public:
|
||||
std::atomic<std::uint32_t> freeListRefs;
|
||||
std::atomic<Block*> freeListNext;
|
||||
std::atomic<bool> shouldBeOnFreeList;
|
||||
bool dynamicallyAllocated; // Perhaps a better name for this would be 'isNotPartOfInitialBlockPool'
|
||||
|
||||
#ifdef MCDBGQ_TRACKMEM
|
||||
@ -1810,12 +1830,7 @@ private:
|
||||
auto block = this->tailBlock;
|
||||
do {
|
||||
auto nextBlock = block->next;
|
||||
if (block->dynamicallyAllocated) {
|
||||
destroy(block);
|
||||
}
|
||||
else {
|
||||
this->parent->add_block_to_free_list(block);
|
||||
}
|
||||
this->parent->add_block_to_free_list(block);
|
||||
block = nextBlock;
|
||||
} while (block != this->tailBlock);
|
||||
}
|
||||
@ -1998,7 +2013,7 @@ private:
|
||||
// block size (in order to get a correct signed block count offset in all cases):
|
||||
auto headBase = localBlockIndex->entries[localBlockIndexHead].base;
|
||||
auto blockBaseIndex = index & ~static_cast<index_t>(BLOCK_SIZE - 1);
|
||||
auto offset = static_cast<size_t>(static_cast<typename std::make_signed<index_t>::type>(blockBaseIndex - headBase) / BLOCK_SIZE);
|
||||
auto offset = static_cast<size_t>(static_cast<typename std::make_signed<index_t>::type>(blockBaseIndex - headBase) / static_cast<typename std::make_signed<index_t>::type>(BLOCK_SIZE));
|
||||
auto block = localBlockIndex->entries[(localBlockIndexHead + offset) & (localBlockIndex->size - 1)].block;
|
||||
|
||||
// Dequeue
|
||||
@ -2259,7 +2274,7 @@ private:
|
||||
|
||||
auto headBase = localBlockIndex->entries[localBlockIndexHead].base;
|
||||
auto firstBlockBaseIndex = firstIndex & ~static_cast<index_t>(BLOCK_SIZE - 1);
|
||||
auto offset = static_cast<size_t>(static_cast<typename std::make_signed<index_t>::type>(firstBlockBaseIndex - headBase) / BLOCK_SIZE);
|
||||
auto offset = static_cast<size_t>(static_cast<typename std::make_signed<index_t>::type>(firstBlockBaseIndex - headBase) / static_cast<typename std::make_signed<index_t>::type>(BLOCK_SIZE));
|
||||
auto indexIndex = (localBlockIndexHead + offset) & (localBlockIndex->size - 1);
|
||||
|
||||
// Iterate the blocks and dequeue
|
||||
@ -2906,13 +2921,15 @@ private:
|
||||
else if (!new_block_index()) {
|
||||
return false;
|
||||
}
|
||||
localBlockIndex = blockIndex.load(std::memory_order_relaxed);
|
||||
newTail = (localBlockIndex->tail.load(std::memory_order_relaxed) + 1) & (localBlockIndex->capacity - 1);
|
||||
idxEntry = localBlockIndex->index[newTail];
|
||||
assert(idxEntry->key.load(std::memory_order_relaxed) == INVALID_BLOCK_BASE);
|
||||
idxEntry->key.store(blockStartIndex, std::memory_order_relaxed);
|
||||
localBlockIndex->tail.store(newTail, std::memory_order_release);
|
||||
return true;
|
||||
else {
|
||||
localBlockIndex = blockIndex.load(std::memory_order_relaxed);
|
||||
newTail = (localBlockIndex->tail.load(std::memory_order_relaxed) + 1) & (localBlockIndex->capacity - 1);
|
||||
idxEntry = localBlockIndex->index[newTail];
|
||||
assert(idxEntry->key.load(std::memory_order_relaxed) == INVALID_BLOCK_BASE);
|
||||
idxEntry->key.store(blockStartIndex, std::memory_order_relaxed);
|
||||
localBlockIndex->tail.store(newTail, std::memory_order_release);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
inline void rewind_block_index_tail()
|
||||
@ -2940,7 +2957,7 @@ private:
|
||||
assert(tailBase != INVALID_BLOCK_BASE);
|
||||
// Note: Must use division instead of shift because the index may wrap around, causing a negative
|
||||
// offset, whose negativity we want to preserve
|
||||
auto offset = static_cast<size_t>(static_cast<typename std::make_signed<index_t>::type>(index - tailBase) / BLOCK_SIZE);
|
||||
auto offset = static_cast<size_t>(static_cast<typename std::make_signed<index_t>::type>(index - tailBase) / static_cast<typename std::make_signed<index_t>::type>(BLOCK_SIZE));
|
||||
size_t idx = (tail + offset) & (localBlockIndex->capacity - 1);
|
||||
assert(localBlockIndex->index[idx]->key.load(std::memory_order_relaxed) == index && localBlockIndex->index[idx]->value.load(std::memory_order_relaxed) != nullptr);
|
||||
return idx;
|
||||
@ -3052,7 +3069,12 @@ private:
|
||||
#ifdef MCDBGQ_TRACKMEM
|
||||
block->owner = nullptr;
|
||||
#endif
|
||||
freeList.add(block);
|
||||
if (!Traits::RECYCLE_ALLOCATED_BLOCKS && block->dynamicallyAllocated) {
|
||||
destroy(block);
|
||||
}
|
||||
else {
|
||||
freeList.add(block);
|
||||
}
|
||||
}
|
||||
|
||||
inline void add_blocks_to_free_list(Block* block)
|
||||
@ -3203,12 +3225,6 @@ private:
|
||||
//////////////////////////////////
|
||||
|
||||
ProducerBase* recycle_or_create_producer(bool isExplicit)
|
||||
{
|
||||
bool recycled;
|
||||
return recycle_or_create_producer(isExplicit, recycled);
|
||||
}
|
||||
|
||||
ProducerBase* recycle_or_create_producer(bool isExplicit, bool& recycled)
|
||||
{
|
||||
#ifdef MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH
|
||||
debug::DebugLock lock(implicitProdMutex);
|
||||
@ -3219,13 +3235,11 @@ private:
|
||||
bool expected = true;
|
||||
if (ptr->inactive.compare_exchange_strong(expected, /* desired */ false, std::memory_order_acquire, std::memory_order_relaxed)) {
|
||||
// We caught one! It's been marked as activated, the caller can have it
|
||||
recycled = true;
|
||||
return ptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
recycled = false;
|
||||
|
||||
return add_producer(isExplicit ? static_cast<ProducerBase*>(create<ExplicitProducer>(this)) : create<ImplicitProducer>(this));
|
||||
}
|
||||
|
||||
@ -3396,7 +3410,7 @@ private:
|
||||
// Look for the id in this hash
|
||||
auto index = hashedId;
|
||||
while (true) { // Not an infinite loop because at least one slot is free in the hash table
|
||||
index &= hash->capacity - 1;
|
||||
index &= hash->capacity - 1u;
|
||||
|
||||
auto probedKey = hash->entries[index].key.load(std::memory_order_relaxed);
|
||||
if (probedKey == id) {
|
||||
@ -3409,15 +3423,14 @@ private:
|
||||
if (hash != mainHash) {
|
||||
index = hashedId;
|
||||
while (true) {
|
||||
index &= mainHash->capacity - 1;
|
||||
probedKey = mainHash->entries[index].key.load(std::memory_order_relaxed);
|
||||
index &= mainHash->capacity - 1u;
|
||||
auto empty = details::invalid_thread_id;
|
||||
#ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED
|
||||
auto reusable = details::invalid_thread_id2;
|
||||
if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed)) ||
|
||||
(probedKey == reusable && mainHash->entries[index].key.compare_exchange_strong(reusable, id, std::memory_order_acquire, std::memory_order_acquire))) {
|
||||
if (mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_seq_cst, std::memory_order_relaxed) ||
|
||||
mainHash->entries[index].key.compare_exchange_strong(reusable, id, std::memory_order_seq_cst, std::memory_order_relaxed)) {
|
||||
#else
|
||||
if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed))) {
|
||||
if (mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_seq_cst, std::memory_order_relaxed)) {
|
||||
#endif
|
||||
mainHash->entries[index].value = value;
|
||||
break;
|
||||
@ -3446,7 +3459,7 @@ private:
|
||||
// locked block).
|
||||
mainHash = implicitProducerHash.load(std::memory_order_acquire);
|
||||
if (newCount >= (mainHash->capacity >> 1)) {
|
||||
auto newCapacity = mainHash->capacity << 1;
|
||||
size_t newCapacity = mainHash->capacity << 1;
|
||||
while (newCount >= (newCapacity >> 1)) {
|
||||
newCapacity <<= 1;
|
||||
}
|
||||
@ -3479,15 +3492,11 @@ private:
|
||||
// to finish being allocated by another thread (and if we just finished allocating above, the condition will
|
||||
// always be true)
|
||||
if (newCount < (mainHash->capacity >> 1) + (mainHash->capacity >> 2)) {
|
||||
bool recycled;
|
||||
auto producer = static_cast<ImplicitProducer*>(recycle_or_create_producer(false, recycled));
|
||||
auto producer = static_cast<ImplicitProducer*>(recycle_or_create_producer(false));
|
||||
if (producer == nullptr) {
|
||||
implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed);
|
||||
return nullptr;
|
||||
}
|
||||
if (recycled) {
|
||||
implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed);
|
||||
}
|
||||
|
||||
#ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED
|
||||
producer->threadExitListener.callback = &ConcurrentQueue::implicit_producer_thread_exited_callback;
|
||||
@ -3497,17 +3506,17 @@ private:
|
||||
|
||||
auto index = hashedId;
|
||||
while (true) {
|
||||
index &= mainHash->capacity - 1;
|
||||
auto probedKey = mainHash->entries[index].key.load(std::memory_order_relaxed);
|
||||
|
||||
index &= mainHash->capacity - 1u;
|
||||
auto empty = details::invalid_thread_id;
|
||||
#ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED
|
||||
auto reusable = details::invalid_thread_id2;
|
||||
if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed)) ||
|
||||
(probedKey == reusable && mainHash->entries[index].key.compare_exchange_strong(reusable, id, std::memory_order_acquire, std::memory_order_acquire))) {
|
||||
#else
|
||||
if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed))) {
|
||||
if (mainHash->entries[index].key.compare_exchange_strong(reusable, id, std::memory_order_seq_cst, std::memory_order_relaxed)) {
|
||||
implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); // already counted as a used slot
|
||||
mainHash->entries[index].value = producer;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_seq_cst, std::memory_order_relaxed)) {
|
||||
mainHash->entries[index].value = producer;
|
||||
break;
|
||||
}
|
||||
@ -3526,9 +3535,6 @@ private:
|
||||
#ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED
|
||||
void implicit_producer_thread_exited(ImplicitProducer* producer)
|
||||
{
|
||||
// Remove from thread exit listeners
|
||||
details::ThreadExitNotifier::unsubscribe(&producer->threadExitListener);
|
||||
|
||||
// Remove from hash
|
||||
#ifdef MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH
|
||||
debug::DebugLock lock(implicitProdMutex);
|
||||
@ -3544,10 +3550,9 @@ private:
|
||||
for (; hash != nullptr; hash = hash->prev) {
|
||||
auto index = hashedId;
|
||||
do {
|
||||
index &= hash->capacity - 1;
|
||||
probedKey = hash->entries[index].key.load(std::memory_order_relaxed);
|
||||
if (probedKey == id) {
|
||||
hash->entries[index].key.store(details::invalid_thread_id2, std::memory_order_release);
|
||||
index &= hash->capacity - 1u;
|
||||
probedKey = id;
|
||||
if (hash->entries[index].key.compare_exchange_strong(probedKey, details::invalid_thread_id2, std::memory_order_seq_cst, std::memory_order_relaxed)) {
|
||||
break;
|
||||
}
|
||||
++index;
|
||||
@ -3737,6 +3742,6 @@ inline void swap(typename ConcurrentQueue<T, Traits>::ImplicitProducerKVP& a, ty
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
@ -24,8 +24,16 @@ extern "C" {
|
||||
}
|
||||
#elif defined(__MACH__)
|
||||
#include <mach/mach.h>
|
||||
#elif defined(__MVS__)
|
||||
#include <zos-semaphore.h>
|
||||
#elif defined(__unix__)
|
||||
#include <semaphore.h>
|
||||
|
||||
#if defined(__GLIBC_PREREQ) && defined(_GNU_SOURCE)
|
||||
#if __GLIBC_PREREQ(2,30)
|
||||
#define MOODYCAMEL_LIGHTWEIGHTSEMAPHORE_MONOTONIC
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace moodycamel
|
||||
@ -159,9 +167,9 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
#elif defined(__unix__)
|
||||
#elif defined(__unix__) || defined(__MVS__)
|
||||
//---------------------------------------------------------
|
||||
// Semaphore (POSIX, Linux)
|
||||
// Semaphore (POSIX, Linux, zOS)
|
||||
//---------------------------------------------------------
|
||||
class Semaphore
|
||||
{
|
||||
@ -209,7 +217,11 @@ public:
|
||||
struct timespec ts;
|
||||
const int usecs_in_1_sec = 1000000;
|
||||
const int nsecs_in_1_sec = 1000000000;
|
||||
#ifdef MOODYCAMEL_LIGHTWEIGHTSEMAPHORE_MONOTONIC
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
#else
|
||||
clock_gettime(CLOCK_REALTIME, &ts);
|
||||
#endif
|
||||
ts.tv_sec += (time_t)(usecs / usecs_in_1_sec);
|
||||
ts.tv_nsec += (long)(usecs % usecs_in_1_sec) * 1000;
|
||||
// sem_timedwait bombs if you have more than 1e9 in tv_nsec
|
||||
@ -221,7 +233,11 @@ public:
|
||||
|
||||
int rc;
|
||||
do {
|
||||
#ifdef MOODYCAMEL_LIGHTWEIGHTSEMAPHORE_MONOTONIC
|
||||
rc = sem_clockwait(&m_sema, CLOCK_MONOTONIC, &ts);
|
||||
#else
|
||||
rc = sem_timedwait(&m_sema, &ts);
|
||||
#endif
|
||||
} while (rc == -1 && errno == EINTR);
|
||||
return rc == 0;
|
||||
}
|
||||
|
2
vendor/Fmt/CMakeLists.txt
vendored
2
vendor/Fmt/CMakeLists.txt
vendored
@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.8...3.26)
|
||||
cmake_minimum_required(VERSION 3.10...3.26)
|
||||
|
||||
# Fallback for using newer policies on CMake <3.12.
|
||||
if(${CMAKE_VERSION} VERSION_LESS 3.12)
|
||||
|
@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.8...3.25)
|
||||
cmake_minimum_required(VERSION 3.10...3.25)
|
||||
|
||||
project(fmt-test CXX)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Test if compile errors are produced where necessary.
|
||||
|
||||
cmake_minimum_required(VERSION 3.8...3.25)
|
||||
cmake_minimum_required(VERSION 3.10...3.25)
|
||||
project(compile-error-test CXX)
|
||||
|
||||
set(fmt_headers "
|
||||
@ -64,7 +64,7 @@ function (run_tests)
|
||||
")
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test/CMakeLists.txt" "
|
||||
cmake_minimum_required(VERSION 3.8...3.25)
|
||||
cmake_minimum_required(VERSION 3.10...3.25)
|
||||
project(tests CXX)
|
||||
add_subdirectory(${FMT_DIR} fmt)
|
||||
${cmake_targets}
|
||||
|
@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.8...3.25)
|
||||
cmake_minimum_required(VERSION 3.10...3.25)
|
||||
|
||||
project(fmt-test)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.8...3.25)
|
||||
cmake_minimum_required(VERSION 3.10...3.25)
|
||||
|
||||
project(fmt-link CXX)
|
||||
|
||||
|
2
vendor/MDBC/CMakeLists.txt
vendored
2
vendor/MDBC/CMakeLists.txt
vendored
@ -2,7 +2,7 @@
|
||||
|
||||
# This is the LGPL libmariadb project.
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
IF(COMMAND CMAKE_POLICY)
|
||||
SET(NEW_POLICIES CMP0003 CMP0022 CMP0023 CMP0077 CMP0069 CMP0075)
|
||||
|
@ -2,6 +2,8 @@ name: "Code scanning - action"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
@ -11,14 +13,18 @@ jobs:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
security-events: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
submodules: true
|
||||
persist-credentials: false
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
@ -27,9 +33,9 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
uses: github/codeql-action/init@v3
|
||||
|
||||
- run: sudo apt install libipc-run3-perl libfile-slurp-perl libfile-which-perl pandoc
|
||||
- run: sudo apt install libipc-run3-perl pandoc
|
||||
- run: |
|
||||
./bootstrap
|
||||
./configure
|
||||
@ -37,4 +43,4 @@ jobs:
|
||||
make safedist
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
8
vendor/MaxmindDB/.github/workflows/test.yml
vendored
8
vendor/MaxmindDB/.github/workflows/test.yml
vendored
@ -17,9 +17,10 @@ jobs:
|
||||
CC: ${{ matrix.cc }}
|
||||
VERBOSE: 1
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
persist-credentials: false
|
||||
- run: sudo apt install libipc-run3-perl
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
- run: brew install autoconf automake libtool
|
||||
@ -38,9 +39,10 @@ jobs:
|
||||
name: CMake build on ${{matrix.os}}
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
persist-credentials: false
|
||||
- run: cmake -DBUILD_TESTING=ON .
|
||||
- run: cmake --build .
|
||||
- run: ctest -V .
|
||||
- run: ctest -V . -C Debug
|
||||
|
2
vendor/MaxmindDB/.gitignore
vendored
2
vendor/MaxmindDB/.gitignore
vendored
@ -18,6 +18,7 @@
|
||||
/config.*
|
||||
/configure
|
||||
/depcomp
|
||||
/generated
|
||||
/include/maxminddb_config.h
|
||||
/install-sh
|
||||
/libmaxminddb-*
|
||||
@ -43,3 +44,4 @@ Makefile
|
||||
Makefile.in
|
||||
Testing/
|
||||
install_manifest.txt
|
||||
build/
|
||||
|
92
vendor/MaxmindDB/CMakeLists.txt
vendored
92
vendor/MaxmindDB/CMakeLists.txt
vendored
@ -1,8 +1,8 @@
|
||||
cmake_minimum_required (VERSION 3.9)
|
||||
cmake_minimum_required (VERSION 3.9...3.30)
|
||||
|
||||
project(maxminddb
|
||||
LANGUAGES C
|
||||
VERSION 1.6.0
|
||||
VERSION 1.12.2
|
||||
)
|
||||
set(MAXMINDDB_SOVERSION 0.0.7)
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
@ -13,6 +13,11 @@ if (WIN32)
|
||||
endif()
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF)
|
||||
option(BUILD_TESTING "Build test programs" ON)
|
||||
option(BUILD_FUZZING "Build with fuzzer" OFF)
|
||||
option(MAXMINDDB_BUILD_BINARIES "Build binaries" ON)
|
||||
option(MAXMINDDB_INSTALL "Generate the install target" ON)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
include(CheckTypeSize)
|
||||
check_type_size("unsigned __int128" UINT128)
|
||||
@ -35,8 +40,8 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
configure_file(${PROJECT_SOURCE_DIR}/include/maxminddb_config.h.cmake.in
|
||||
${PROJECT_SOURCE_DIR}/include/maxminddb_config.h)
|
||||
configure_file(${PROJECT_SOURCE_DIR}/include/maxminddb_config.h.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/generated/maxminddb_config.h)
|
||||
|
||||
add_library(maxminddb
|
||||
src/maxminddb.c
|
||||
@ -46,7 +51,7 @@ add_library(maxminddb::maxminddb ALIAS maxminddb)
|
||||
|
||||
set_target_properties(maxminddb PROPERTIES VERSION ${MAXMINDDB_SOVERSION})
|
||||
|
||||
target_compile_definitions(maxminddb PUBLIC PACKAGE_VERSION="${PROJECT_VERSION}")
|
||||
target_compile_definitions(maxminddb PRIVATE PACKAGE_VERSION="${PROJECT_VERSION}")
|
||||
|
||||
if(NOT IS_BIG_ENDIAN)
|
||||
target_compile_definitions(maxminddb PRIVATE MMDB_LITTLE_ENDIAN=1)
|
||||
@ -77,28 +82,87 @@ endif()
|
||||
target_include_directories(maxminddb PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/generated/>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
set(MAXMINDB_HEADERS
|
||||
include/maxminddb.h
|
||||
include/maxminddb_config.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/generated/maxminddb_config.h
|
||||
)
|
||||
set_target_properties(maxminddb PROPERTIES PUBLIC_HEADER "${MAXMINDB_HEADERS}")
|
||||
|
||||
#install(TARGETS maxminddb EXPORT maxminddb)
|
||||
if (MAXMINDDB_INSTALL)
|
||||
install(TARGETS maxminddb
|
||||
EXPORT maxminddb)
|
||||
|
||||
# This is required to work with FetchContent
|
||||
# install(EXPORT maxminddb
|
||||
# FILE maxminddb-config.cmake
|
||||
# NAMESPACE maxminddb::
|
||||
# DESTINATION lib/cmake/maxminddb)
|
||||
# This is required to work with FetchContent
|
||||
install(EXPORT maxminddb
|
||||
FILE maxminddb-config.cmake
|
||||
NAMESPACE maxminddb::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/maxminddb)
|
||||
endif()
|
||||
|
||||
# We always want to build mmdblookup
|
||||
#add_subdirectory(bin)
|
||||
if (MAXMINDDB_BUILD_BINARIES)
|
||||
add_subdirectory(bin)
|
||||
endif()
|
||||
|
||||
# Check if man pages exist, if not, generate them
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/man")
|
||||
find_program(PERL perl)
|
||||
if(PERL)
|
||||
message(STATUS "Generating man pages")
|
||||
execute_process(
|
||||
COMMAND ${PERL} ${CMAKE_CURRENT_SOURCE_DIR}/dev-bin/make-man-pages.pl
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
else()
|
||||
message(WARNING "Perl not found. Unable to generate man pages.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Install man pages if they exist
|
||||
if(MAXMINDDB_INSTALL AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/man")
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/man/man1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/man/man3
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (BUILD_TESTING)
|
||||
enable_testing()
|
||||
add_subdirectory(t)
|
||||
endif()
|
||||
|
||||
# Generate libmaxminddb.pc file for pkg-config
|
||||
# Set the required variables as same with autotools
|
||||
set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
|
||||
set(libdir ${CMAKE_INSTALL_LIBDIR})
|
||||
set(includedir ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
set(PACKAGE_VERSION ${maxminddb_VERSION})
|
||||
|
||||
if (MAXMINDDB_INSTALL)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libmaxminddb.pc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/src/libmaxminddb.pc
|
||||
@ONLY)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/src/libmaxminddb.pc
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
endif()
|
||||
|
||||
# uninstall target
|
||||
# if(NOT TARGET uninstall)
|
||||
# configure_file(
|
||||
# "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||
# "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||
# IMMEDIATE @ONLY)
|
||||
|
||||
# add_custom_target(uninstall
|
||||
# COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
||||
# endif()
|
||||
|
99
vendor/MaxmindDB/Changes.md
vendored
99
vendor/MaxmindDB/Changes.md
vendored
@ -1,4 +1,94 @@
|
||||
## 1.7.0
|
||||
## 1.12.2 - 2025-01-10
|
||||
|
||||
* `MMDB_get_entry_data_list()` now always sets the passed `entry_data_list`
|
||||
parameter to either `NULL` or valid memory. This makes it safe for
|
||||
callers to use `MMDB_free_entry_data_list()` on it even in case of error.
|
||||
In 1.12.0 `MMDB_get_entry_data_list()` was changed to not set this
|
||||
parameter to valid memory in additional error cases. That change caused
|
||||
segfaults for certain libraries that assumed it was safe to free memory
|
||||
on error. Doing so was never safe, but worked in some cases. This change
|
||||
makes such calls safe. Reported by Petr Pisar. GitHub
|
||||
maxmind/MaxMind-DB-Reader-XS#39.
|
||||
|
||||
## 1.12.1 - 2025-01-08
|
||||
|
||||
* Added missing `cmake_uninstall.cmake.in` to the source distribution. This
|
||||
was missing from 1.12.0, causing CMake builds to fail. Reported by Marcel
|
||||
Raad. GitHub #367.
|
||||
|
||||
## 1.12.0 - 2025-01-07
|
||||
|
||||
* Fixed memory leaks in `MMDB_open()`. These could happen with invalid
|
||||
databases or in error situations such as failing to allocate memory. As
|
||||
part of the fix, `MMDB_get_entry_data_list()` now frees memory it
|
||||
allocates on additional errors. Previously it failed to clean up when
|
||||
certain errors occurred. Pull request by pkillarjun. GitHub #356.
|
||||
* There is now a build target to fuzz the library. Pull request by
|
||||
pkillarjun. GitHub #357.
|
||||
* Updated `cmake_minimum_required` to a version range to quiet deprecation
|
||||
warnings on new CMake versions. Reported by gmou3. GitHub #359.
|
||||
* The script for generating man pages no longer uses `autodie`. This
|
||||
eliminates the dependency on `IPC::System::Simple`. Reported by gmou3.
|
||||
GitHub #359.
|
||||
* An uninstall target is now included for CMake. Pull request by gmou3.
|
||||
GitHub #362.
|
||||
|
||||
## 1.11.0 - 2024-08-21
|
||||
|
||||
* When building with CMake, the man pages will now be generated and
|
||||
installed. Requested by Thomas Klausner. GitHub #351.
|
||||
* Removed unnecessary `$<INSTALL_INTERFACE:generated>` directory from
|
||||
`target_include_directories` in the CMake build configuration. This is
|
||||
a private build directory. Pull request by Ankur Verma. GitHub #354.
|
||||
|
||||
## 1.10.0 - 2024-06-10
|
||||
|
||||
* When building with CMake, it is now possible to disable the building
|
||||
of binaries (e.g., `mmdblookup`) with the `MAXMINDDB_BUILD_BINARIES`
|
||||
option and the install target generation with the `MAXMINDDB_INSTALL`
|
||||
option. Pull request by Seena Fallah. GitHub #342.
|
||||
* CMake now makes greater use of GNUInstallDirs. Pull request by Maximilian
|
||||
Downey Twiss. GitHub #346.
|
||||
* The reader can now look up records on a database with a search tree
|
||||
that is greater than 4 gigabytes without sometimes returning erroneous
|
||||
results due to an integer overflow.
|
||||
|
||||
## 1.9.1 - 2024-01-09
|
||||
|
||||
* `SSIZE_MAX` is now defined conditionally on Windows. The 1.9.0
|
||||
release would cause a redefinition warning when compiled with MinGW.
|
||||
Reported by Andreas Vögele. GitHub #338.
|
||||
|
||||
## 1.9.0 - 2024-01-09
|
||||
|
||||
* On very large databases, the calculation to determine the search tree
|
||||
size could overflow. This was fixed and several additional guards
|
||||
against overflows were added. Reported by Sami Salonen. GitHub #335.
|
||||
* Removed `sa_family_t` typedef from the public header on Windows. Pull
|
||||
request by Noah Treuhaft. GitHub #334.
|
||||
* The CMake build was adjusted to allow running builds in parallel.
|
||||
Pull request by Vladyslav Miachkov. GitHub #332.
|
||||
|
||||
## 1.8.0 - 2023-11-07
|
||||
|
||||
* `PACKAGE_VERSION` is now a private compile definition when building
|
||||
with CMake. Pull request by bsergean. GitHub #308.
|
||||
* `PACKAGE_VERSION` is no longer defined in `maxminddb.h` on
|
||||
Windows.
|
||||
* The feature test macro `_POSIX_C_SOURCE` is no longer set by
|
||||
`maxminddb.h`. As discussed in GitHub #318, this should be set by
|
||||
applications rather than by libraries.
|
||||
* `assert()` is no longer used outside test code.
|
||||
* The deprecated Visual Studio 12 project files in the `projects/`
|
||||
directory have been removed. CMake should be used when building on
|
||||
Windows.
|
||||
|
||||
## 1.7.1 - 2022-09-30
|
||||
|
||||
* The external symbols test now only runs on Linux. It assumes a Linux
|
||||
environment. Reported by Carlo Cabrera. GitHub #304.
|
||||
|
||||
## 1.7.0 - 2022-09-28
|
||||
|
||||
* `FD_CLOEXEC` is now set on platforms that do not support `O_CLOEXEC`.
|
||||
Reported by rittneje. GitHub #273.
|
||||
@ -6,6 +96,11 @@
|
||||
CMake by setting `MSVC_STATIC_RUNTIME` to `ON`. Pull request by Rafael
|
||||
Santiago. GitHub #269.
|
||||
* The CMake build now works on iOS. Pull request by SpaceIm. GitHub #271.
|
||||
* The CMake build now uses the correct library directory on Linux systems
|
||||
using alternate directory structures. Pull request by Satadru Pramanik.
|
||||
GitHub #284.
|
||||
* File size check now correctly compares the size to `SSIZE_MAX`. Reported
|
||||
by marakew. GitHub #301.
|
||||
|
||||
## 1.6.0 - 2021-04-29
|
||||
|
||||
@ -190,7 +285,7 @@
|
||||
code to think it had found valid metadata when none existed. In addition,
|
||||
this could lead to an attempt to read past the end of the database
|
||||
entirely. Finally, if there are multiple metadata markers in the database,
|
||||
we treat the final one as the start of the metdata, instead of the first.
|
||||
we treat the final one as the start of the metadata, instead of the first.
|
||||
Implemented by Tobias Stoeckmann. GitHub #102.
|
||||
* Don't attempt to mmap a file that is too large to be mmapped on the
|
||||
system. Implemented by Tobias Stoeckmann. GitHub #101.
|
||||
|
4
vendor/MaxmindDB/Makefile.am
vendored
4
vendor/MaxmindDB/Makefile.am
vendored
@ -16,9 +16,9 @@ SUBDIRS += \
|
||||
t
|
||||
endif
|
||||
|
||||
EXTRA_DIST = doc Changes.md LICENSE NOTICE README.md projects/VS12 projects/VS12-tests \
|
||||
EXTRA_DIST = doc Changes.md LICENSE NOTICE README.md \
|
||||
CMakeLists.txt t/CMakeLists.txt bin/CMakeLists.txt \
|
||||
include/maxminddb_config.h.cmake.in
|
||||
cmake_uninstall.cmake.in include/maxminddb_config.h.cmake.in
|
||||
|
||||
dist-hook:
|
||||
dev-bin/make-man-pages.pl $(distdir)
|
||||
|
2
vendor/MaxmindDB/NOTICE
vendored
2
vendor/MaxmindDB/NOTICE
vendored
@ -1,4 +1,4 @@
|
||||
Copyright 2013-2021 MaxMind, Inc.
|
||||
Copyright 2013-2025 MaxMind, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
3
vendor/MaxmindDB/README.dev.md
vendored
3
vendor/MaxmindDB/README.dev.md
vendored
@ -52,8 +52,7 @@ some reason.
|
||||
autoconf automake libtool git-buildpackage libfile-slurp-perl pandoc
|
||||
dirmngr libfile-slurp-tiny-perl libdatetime-perl debhelper dh-autoreconf
|
||||
libipc-run3-perl libtest-output-perl devscripts
|
||||
* Install [hub](https://github.com/github/hub/releases). (Using `./install`
|
||||
from the tarball is fine)
|
||||
* Install [gh](https://github.com/cli/cli/releases).
|
||||
* GitHub ssh key (e.g. in `~/.ssh/id_rsa`)
|
||||
* Git config (e.g. `~/.gitconfig`)
|
||||
* Import your GPG secret key (or create one if you don't have a suitable
|
||||
|
41
vendor/MaxmindDB/README.fuzzing.md
vendored
Normal file
41
vendor/MaxmindDB/README.fuzzing.md
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
# Fuzzing libmaxminddb
|
||||
|
||||
These tests are only meant to be run on GNU/Linux.
|
||||
|
||||
## Build maxminddb fuzzer using libFuzzer.
|
||||
|
||||
### Export flags for fuzzing.
|
||||
|
||||
Note that in `CFLAGS` and `CXXFLAGS`, any type of sanitizers can be added.
|
||||
|
||||
- [AddressSanitizer](https://clang.llvm.org/docs/AddressSanitizer.html),
|
||||
[ThreadSanitizer](https://clang.llvm.org/docs/ThreadSanitizer.html),
|
||||
[MemorySanitizer](https://clang.llvm.org/docs/MemorySanitizer.html),
|
||||
[UndefinedBehaviorSanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html),
|
||||
[LeakSanitizer](https://clang.llvm.org/docs/LeakSanitizer.html).
|
||||
|
||||
```shell
|
||||
$ export CC=clang
|
||||
$ export CXX=clang++
|
||||
$ export CFLAGS="-g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address,undefined -fsanitize=fuzzer-no-link"
|
||||
$ export CXXFLAGS="-g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address,undefined -fsanitize=fuzzer-no-link"
|
||||
$ export LIB_FUZZING_ENGINE="-fsanitize=fuzzer"
|
||||
```
|
||||
|
||||
### Build maxminddb for fuzzing.
|
||||
|
||||
```shell
|
||||
$ mkdir -p build && cd build
|
||||
$ cmake -DBUILD_FUZZING=ON ../.
|
||||
$ cmake --build . -j$(nproc)
|
||||
```
|
||||
|
||||
### Running fuzzer.
|
||||
|
||||
```shell
|
||||
$ mkdir -p fuzz_mmdb_seed fuzz_mmdb_seed_corpus
|
||||
$ find ../t/maxmind-db/test-data/ -type f -size -4k -exec cp {} ./fuzz_mmdb_seed_corpus/ \;
|
||||
$ ./t/fuzz_mmdb fuzz_mmdb_seed/ fuzz_mmdb_seed_corpus/
|
||||
```
|
||||
|
||||
Here is more information about [LibFuzzer](https://llvm.org/docs/LibFuzzer.html).
|
92
vendor/MaxmindDB/README.md
vendored
92
vendor/MaxmindDB/README.md
vendored
@ -6,10 +6,10 @@ designed to facilitate fast lookups of IP addresses while allowing for great
|
||||
flexibility in the type of data associated with an address.
|
||||
|
||||
The MaxMind DB format is an open format. The spec is available at
|
||||
http://maxmind.github.io/MaxMind-DB/. This spec is licensed under the Creative
|
||||
Commons Attribution-ShareAlike 3.0 Unported License.
|
||||
https://maxmind.github.io/MaxMind-DB/. This spec is licensed under the
|
||||
Creative Commons Attribution-ShareAlike 3.0 Unported License.
|
||||
|
||||
See http://dev.maxmind.com/ for more details about MaxMind's GeoIP2 products.
|
||||
See https://dev.maxmind.com/ for more details about MaxMind's GeoIP2 products.
|
||||
|
||||
# License
|
||||
|
||||
@ -30,11 +30,13 @@ structure.
|
||||
|
||||
To install this code, run the following commands:
|
||||
|
||||
$ ./configure
|
||||
$ make
|
||||
$ make check
|
||||
$ sudo make install
|
||||
$ sudo ldconfig
|
||||
```bash
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
```
|
||||
|
||||
You can skip the `make check` step but it's always good to know that tests are
|
||||
passing on your platform.
|
||||
@ -47,8 +49,10 @@ you may need to add the `lib` directory in your `prefix` to your library path.
|
||||
On most Linux distributions when using the default prefix (`/usr/local`), you
|
||||
can do this by running the following commands:
|
||||
|
||||
$ sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf"
|
||||
$ ldconfig
|
||||
```bash
|
||||
sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf"
|
||||
ldconfig
|
||||
```
|
||||
|
||||
## From a GitHub "Source Code" Archive / Git Repo Clone (Achtung!)
|
||||
|
||||
@ -65,7 +69,9 @@ in addition to `make` and a compiler.
|
||||
|
||||
You can clone this repository and build it by running:
|
||||
|
||||
$ git clone --recursive https://github.com/maxmind/libmaxminddb
|
||||
```bash
|
||||
git clone --recursive https://github.com/maxmind/libmaxminddb
|
||||
```
|
||||
|
||||
After cloning, run `./bootstrap` from the `libmaxminddb` directory and then
|
||||
follow the instructions for installing from a named release tarball as
|
||||
@ -77,62 +83,80 @@ We provide a CMake build script. This is primarily targeted at Windows users,
|
||||
but it can be used in other circumstances where the Autotools script does not
|
||||
work.
|
||||
|
||||
$ cmake --build .
|
||||
$ ctest -V .
|
||||
$ cmake --build . --target install
|
||||
```bash
|
||||
cmake -B build
|
||||
cd build/
|
||||
cmake --build .
|
||||
ctest -V .
|
||||
cmake --build . --target install
|
||||
```
|
||||
|
||||
When building with Visual Studio, you may build a multithreaded (MT/MTd)
|
||||
runtime library, using the `MSVC_STATIC_RUNTIME` setting:
|
||||
|
||||
$ cmake -DMSVC_STATIC_RUNTIME=ON -DBUILD_SHARED_LIBS=OFF ..
|
||||
```bash
|
||||
cmake -DMSVC_STATIC_RUNTIME=ON -DBUILD_SHARED_LIBS=OFF ..
|
||||
```
|
||||
|
||||
We also include a CMake `uninstall` target:
|
||||
|
||||
```bash
|
||||
cmake --build . --target uninstall
|
||||
```
|
||||
|
||||
## On Ubuntu via PPA
|
||||
|
||||
MaxMind provides a PPA for recent version of Ubuntu. To add the PPA to your
|
||||
APT sources, run:
|
||||
|
||||
$ sudo add-apt-repository ppa:maxmind/ppa
|
||||
```bash
|
||||
sudo add-apt-repository ppa:maxmind/ppa
|
||||
```
|
||||
|
||||
Then install the packages by running:
|
||||
|
||||
$ sudo apt update
|
||||
$ sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin
|
||||
```
|
||||
|
||||
## On OS X via Homebrew
|
||||
## On macOS via Homebrew or MacPorts
|
||||
|
||||
If you are on OS X and you have homebrew (see http://brew.sh/) you can install
|
||||
libmaxminddb via brew.
|
||||
You can install libmaxminddb on macOS using [Homebrew](https://brew.sh):
|
||||
|
||||
$ brew install libmaxminddb
|
||||
```bash
|
||||
brew install libmaxminddb
|
||||
```
|
||||
|
||||
Or with [MacPorts](https://ports.macports.org/port/libmaxminddb):
|
||||
|
||||
```bash
|
||||
sudo port install libmaxminddb
|
||||
```
|
||||
|
||||
# Requirements
|
||||
|
||||
libmaxminddb requires a minimum of POSIX.1-2001 support. If not specified
|
||||
at compilation time, it defaults to requesting POSIX.1-2008 support.
|
||||
|
||||
# Bug Reports
|
||||
|
||||
Please report bugs by filing an issue with our GitHub issue tracker at
|
||||
https://github.com/maxmind/libmaxminddb/issues
|
||||
|
||||
# Dev Tools
|
||||
|
||||
We have a few development tools under the `dev-bin` directory to make
|
||||
development easier. These are written in Perl or shell. They are:
|
||||
|
||||
* `uncrustify-all.sh` - This runs `uncrustify` on all the code. Please run
|
||||
this before submitting patches.
|
||||
* `valgrind-all.pl` - This runs Valgrind on the tests and `mmdblookup` to
|
||||
check for memory leaks.
|
||||
|
||||
# Creating a Release Tarball
|
||||
|
||||
Use `make safedist` to check the resulting tarball.
|
||||
|
||||
# Copyright and License
|
||||
|
||||
Copyright 2013-2021 MaxMind, Inc.
|
||||
Copyright 2013-2025 MaxMind, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
21
vendor/MaxmindDB/bin/CMakeLists.txt
vendored
21
vendor/MaxmindDB/bin/CMakeLists.txt
vendored
@ -1,13 +1,24 @@
|
||||
# getopt is required by mmdblookup which is not available by default on Windows
|
||||
if(NOT WIN32)
|
||||
# but available in mingw-64 toolchain by-default.
|
||||
|
||||
if(NOT MSVC)
|
||||
add_executable(mmdblookup
|
||||
mmdblookup.c
|
||||
)
|
||||
|
||||
# Otherwise 'undefined reference to WinMain' linker error happen due to wmain()
|
||||
if(MINGW)
|
||||
target_link_options(mmdblookup PRIVATE "-municode")
|
||||
endif()
|
||||
|
||||
target_compile_definitions(mmdblookup PRIVATE PACKAGE_VERSION="${PROJECT_VERSION}")
|
||||
|
||||
target_link_libraries(mmdblookup maxminddb pthread)
|
||||
|
||||
install(
|
||||
TARGETS mmdblookup
|
||||
DESTINATION bin
|
||||
)
|
||||
if (MAXMINDDB_INSTALL)
|
||||
install(
|
||||
TARGETS mmdblookup
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
4
vendor/MaxmindDB/bin/Makefile.am
vendored
4
vendor/MaxmindDB/bin/Makefile.am
vendored
@ -4,6 +4,10 @@ AM_LDFLAGS = $(top_builddir)/src/libmaxminddb.la
|
||||
|
||||
bin_PROGRAMS = mmdblookup
|
||||
|
||||
if WINDOWS
|
||||
AM_LDFLAGS += -municode
|
||||
endif
|
||||
|
||||
if !WINDOWS
|
||||
AM_CPPFLAGS += -pthread
|
||||
AM_LDFLAGS += -pthread
|
||||
|
66
vendor/MaxmindDB/bin/mmdblookup.c
vendored
66
vendor/MaxmindDB/bin/mmdblookup.c
vendored
@ -1,3 +1,7 @@
|
||||
#ifndef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
@ -7,6 +11,7 @@
|
||||
#ifndef _WIN32
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -139,7 +144,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
free((void *)lookup_path);
|
||||
|
||||
srand((int)time(NULL));
|
||||
srand((unsigned int)time(NULL));
|
||||
|
||||
#ifndef _WIN32
|
||||
if (thread_count > 0) {
|
||||
@ -223,6 +228,14 @@ static const char **get_options(int argc,
|
||||
static int help = 0;
|
||||
static int version = 0;
|
||||
|
||||
#ifdef _WIN32
|
||||
char *program = alloca(strlen(argv[0]));
|
||||
_splitpath(argv[0], NULL, NULL, program, NULL);
|
||||
_splitpath(argv[0], NULL, NULL, NULL, program + strlen(program));
|
||||
#else
|
||||
char *program = basename(argv[0]);
|
||||
#endif
|
||||
|
||||
while (1) {
|
||||
static struct option options[] = {
|
||||
{"file", required_argument, 0, 'f'},
|
||||
@ -259,24 +272,24 @@ static const char **get_options(int argc,
|
||||
} else if ('n' == opt_char) {
|
||||
version = 1;
|
||||
} else if ('b' == opt_char) {
|
||||
*iterations = strtol(optarg, NULL, 10);
|
||||
long const i = strtol(optarg, NULL, 10);
|
||||
if (i > INT_MAX) {
|
||||
usage(program, 1, "iterations exceeds maximum value");
|
||||
}
|
||||
*iterations = (int)i;
|
||||
} else if ('h' == opt_char || '?' == opt_char) {
|
||||
help = 1;
|
||||
} else if (opt_char == 't') {
|
||||
*thread_count = strtol(optarg, NULL, 10);
|
||||
long const i = strtol(optarg, NULL, 10);
|
||||
if (i > INT_MAX) {
|
||||
usage(program, 1, "thread count exceeds maximum value");
|
||||
}
|
||||
*thread_count = (int)i;
|
||||
} else if (opt_char == 'I') {
|
||||
*ip_file = optarg;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
char *program = alloca(strlen(argv[0]));
|
||||
_splitpath(argv[0], NULL, NULL, program, NULL);
|
||||
_splitpath(argv[0], NULL, NULL, NULL, program + strlen(program));
|
||||
#else
|
||||
char *program = basename(argv[0]);
|
||||
#endif
|
||||
|
||||
if (help) {
|
||||
usage(program, 0, NULL);
|
||||
}
|
||||
@ -295,7 +308,7 @@ static const char **get_options(int argc,
|
||||
}
|
||||
|
||||
const char **lookup_path =
|
||||
calloc((argc - optind) + 1, sizeof(const char *));
|
||||
calloc((size_t)(argc - optind) + 1, sizeof(const char *));
|
||||
if (!lookup_path) {
|
||||
fprintf(stderr, "calloc(): %s\n", strerror(errno));
|
||||
exit(1);
|
||||
@ -452,12 +465,12 @@ static bool lookup_from_file(MMDB_s *const mmdb,
|
||||
|
||||
if (dump) {
|
||||
fprintf(stdout, "%s:\n", buf);
|
||||
int const status =
|
||||
int const status2 =
|
||||
MMDB_dump_entry_data_list(stderr, entry_data_list, 0);
|
||||
if (status != MMDB_SUCCESS) {
|
||||
if (status2 != MMDB_SUCCESS) {
|
||||
fprintf(stderr,
|
||||
"MMDB_dump_entry_data_list(): %s\n",
|
||||
MMDB_strerror(status));
|
||||
MMDB_strerror(status2));
|
||||
fclose(fh);
|
||||
MMDB_free_entry_data_list(entry_data_list);
|
||||
return false;
|
||||
@ -472,10 +485,10 @@ static bool lookup_from_file(MMDB_s *const mmdb,
|
||||
|
||||
fprintf(
|
||||
stdout,
|
||||
"Looked up %llu addresses in %.2f seconds. %.2f lookups per second.\n",
|
||||
"Looked up %llu addresses in %.2f seconds. %.2Lf lookups per second.\n",
|
||||
i,
|
||||
seconds,
|
||||
i / seconds);
|
||||
(long double)i / seconds);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -594,15 +607,15 @@ static MMDB_lookup_result_s lookup_or_die(MMDB_s *mmdb, const char *ipstr) {
|
||||
MMDB_lookup_string(mmdb, ipstr, &gai_error, &mmdb_error);
|
||||
|
||||
if (0 != gai_error) {
|
||||
#ifdef _WIN32
|
||||
char const *const strerr = gai_strerrorA(gai_error);
|
||||
#else
|
||||
char const *const strerr = gai_strerror(gai_error);
|
||||
#endif
|
||||
fprintf(stderr,
|
||||
"\n Error from call to getaddrinfo for %s - %s\n\n",
|
||||
ipstr,
|
||||
#ifdef _WIN32
|
||||
gai_strerrorA(gai_error)
|
||||
#else
|
||||
gai_strerror(gai_error)
|
||||
#endif
|
||||
);
|
||||
strerr);
|
||||
exit(3);
|
||||
}
|
||||
|
||||
@ -643,7 +656,7 @@ static bool start_threaded_benchmark(MMDB_s *const mmdb,
|
||||
int const thread_count,
|
||||
int const iterations) {
|
||||
struct thread_info *const tinfo =
|
||||
calloc(thread_count, sizeof(struct thread_info));
|
||||
calloc((size_t)thread_count, sizeof(struct thread_info));
|
||||
if (!tinfo) {
|
||||
fprintf(stderr, "calloc(): %s\n", strerror(errno));
|
||||
return false;
|
||||
@ -685,7 +698,8 @@ static bool start_threaded_benchmark(MMDB_s *const mmdb,
|
||||
}
|
||||
|
||||
long double const elapsed = end_time - start_time;
|
||||
unsigned long long const total_ips = iterations * thread_count;
|
||||
unsigned long long const total_ips =
|
||||
(unsigned long long)(iterations * thread_count);
|
||||
long double rate = total_ips;
|
||||
if (elapsed != 0) {
|
||||
rate = total_ips / elapsed;
|
||||
@ -717,7 +731,7 @@ static long double get_time(void) {
|
||||
fprintf(stderr, "clock_gettime(): %s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return tp.tv_sec + ((float)tp.tv_nsec / 1e9);
|
||||
return (long double)tp.tv_sec + ((float)tp.tv_nsec / 1e9);
|
||||
#else
|
||||
time_t t = time(NULL);
|
||||
if (t == (time_t)-1) {
|
||||
|
21
vendor/MaxmindDB/cmake_uninstall.cmake.in
vendored
Normal file
21
vendor/MaxmindDB/cmake_uninstall.cmake.in
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
|
||||
endif()
|
||||
|
||||
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
execute_process(
|
||||
COMMAND "@CMAKE_COMMAND@" -E remove "$ENV{DESTDIR}${file}"
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RESULT_VARIABLE rm_retval
|
||||
)
|
||||
if(NOT "${rm_retval}" STREQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif()
|
||||
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif()
|
||||
endforeach()
|
2
vendor/MaxmindDB/configure.ac
vendored
2
vendor/MaxmindDB/configure.ac
vendored
@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.63])
|
||||
AC_INIT([libmaxminddb], [1.6.0], [support@maxmind.com])
|
||||
AC_INIT([libmaxminddb], [1.12.2], [support@maxmind.com])
|
||||
AC_CONFIG_SRCDIR([include/maxminddb.h])
|
||||
AC_CONFIG_HEADERS([config.h include/maxminddb_config.h])
|
||||
|
||||
|
55
vendor/MaxmindDB/dev-bin/make-man-pages.pl
vendored
55
vendor/MaxmindDB/dev-bin/make-man-pages.pl
vendored
@ -2,13 +2,10 @@
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use autodie qw( :all );
|
||||
|
||||
use FindBin qw( $Bin );
|
||||
|
||||
use File::Path qw( mkpath );
|
||||
use File::Slurp qw( edit_file read_file );
|
||||
use File::Which qw( which );
|
||||
|
||||
sub main {
|
||||
my $target = shift || "$Bin/..";
|
||||
@ -16,7 +13,7 @@ sub main {
|
||||
my @translators = qw ( lowdown pandoc );
|
||||
my $translator;
|
||||
foreach my $p (@translators) {
|
||||
if ( defined which($p) ) {
|
||||
if ( _which($p) ) {
|
||||
$translator = $p;
|
||||
last;
|
||||
}
|
||||
@ -33,6 +30,14 @@ sub main {
|
||||
_make_man( $translator, $target, 'mmdblookup', 1 );
|
||||
}
|
||||
|
||||
sub _which {
|
||||
my $program = shift;
|
||||
for my $path ( split /:/, $ENV{PATH} ) {
|
||||
return 1 if -x "$path/$program";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub _make_man {
|
||||
my $translator = shift;
|
||||
my $target = shift;
|
||||
@ -54,7 +59,7 @@ sub _make_man {
|
||||
'-M', "section:$section",
|
||||
$input,
|
||||
'-o', $output,
|
||||
);
|
||||
) == 0 or die "Failed to run pandoc: $?";
|
||||
_pandoc_postprocess($output);
|
||||
}
|
||||
elsif ( $translator eq 'lowdown' ) {
|
||||
@ -67,18 +72,27 @@ sub _make_man {
|
||||
'-M', "section:$section",
|
||||
$input,
|
||||
'-o', $output,
|
||||
);
|
||||
) == 0 or die "Failed to run lowdown: $?";
|
||||
}
|
||||
}
|
||||
|
||||
sub _make_lib_man_links {
|
||||
my $target = shift;
|
||||
|
||||
my $header = read_file("$Bin/../include/maxminddb.h");
|
||||
open my $header_fh, '<', "$Bin/../include/maxminddb.h"
|
||||
or die "Failed to open header file: $!";
|
||||
my $header = do { local $/; <$header_fh> };
|
||||
|
||||
die "Error reading file header file: $!" unless defined $header;
|
||||
|
||||
close $header_fh or die "Failed to close header file: $!";
|
||||
|
||||
for my $proto ( $header =~ /^ *extern.+?(MMDB_\w+)\(/gsm ) {
|
||||
open my $fh, '>', "$target/man/man3/$proto.3";
|
||||
print {$fh} ".so man3/libmaxminddb.3\n";
|
||||
close $fh;
|
||||
open my $fh, '>', "$target/man/man3/$proto.3"
|
||||
or die "Failed to open file: $!";
|
||||
print {$fh} ".so man3/libmaxminddb.3\n"
|
||||
or die "Failed to write to file: $!";
|
||||
close $fh or die "Failed to close file: $!";
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,13 +101,20 @@ sub _make_lib_man_links {
|
||||
sub _pandoc_postprocess {
|
||||
my $file = shift;
|
||||
|
||||
edit_file(
|
||||
sub {
|
||||
s/^\.IP\n\.nf/.IP "" 4\n.nf/gm;
|
||||
s/(Automatically generated by Pandoc)(.+)$/$1/m;
|
||||
},
|
||||
$file
|
||||
);
|
||||
open my $fh, '<', $file or die "Failed to open man file for reading: $!";
|
||||
my @lines = <$fh>;
|
||||
die "Error when reading man page: $!" if $!;
|
||||
|
||||
close $fh or die "Failed to close file: $!";
|
||||
|
||||
for my $line (@lines) {
|
||||
$line =~ s/^\.IP\n\.nf/.IP "" 4\n.nf/gm;
|
||||
$line =~ s/(Automatically generated by Pandoc)(.+)$/$1/m;
|
||||
}
|
||||
|
||||
open $fh, '>', $file or die "Failed to open file for writing: $!";
|
||||
print $fh @lines or die "Failed to write to file: $!";
|
||||
close $fh or die "Failed to close file: $!";
|
||||
}
|
||||
|
||||
main(shift);
|
||||
|
@ -1,54 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use FindBin qw( $Bin );
|
||||
|
||||
use Data::UUID;
|
||||
use File::Slurp qw( read_file write_file );
|
||||
use Path::Iterator::Rule;
|
||||
|
||||
sub main {
|
||||
my $rule = Path::Iterator::Rule->new;
|
||||
$rule->file->name(qr/_t.c$/);
|
||||
|
||||
my $ug = Data::UUID->new;
|
||||
|
||||
my $template = read_file("$Bin/../projects/test.vcxproj.template");
|
||||
|
||||
my @names;
|
||||
for my $file ( $rule->all("$Bin/../t/") ) {
|
||||
my ($name) = $file =~ /(\w*)_t.c$/;
|
||||
|
||||
next unless $name;
|
||||
next if $name eq 'threads';
|
||||
|
||||
push @names, $name;
|
||||
|
||||
my $project = $template;
|
||||
|
||||
$project =~ s/%TESTNAME%/$name/g;
|
||||
|
||||
my $uuid = $ug->to_string( $ug->create );
|
||||
$project =~ s/%UUID%/$uuid/g;
|
||||
|
||||
write_file( "$Bin/../projects/VS12-tests/$name.vcxproj", $project );
|
||||
}
|
||||
|
||||
_modify_yml(@names);
|
||||
}
|
||||
|
||||
sub _modify_yml {
|
||||
my @names = @_;
|
||||
|
||||
my $exe_block = join "\n",
|
||||
map { " - .\\projects\\VS12\\Debug\\test_${_}.exe" } @names;
|
||||
|
||||
my $file = "$Bin/../appveyor.yml";
|
||||
my $config = read_file($file);
|
||||
$config =~ s/(#EXES).*?(#ENDEXES)/$1\n$exe_block\n $2/s;
|
||||
write_file( $file, $config );
|
||||
}
|
||||
|
||||
main();
|
6
vendor/MaxmindDB/dev-bin/release.sh
vendored
6
vendor/MaxmindDB/dev-bin/release.sh
vendored
@ -115,8 +115,4 @@ popd
|
||||
|
||||
git push
|
||||
|
||||
message="$version
|
||||
|
||||
$notes"
|
||||
|
||||
hub release create -a "$dist" -m "$message" "$version"
|
||||
gh release create --target "$(git branch --show-current)" -t "$version" -n "$notes" "$version" "$dist"
|
||||
|
19
vendor/MaxmindDB/doc/libmaxminddb.md
vendored
19
vendor/MaxmindDB/doc/libmaxminddb.md
vendored
@ -93,11 +93,11 @@ typedef struct MMDB_entry_data_list_s {
|
||||
# DESCRIPTION
|
||||
|
||||
The libmaxminddb library provides functions for working MaxMind DB files. See
|
||||
http://maxmind.github.io/MaxMind-DB/ for the MaxMind DB format specification.
|
||||
The database and results are all represented by different data structures.
|
||||
Databases are opened by calling `MMDB_open()`. You can look up IP addresses as
|
||||
a string with `MMDB_lookup_string()` or as a pointer to a `sockaddr`
|
||||
structure with `MMDB_lookup_sockaddr()`.
|
||||
https://maxmind.github.io/MaxMind-DB/ for the MaxMind DB format
|
||||
specification. The database and results are all represented by different
|
||||
data structures. Databases are opened by calling `MMDB_open()`. You can
|
||||
look up IP addresses as a string with `MMDB_lookup_string()` or as a
|
||||
pointer to a `sockaddr` structure with `MMDB_lookup_sockaddr()`.
|
||||
|
||||
If the lookup finds the IP address in the database, it returns a
|
||||
`MMDB_lookup_result_s` structure. If that structure indicates that the database
|
||||
@ -851,6 +851,11 @@ int main(int argc, char **argv)
|
||||
}
|
||||
```
|
||||
|
||||
# REQUIREMENTS
|
||||
|
||||
libmaxminddb requires a minimum of POSIX.1-2001 support. If not specified
|
||||
at compilation time, it defaults to requesting POSIX.1-2008 support.
|
||||
|
||||
# THREAD SAFETY
|
||||
|
||||
This library is thread safe when compiled and linked with a thread-safe
|
||||
@ -878,13 +883,13 @@ Rolsky (drolsky@maxmind.com).
|
||||
|
||||
# COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright 2013-2014 MaxMind, Inc.
|
||||
Copyright 2013-2025 MaxMind, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
10
vendor/MaxmindDB/doc/mmdblookup.md
vendored
10
vendor/MaxmindDB/doc/mmdblookup.md
vendored
@ -9,8 +9,10 @@ mmdblookup --file [FILE PATH] --ip [IP ADDRESS] [DATA PATH]
|
||||
# DESCRIPTION
|
||||
|
||||
`mmdblookup` looks up an IP address in the specified MaxMind DB file. The
|
||||
record for the IP address is displayed in a JSON-like structure with type
|
||||
annotations.
|
||||
record for the IP address is displayed with `{}` to denote maps and `[]` to
|
||||
denote arrays. The values are followed by type annotations. This output is
|
||||
_not_ JSON and is not intended to be used as such. If you need JSON, please
|
||||
see [`mmdbinspect`](https://github.com/maxmind/mmdbinspect).
|
||||
|
||||
If an IP's data entry resolves to a map or array, you can provide a lookup
|
||||
path to only show part of that data.
|
||||
@ -84,13 +86,13 @@ Rolsky (drolsky@maxmind.com).
|
||||
|
||||
# COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright 2013-2014 MaxMind, Inc.
|
||||
Copyright 2013-2025 MaxMind, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
15
vendor/MaxmindDB/include/maxminddb.h
vendored
15
vendor/MaxmindDB/include/maxminddb.h
vendored
@ -5,18 +5,6 @@ extern "C" {
|
||||
#ifndef MAXMINDDB_H
|
||||
#define MAXMINDDB_H
|
||||
|
||||
/* Request POSIX.1-2008. However, we want to remain compatible with
|
||||
* POSIX.1-2001 (since we have been historically and see no reason to drop
|
||||
* compatibility). By requesting POSIX.1-2008, we can conditionally use
|
||||
* features provided by that standard if the implementation provides it. We can
|
||||
* check for what the implementation provides by checking the _POSIX_VERSION
|
||||
* macro after including unistd.h. If a feature is in POSIX.1-2008 but not
|
||||
* POSIX.1-2001, check that macro before using the feature (or check for the
|
||||
* feature directly if possible). */
|
||||
#ifndef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
|
||||
#include "maxminddb_config.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdbool.h>
|
||||
@ -28,9 +16,6 @@ extern "C" {
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h>
|
||||
/* libmaxminddb package version from configure */
|
||||
#define PACKAGE_VERSION "1.6.0"
|
||||
|
||||
typedef ADDRESS_FAMILY sa_family_t;
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* MSVC doesn't define signed size_t, copy it from configure */
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define MAXMINDDB_CONFIG_H
|
||||
|
||||
#ifndef MMDB_UINT128_USING_MODE
|
||||
/* Define as 1 if we use unsigned int __atribute__ ((__mode__(TI))) for uint128 values */
|
||||
/* Define as 1 if we use unsigned int __attribute__ ((__mode__(TI))) for uint128 values */
|
||||
#cmakedefine MMDB_UINT128_USING_MODE @MMDB_UINT128_USING_MODE@
|
||||
#endif
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define MAXMINDDB_CONFIG_H
|
||||
|
||||
#ifndef MMDB_UINT128_USING_MODE
|
||||
/* Define as 1 if we use unsigned int __atribute__ ((__mode__(TI))) for uint128 values */
|
||||
/* Define as 1 if we use unsigned int __attribute__ ((__mode__(TI))) for uint128 values */
|
||||
#define MMDB_UINT128_USING_MODE 0
|
||||
#endif
|
||||
|
||||
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B19839F4-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>bad_pointers</RootNamespace>
|
||||
<ProjectName>test_bad_pointers</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\bad_pointers_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1983C10-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>basic_lookup</RootNamespace>
|
||||
<ProjectName>test_basic_lookup</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\basic_lookup_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1983E90-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>data_entry_list</RootNamespace>
|
||||
<ProjectName>test_data_entry_list</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\data_entry_list_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B198400C-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>data_types</RootNamespace>
|
||||
<ProjectName>test_data_types</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\data_types_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
105
vendor/MaxmindDB/projects/VS12-tests/dump.vcxproj
vendored
105
vendor/MaxmindDB/projects/VS12-tests/dump.vcxproj
vendored
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1984188-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>dump</RootNamespace>
|
||||
<ProjectName>test_dump</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\dump_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1984480-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>get_value</RootNamespace>
|
||||
<ProjectName>test_get_value</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\get_value_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1984304-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>get_value_pointer_bug</RootNamespace>
|
||||
<ProjectName>test_get_value_pointer_bug</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\get_value_pointer_bug_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B198466A-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>ipv4_start_cache</RootNamespace>
|
||||
<ProjectName>test_ipv4_start_cache</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\ipv4_start_cache_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1984872-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>ipv6_lookup_in_ipv4</RootNamespace>
|
||||
<ProjectName>test_ipv6_lookup_in_ipv4</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\ipv6_lookup_in_ipv4_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,85 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>libtap</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalOptions>/Z7 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\t\libtap\tap.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\libtap\tap.c" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,107 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>ConsoleApplication1</RootNamespace>
|
||||
<ProjectName>test_maxminddb_test_helper</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\t\libtap\libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\t\maxminddb_test_helper.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\maxminddb_test_helper.c" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1984C6E-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>metadata</RootNamespace>
|
||||
<ProjectName>test_metadata</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\metadata_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B19849D0-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>metadata_pointers</RootNamespace>
|
||||
<ProjectName>test_metadata_pointers</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\metadata_pointers_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B1984EC6-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>no_map_get_value</RootNamespace>
|
||||
<ProjectName>test_no_map_get_value</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\no_map_get_value_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B198504C-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>read_node</RootNamespace>
|
||||
<ProjectName>test_read_node</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\read_node_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
104
vendor/MaxmindDB/projects/VS12-tests/shared.vcxproj
vendored
104
vendor/MaxmindDB/projects/VS12-tests/shared.vcxproj
vendored
@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>ConsoleApplication1</RootNamespace>
|
||||
<ProjectName>test_maxminddb_test_helper</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/FS %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\t\maxminddb_test_helper.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\maxminddb_test_helper.c" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
103
vendor/MaxmindDB/projects/VS12-tests/threads.vcxproj
vendored
103
vendor/MaxmindDB/projects/VS12-tests/threads.vcxproj
vendored
@ -1,103 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{8E11E9FC-7B63-11E4-AE98-6B41E8A9DDB2}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>threads</RootNamespace>
|
||||
<ProjectName>test_threads</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\threads_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
105
vendor/MaxmindDB/projects/VS12-tests/version.vcxproj
vendored
105
vendor/MaxmindDB/projects/VS12-tests/version.vcxproj
vendored
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B19851FA-376C-11E7-A95B-48C58C130AD6}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>version</RootNamespace>
|
||||
<ProjectName>test_version</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\version_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
64
vendor/MaxmindDB/projects/VS12/README.md
vendored
64
vendor/MaxmindDB/projects/VS12/README.md
vendored
@ -1,64 +0,0 @@
|
||||
# Deprecated
|
||||
|
||||
*These files are deprecated and will be removed in a future release.
|
||||
Please use CMake instead.*
|
||||
|
||||
# Project Notes
|
||||
|
||||
DO NOT modify project settings for each configuration and/or platform
|
||||
on a per-project basis. Use property sheets to set shared configuration
|
||||
properties. The rule of thumb - if you set same value for the same
|
||||
property in more than one configuration or platform, you did it wrong.
|
||||
|
||||
## libmaxminddb.props
|
||||
|
||||
This is the base property sheet for libMaxMindDB project. It contains
|
||||
settings that are shared between all configurations, such as compiler
|
||||
warning level, not using link-time code generation, etc.
|
||||
|
||||
In order to minimize the number of property sheet files, this propery
|
||||
sheet also contains settings for Win32 and Debug configurations, which
|
||||
are overridden by the x64 and Release property sheets described below.
|
||||
|
||||
## libmaxminddb-release.props
|
||||
|
||||
This property sheet contains all Release settings and is shared between
|
||||
Win32 and x64 release builds. It must be located higher than the base
|
||||
property sheet in the property Manager window for each configuration
|
||||
where it's used (i.e. Release|Win32 and Release|x64).
|
||||
|
||||
## libmaxminddb-x64.props
|
||||
|
||||
This property sheet contains all x64 settings and is shared between all
|
||||
Debug and Release x64 configurations. It must be located higher than the
|
||||
base property sheet in the property Manager window for each configuration
|
||||
where it's used (i.e. Debug|x64 and Release|x64).
|
||||
|
||||
## Adding More Projects
|
||||
|
||||
If you want to add more projects into this solution, follow the same logic
|
||||
and create their own property sheets. Do not use libmaxminddb property
|
||||
sheets in those projects because it will interfere with their intermediate
|
||||
directories. Instead, copy and rename libmaxminddb property sheets as a
|
||||
starting point.
|
||||
|
||||
DO NOT add libmaxminddb.lib to the Additional Dependencies box of command
|
||||
line tools or any other libraries you built, for that matter. This box is
|
||||
only for standard Windows libraries. Instead, add libmaxminddb as a reference
|
||||
to all command line tool projects. Do the same for any other library projects
|
||||
you added to this solutionn.
|
||||
|
||||
For external 3rd-party .lib files, create a solution folder called Libraries
|
||||
and add Debug, Debug64, Release, Release64 subfolders, then drag and drop all
|
||||
versinos of .lib to their respective folders and use Exclude From Build in
|
||||
each library file's property to assign them to the proper build confguration.
|
||||
Unused libraries will be shown with a traffic stop sign in each configuration.
|
||||
If you have a lot of projects, it might be easier to do this by editing .vcxproj
|
||||
and .vcxproj.filters in a text editor.
|
||||
|
||||
# Tests
|
||||
|
||||
To use the tests, you must download the `libtap` and `maxmind-db` submodules.
|
||||
This can be done by running `git submodule update --init --recursive` from
|
||||
the Git checkout. Each test source file has a separate project. Once compiled,
|
||||
the tests must be run from the base directory of the checkout.
|
@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup />
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<IntDir>$(SolutionDir)$(Platform)\$(Configuration)\obj\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<IntDir>$(SolutionDir)$(Configuration)\obj\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\..\include</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<ProgramDataBaseFileName>$(OutDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
</ClCompile>
|
||||
<PreBuildEvent>
|
||||
<Command>if NOT EXIST (..\..\include\maxminddb_config.h) (
|
||||
copy maxminddb_config.h ..\..\include\maxminddb_config.h
|
||||
)</Command>
|
||||
</PreBuildEvent>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<LinkTimeCodeGeneration>false</LinkTimeCodeGeneration>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
150
vendor/MaxmindDB/projects/VS12/libmaxminddb.sln
vendored
150
vendor/MaxmindDB/projects/VS12/libmaxminddb.sln
vendored
@ -1,150 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.31101.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmaxminddb", "libmaxminddb.vcxproj", "{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_basic_lookup", "..\VS12-tests\basic_lookup.vcxproj", "{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_data_entry_list", "..\VS12-tests\data_entry_list.vcxproj", "{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_data_types", "..\VS12-tests\data_types.vcxproj", "{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_dump", "..\VS12-tests\dump.vcxproj", "{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_get_value", "..\VS12-tests\get_value.vcxproj", "{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_get_value_pointer_bug", "..\VS12-tests\get_value_pointer_bug.vcxproj", "{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_ipv4_start_cache", "..\VS12-tests\ipv4_start_cache.vcxproj", "{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_ipv6_lookup_in_ipv4", "..\VS12-tests\ipv6_lookup_in_ipv4.vcxproj", "{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtap", "..\VS12-tests\libtap.vcxproj", "{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_metadata", "..\VS12-tests\metadata.vcxproj", "{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_no_map_get_value", "..\VS12-tests\no_map_get_value.vcxproj", "{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_read_node", "..\VS12-tests\read_node.vcxproj", "{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_maxminddb_test_helper", "..\VS12-tests\shared.vcxproj", "{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_version", "..\VS12-tests\version.vcxproj", "{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_bad_pointers", "..\VS12-tests\bad_pointers.vcxproj", "{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_metadata_pointers", "..\VS12-tests\metadata_pointers.vcxproj", "{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Release|Win32.Build.0 = Release|Win32
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}.Release|x64.Build.0 = Release|x64
|
||||
{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11C512-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11C882-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11CBD4-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11CEEA-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11D5E8-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11D2AA-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11D930-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11DC64-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}.Release|Win32.Build.0 = Release|Win32
|
||||
{4DFC985A-83D7-4E61-85FE-C6EA6E43E3AA}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11DFC0-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11E33A-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11E68C-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}.Release|Win32.Build.0 = Release|Win32
|
||||
{A8F568F6-5507-4EC2-A834-F2C0A3C635A5}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11ED26-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}.Release|Win32.Build.0 = Release|Win32
|
||||
{8E11BAF4-7B63-11E4-AE98-6B41E8A9DDB2}.Release|x64.ActiveCfg = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
143
vendor/MaxmindDB/projects/VS12/libmaxminddb.vcxproj
vendored
143
vendor/MaxmindDB/projects/VS12/libmaxminddb.vcxproj
vendored
@ -1,143 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\maxminddb.c" />
|
||||
<ClCompile Include="..\..\src\data-pool.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\include\maxminddb.h" />
|
||||
<ClInclude Include="..\..\src\data-pool.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{82953BDA-2960-4ADA-A6D5-92E65CCB4A3D}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>libmaxminddb</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="libmaxminddb.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="libmaxminddb.props" />
|
||||
<Import Project="libmaxminddb-x64.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="libmaxminddb.props" />
|
||||
<Import Project="libmaxminddb-release.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="libmaxminddb.props" />
|
||||
<Import Project="libmaxminddb-x64.props" />
|
||||
<Import Project="libmaxminddb-release.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<TargetName>$(ProjectName)d</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<TargetName>$(ProjectName)d</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<PreBuildEvent />
|
||||
<Lib />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<PreBuildEvent />
|
||||
<Lib />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<PreBuildEvent />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<PreBuildEvent />
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\maxminddb.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\data-pool.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\include\maxminddb.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\data-pool.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,14 +0,0 @@
|
||||
#ifndef MAXMINDDB_CONFIG_H
|
||||
#define MAXMINDDB_CONFIG_H
|
||||
|
||||
#ifndef MMDB_UINT128_USING_MODE
|
||||
/* Define as 1 if we we use unsigned int __atribute__ ((__mode__(TI))) for uint128 values */
|
||||
#define MMDB_UINT128_USING_MODE 0
|
||||
#endif
|
||||
|
||||
#ifndef MMDB_UINT128_IS_BYTE_ARRAY
|
||||
/* Define as 1 if we don't have an unsigned __int128 type */
|
||||
#define MMDB_UINT128_IS_BYTE_ARRAY 1
|
||||
#endif
|
||||
|
||||
#endif /* MAXMINDDB_CONFIG_H */
|
105
vendor/MaxmindDB/projects/test.vcxproj.template
vendored
105
vendor/MaxmindDB/projects/test.vcxproj.template
vendored
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{%UUID%}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>%TESTNAME%</RootNamespace>
|
||||
<ProjectName>test_%TESTNAME%</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\..\include;$(SolutionDir)\..\..\t\libtap;$(SolutionDir)\..\..\src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\t\%TESTNAME%_t.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="libtap.vcxproj">
|
||||
<Project>{4dfc985a-83d7-4e61-85fe-c6ea6e43e3aa}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VS12\libmaxminddb.vcxproj">
|
||||
<Project>{82953bda-2960-4ada-a6d5-92e65ccb4a3d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="maxminddb_test_helper.vcxproj">
|
||||
<Project>{a8f568f6-5507-4ec2-a834-f2c0a3c635a5}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
4
vendor/MaxmindDB/src/Makefile.am
vendored
4
vendor/MaxmindDB/src/Makefile.am
vendored
@ -5,6 +5,10 @@ lib_LTLIBRARIES = libmaxminddb.la
|
||||
libmaxminddb_la_SOURCES = maxminddb.c maxminddb-compat-util.h \
|
||||
data-pool.c data-pool.h
|
||||
libmaxminddb_la_LDFLAGS = -version-info 0:7:0 -export-symbols-regex '^MMDB_.*'
|
||||
if WINDOWS
|
||||
libmaxminddb_la_LDFLAGS += -no-undefined
|
||||
endif
|
||||
|
||||
include_HEADERS = $(top_srcdir)/include/maxminddb.h
|
||||
|
||||
pkgconfig_DATA = libmaxminddb.pc
|
||||
|
16
vendor/MaxmindDB/src/data-pool.c
vendored
16
vendor/MaxmindDB/src/data-pool.c
vendored
@ -1,3 +1,7 @@
|
||||
#ifndef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
|
||||
#include "data-pool.h"
|
||||
#include "maxminddb.h"
|
||||
|
||||
@ -5,8 +9,6 @@
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static bool can_multiply(size_t const, size_t const, size_t const);
|
||||
|
||||
// Allocate an MMDB_data_pool_s. It initially has space for size
|
||||
// MMDB_entry_data_list_s structs.
|
||||
MMDB_data_pool_s *data_pool_new(size_t const size) {
|
||||
@ -39,7 +41,7 @@ MMDB_data_pool_s *data_pool_new(size_t const size) {
|
||||
// the given max. max will typically be SIZE_MAX.
|
||||
//
|
||||
// We want to know if we'll wrap around.
|
||||
static bool can_multiply(size_t const max, size_t const m, size_t const n) {
|
||||
bool can_multiply(size_t const max, size_t const m, size_t const n) {
|
||||
if (m == 0) {
|
||||
return false;
|
||||
}
|
||||
@ -156,9 +158,13 @@ int main(void) {
|
||||
}
|
||||
|
||||
static void test_can_multiply(void) {
|
||||
{ ok(can_multiply(SIZE_MAX, 1, SIZE_MAX), "1*SIZE_MAX is ok"); }
|
||||
{
|
||||
ok(can_multiply(SIZE_MAX, 1, SIZE_MAX), "1*SIZE_MAX is ok");
|
||||
}
|
||||
|
||||
{ ok(!can_multiply(SIZE_MAX, 2, SIZE_MAX), "2*SIZE_MAX is not ok"); }
|
||||
{
|
||||
ok(!can_multiply(SIZE_MAX, 2, SIZE_MAX), "2*SIZE_MAX is not ok");
|
||||
}
|
||||
|
||||
{
|
||||
ok(can_multiply(SIZE_MAX, 10240, sizeof(MMDB_entry_data_list_s)),
|
||||
|
1
vendor/MaxmindDB/src/data-pool.h
vendored
1
vendor/MaxmindDB/src/data-pool.h
vendored
@ -44,6 +44,7 @@ typedef struct MMDB_data_pool_s {
|
||||
MMDB_entry_data_list_s *blocks[DATA_POOL_NUM_BLOCKS];
|
||||
} MMDB_data_pool_s;
|
||||
|
||||
bool can_multiply(size_t const, size_t const, size_t const);
|
||||
MMDB_data_pool_s *data_pool_new(size_t const);
|
||||
void data_pool_destroy(MMDB_data_pool_s *const);
|
||||
MMDB_entry_data_list_s *data_pool_alloc(MMDB_data_pool_s *const);
|
||||
|
2
vendor/MaxmindDB/src/libmaxminddb.pc.in
vendored
2
vendor/MaxmindDB/src/libmaxminddb.pc.in
vendored
@ -5,7 +5,7 @@ includedir=@includedir@
|
||||
|
||||
Name: libmaxminddb
|
||||
Description: C library for the MaxMind DB file format
|
||||
URL: http://maxmind.github.io/libmaxminddb/
|
||||
URL: https://maxmind.github.io/libmaxminddb/
|
||||
Version: @PACKAGE_VERSION@
|
||||
Libs: -L${libdir} -lmaxminddb
|
||||
Cflags: -I${includedir}
|
||||
|
8
vendor/MaxmindDB/src/maxminddb-compat-util.h
vendored
8
vendor/MaxmindDB/src/maxminddb-compat-util.h
vendored
@ -42,9 +42,9 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static void *
|
||||
static const void *
|
||||
mmdb_memmem(const void *l, size_t l_len, const void *s, size_t s_len) {
|
||||
register char *cur, *last;
|
||||
const char *cur, *last;
|
||||
const char *cl = (const char *)l;
|
||||
const char *cs = (const char *)s;
|
||||
|
||||
@ -61,9 +61,9 @@ mmdb_memmem(const void *l, size_t l_len, const void *s, size_t s_len) {
|
||||
return memchr(l, (int)*cs, l_len);
|
||||
|
||||
/* the last position where its possible to find "s" in "l" */
|
||||
last = (char *)cl + l_len - s_len;
|
||||
last = cl + l_len - s_len;
|
||||
|
||||
for (cur = (char *)cl; cur <= last; cur++)
|
||||
for (cur = cl; cur <= last; cur++)
|
||||
if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0)
|
||||
return cur;
|
||||
|
||||
|
248
vendor/MaxmindDB/src/maxminddb.c
vendored
248
vendor/MaxmindDB/src/maxminddb.c
vendored
@ -1,13 +1,17 @@
|
||||
#ifndef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include "data-pool.h"
|
||||
#include "maxminddb-compat-util.h"
|
||||
#include "maxminddb.h"
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <inttypes.h>
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -19,6 +23,10 @@
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#include <ws2ipdef.h>
|
||||
#ifndef SSIZE_MAX
|
||||
#define SSIZE_MAX INTPTR_MAX
|
||||
#endif
|
||||
typedef ADDRESS_FAMILY sa_family_t;
|
||||
#else
|
||||
#include <arpa/inet.h>
|
||||
#include <sys/mman.h>
|
||||
@ -152,7 +160,7 @@ static int populate_description_metadata(MMDB_s *mmdb,
|
||||
MMDB_entry_s *metadata_start);
|
||||
static int resolve_any_address(const char *ipstr, struct addrinfo **addresses);
|
||||
static int find_address_in_search_tree(const MMDB_s *const mmdb,
|
||||
uint8_t *address,
|
||||
uint8_t const *address,
|
||||
sa_family_t address_family,
|
||||
MMDB_lookup_result_s *result);
|
||||
static record_info_s record_info_for_database(const MMDB_s *const mmdb);
|
||||
@ -162,7 +170,7 @@ static uint32_t get_left_28_bit_record(const uint8_t *record);
|
||||
static uint32_t get_right_28_bit_record(const uint8_t *record);
|
||||
static uint32_t data_section_offset_for_record(const MMDB_s *const mmdb,
|
||||
uint64_t record);
|
||||
static int path_length(va_list va_path);
|
||||
static size_t path_length(va_list va_path);
|
||||
static int lookup_path_in_array(const char *path_elem,
|
||||
const MMDB_s *const mmdb,
|
||||
MMDB_entry_data_s *entry_data);
|
||||
@ -201,7 +209,7 @@ dump_entry_data_list(FILE *stream,
|
||||
int indent,
|
||||
int *status);
|
||||
static void print_indentation(FILE *stream, int i);
|
||||
static char *bytes_to_hex(uint8_t *bytes, uint32_t size);
|
||||
static char *bytes_to_hex(uint8_t const *bytes, uint32_t size);
|
||||
|
||||
#define CHECKED_DECODE_ONE(mmdb, offset, entry_data) \
|
||||
do { \
|
||||
@ -284,18 +292,29 @@ int MMDB_open(const char *const filename, uint32_t flags, MMDB_s *const mmdb) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
uint32_t search_tree_size =
|
||||
mmdb->metadata.node_count * mmdb->full_record_byte_size;
|
||||
|
||||
mmdb->data_section =
|
||||
mmdb->file_content + search_tree_size + MMDB_DATA_SECTION_SEPARATOR;
|
||||
if (search_tree_size + MMDB_DATA_SECTION_SEPARATOR >
|
||||
(uint32_t)mmdb->file_size) {
|
||||
if (!can_multiply(SSIZE_MAX,
|
||||
mmdb->metadata.node_count,
|
||||
mmdb->full_record_byte_size)) {
|
||||
status = MMDB_INVALID_METADATA_ERROR;
|
||||
goto cleanup;
|
||||
}
|
||||
mmdb->data_section_size = (uint32_t)mmdb->file_size - search_tree_size -
|
||||
MMDB_DATA_SECTION_SEPARATOR;
|
||||
ssize_t search_tree_size = (ssize_t)mmdb->metadata.node_count *
|
||||
(ssize_t)mmdb->full_record_byte_size;
|
||||
|
||||
mmdb->data_section =
|
||||
mmdb->file_content + search_tree_size + MMDB_DATA_SECTION_SEPARATOR;
|
||||
if (mmdb->file_size < MMDB_DATA_SECTION_SEPARATOR ||
|
||||
search_tree_size > mmdb->file_size - MMDB_DATA_SECTION_SEPARATOR) {
|
||||
status = MMDB_INVALID_METADATA_ERROR;
|
||||
goto cleanup;
|
||||
}
|
||||
ssize_t data_section_size =
|
||||
mmdb->file_size - search_tree_size - MMDB_DATA_SECTION_SEPARATOR;
|
||||
if (data_section_size > UINT32_MAX || data_section_size <= 0) {
|
||||
status = MMDB_INVALID_METADATA_ERROR;
|
||||
goto cleanup;
|
||||
}
|
||||
mmdb->data_section_size = (uint32_t)data_section_size;
|
||||
|
||||
// Although it is likely not possible to construct a database with valid
|
||||
// valid metadata, as parsed above, and a data_section_size less than 3,
|
||||
@ -406,7 +425,6 @@ cleanup:;
|
||||
#else // _WIN32
|
||||
|
||||
static int map_file(MMDB_s *const mmdb) {
|
||||
ssize_t size;
|
||||
int status = MMDB_SUCCESS;
|
||||
|
||||
int o_flags = O_RDONLY;
|
||||
@ -432,14 +450,14 @@ static int map_file(MMDB_s *const mmdb) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
size = s.st_size;
|
||||
if (size < 0 || size != s.st_size) {
|
||||
off_t size = s.st_size;
|
||||
if (size < 0 || size > SSIZE_MAX) {
|
||||
status = MMDB_OUT_OF_MEMORY_ERROR;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
uint8_t *file_content =
|
||||
(uint8_t *)mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
|
||||
(uint8_t *)mmap(NULL, (size_t)size, PROT_READ, MAP_SHARED, fd, 0);
|
||||
if (MAP_FAILED == file_content) {
|
||||
if (ENOMEM == errno) {
|
||||
status = MMDB_OUT_OF_MEMORY_ERROR;
|
||||
@ -449,7 +467,7 @@ static int map_file(MMDB_s *const mmdb) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
mmdb->file_size = size;
|
||||
mmdb->file_size = (ssize_t)size;
|
||||
mmdb->file_content = file_content;
|
||||
|
||||
cleanup:;
|
||||
@ -471,12 +489,16 @@ static const uint8_t *find_metadata(const uint8_t *file_content,
|
||||
ssize_t max_size = file_size > METADATA_BLOCK_MAX_SIZE
|
||||
? METADATA_BLOCK_MAX_SIZE
|
||||
: file_size;
|
||||
if (max_size < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uint8_t *search_area = (uint8_t *)(file_content + (file_size - max_size));
|
||||
uint8_t *start = search_area;
|
||||
uint8_t *tmp;
|
||||
uint8_t const *search_area = (file_content + (file_size - max_size));
|
||||
uint8_t const *start = search_area;
|
||||
uint8_t const *tmp;
|
||||
do {
|
||||
tmp = mmdb_memmem(search_area, max_size, METADATA_MARKER, marker_len);
|
||||
tmp = mmdb_memmem(
|
||||
search_area, (size_t)max_size, METADATA_MARKER, marker_len);
|
||||
|
||||
if (NULL != tmp) {
|
||||
max_size -= tmp - search_area;
|
||||
@ -683,7 +705,7 @@ value_for_key_as_string(MMDB_entry_s *start, char *key, char const **value) {
|
||||
type_num_to_name(entry_data.type));
|
||||
return MMDB_INVALID_METADATA_ERROR;
|
||||
}
|
||||
*value = mmdb_strndup((char *)entry_data.utf8_string, entry_data.data_size);
|
||||
*value = mmdb_strndup(entry_data.utf8_string, entry_data.data_size);
|
||||
if (NULL == *value) {
|
||||
return MMDB_OUT_OF_MEMORY_ERROR;
|
||||
}
|
||||
@ -722,20 +744,22 @@ static int populate_languages_metadata(MMDB_s *mmdb,
|
||||
mmdb->metadata.languages.count = 0;
|
||||
mmdb->metadata.languages.names = calloc(array_size, sizeof(char *));
|
||||
if (NULL == mmdb->metadata.languages.names) {
|
||||
MMDB_free_entry_data_list(first_member);
|
||||
return MMDB_OUT_OF_MEMORY_ERROR;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < array_size; i++) {
|
||||
member = member->next;
|
||||
if (MMDB_DATA_TYPE_UTF8_STRING != member->entry_data.type) {
|
||||
MMDB_free_entry_data_list(first_member);
|
||||
return MMDB_INVALID_METADATA_ERROR;
|
||||
}
|
||||
|
||||
mmdb->metadata.languages.names[i] =
|
||||
mmdb_strndup((char *)member->entry_data.utf8_string,
|
||||
member->entry_data.data_size);
|
||||
mmdb->metadata.languages.names[i] = mmdb_strndup(
|
||||
member->entry_data.utf8_string, member->entry_data.data_size);
|
||||
|
||||
if (NULL == mmdb->metadata.languages.names[i]) {
|
||||
MMDB_free_entry_data_list(first_member);
|
||||
return MMDB_OUT_OF_MEMORY_ERROR;
|
||||
}
|
||||
// We assign this as we go so that if we fail a calloc and need to
|
||||
@ -815,9 +839,8 @@ static int populate_description_metadata(MMDB_s *mmdb,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
mmdb->metadata.description.descriptions[i]->language =
|
||||
mmdb_strndup((char *)member->entry_data.utf8_string,
|
||||
member->entry_data.data_size);
|
||||
mmdb->metadata.description.descriptions[i]->language = mmdb_strndup(
|
||||
member->entry_data.utf8_string, member->entry_data.data_size);
|
||||
|
||||
if (NULL == mmdb->metadata.description.descriptions[i]->language) {
|
||||
status = MMDB_OUT_OF_MEMORY_ERROR;
|
||||
@ -831,9 +854,8 @@ static int populate_description_metadata(MMDB_s *mmdb,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
mmdb->metadata.description.descriptions[i]->description =
|
||||
mmdb_strndup((char *)member->entry_data.utf8_string,
|
||||
member->entry_data.data_size);
|
||||
mmdb->metadata.description.descriptions[i]->description = mmdb_strndup(
|
||||
member->entry_data.utf8_string, member->entry_data.data_size);
|
||||
|
||||
if (NULL == mmdb->metadata.description.descriptions[i]->description) {
|
||||
status = MMDB_OUT_OF_MEMORY_ERROR;
|
||||
@ -891,22 +913,24 @@ MMDB_lookup_result_s MMDB_lookup_sockaddr(const MMDB_s *const mmdb,
|
||||
.netmask = 0,
|
||||
.entry = {.mmdb = mmdb, .offset = 0}};
|
||||
|
||||
uint8_t mapped_address[16], *address;
|
||||
uint8_t mapped_address[16];
|
||||
uint8_t const *address;
|
||||
if (mmdb->metadata.ip_version == 4) {
|
||||
if (sockaddr->sa_family == AF_INET6) {
|
||||
*mmdb_error = MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR;
|
||||
return result;
|
||||
}
|
||||
address = (uint8_t *)&((struct sockaddr_in *)sockaddr)->sin_addr.s_addr;
|
||||
address = (uint8_t const *)&((struct sockaddr_in const *)sockaddr)
|
||||
->sin_addr.s_addr;
|
||||
} else {
|
||||
if (sockaddr->sa_family == AF_INET6) {
|
||||
address = (uint8_t *)&((struct sockaddr_in6 *)sockaddr)
|
||||
address = (uint8_t const *)&((struct sockaddr_in6 const *)sockaddr)
|
||||
->sin6_addr.s6_addr;
|
||||
} else {
|
||||
address = mapped_address;
|
||||
memset(address, 0, 12);
|
||||
memcpy(address + 12,
|
||||
&((struct sockaddr_in *)sockaddr)->sin_addr.s_addr,
|
||||
memset(mapped_address, 0, 12);
|
||||
memcpy(mapped_address + 12,
|
||||
&((struct sockaddr_in const *)sockaddr)->sin_addr.s_addr,
|
||||
4);
|
||||
}
|
||||
}
|
||||
@ -918,15 +942,15 @@ MMDB_lookup_result_s MMDB_lookup_sockaddr(const MMDB_s *const mmdb,
|
||||
}
|
||||
|
||||
static int find_address_in_search_tree(const MMDB_s *const mmdb,
|
||||
uint8_t *address,
|
||||
uint8_t const *address,
|
||||
sa_family_t address_family,
|
||||
MMDB_lookup_result_s *result) {
|
||||
record_info_s record_info = record_info_for_database(mmdb);
|
||||
if (0 == record_info.right_record_offset) {
|
||||
if (record_info.right_record_offset == 0) {
|
||||
return MMDB_UNKNOWN_DATABASE_FORMAT_ERROR;
|
||||
}
|
||||
|
||||
uint32_t value = 0;
|
||||
uint64_t value = 0;
|
||||
uint16_t current_bit = 0;
|
||||
if (mmdb->metadata.ip_version == 6 && address_family == AF_INET) {
|
||||
value = mmdb->ipv4_start_node.node_value;
|
||||
@ -940,6 +964,7 @@ static int find_address_in_search_tree(const MMDB_s *const mmdb,
|
||||
uint8_t bit =
|
||||
1U & (address[current_bit >> 3] >> (7 - (current_bit % 8)));
|
||||
|
||||
// Note that value*record_info.record_length can be larger than 2**32
|
||||
record_pointer = &search_tree[value * record_info.record_length];
|
||||
if (record_pointer + record_info.record_length > mmdb->data_section) {
|
||||
return MMDB_CORRUPT_SEARCH_TREE_ERROR;
|
||||
@ -986,10 +1011,11 @@ static record_info_s record_info_for_database(const MMDB_s *const mmdb) {
|
||||
record_info.left_record_getter = &get_uint32;
|
||||
record_info.right_record_getter = &get_uint32;
|
||||
record_info.right_record_offset = 4;
|
||||
} else {
|
||||
assert(false);
|
||||
}
|
||||
|
||||
// Callers must check that right_record_offset is non-zero in case none of
|
||||
// the above conditions matched.
|
||||
|
||||
return record_info;
|
||||
}
|
||||
|
||||
@ -1002,6 +1028,9 @@ static int find_ipv4_start_node(MMDB_s *const mmdb) {
|
||||
}
|
||||
|
||||
record_info_s record_info = record_info_for_database(mmdb);
|
||||
if (record_info.right_record_offset == 0) {
|
||||
return MMDB_UNKNOWN_DATABASE_FORMAT_ERROR;
|
||||
}
|
||||
|
||||
const uint8_t *search_tree = mmdb->file_content;
|
||||
uint32_t node_value = 0;
|
||||
@ -1052,7 +1081,7 @@ static uint8_t record_type(const MMDB_s *const mmdb, uint64_t record) {
|
||||
|
||||
static uint32_t get_left_28_bit_record(const uint8_t *record) {
|
||||
return record[0] * 65536 + record[1] * 256 + record[2] +
|
||||
((record[3] & 0xf0) << 20);
|
||||
(uint32_t)((record[3] & 0xf0) << 20);
|
||||
}
|
||||
|
||||
static uint32_t get_right_28_bit_record(const uint8_t *record) {
|
||||
@ -1064,7 +1093,7 @@ int MMDB_read_node(const MMDB_s *const mmdb,
|
||||
uint32_t node_number,
|
||||
MMDB_search_node_s *const node) {
|
||||
record_info_s record_info = record_info_for_database(mmdb);
|
||||
if (0 == record_info.right_record_offset) {
|
||||
if (record_info.right_record_offset == 0) {
|
||||
return MMDB_UNKNOWN_DATABASE_FORMAT_ERROR;
|
||||
}
|
||||
|
||||
@ -1116,13 +1145,13 @@ int MMDB_get_value(MMDB_entry_s *const start,
|
||||
int MMDB_vget_value(MMDB_entry_s *const start,
|
||||
MMDB_entry_data_s *const entry_data,
|
||||
va_list va_path) {
|
||||
int length = path_length(va_path);
|
||||
size_t length = path_length(va_path);
|
||||
const char *path_elem;
|
||||
int i = 0;
|
||||
|
||||
MAYBE_CHECK_SIZE_OVERFLOW(length,
|
||||
SIZE_MAX / sizeof(const char *) - 1,
|
||||
MMDB_INVALID_METADATA_ERROR);
|
||||
if (length == SIZE_MAX) {
|
||||
return MMDB_INVALID_METADATA_ERROR;
|
||||
}
|
||||
|
||||
const char **path = calloc(length + 1, sizeof(const char *));
|
||||
if (NULL == path) {
|
||||
@ -1137,18 +1166,17 @@ int MMDB_vget_value(MMDB_entry_s *const start,
|
||||
|
||||
int status = MMDB_aget_value(start, entry_data, path);
|
||||
|
||||
free((char **)path);
|
||||
free(path);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static int path_length(va_list va_path) {
|
||||
int i = 0;
|
||||
const char *ignore;
|
||||
static size_t path_length(va_list va_path) {
|
||||
size_t i = 0;
|
||||
va_list path_copy;
|
||||
va_copy(path_copy, va_path);
|
||||
|
||||
while (NULL != (ignore = va_arg(path_copy, char *))) {
|
||||
while (NULL != va_arg(path_copy, char *)) {
|
||||
i++;
|
||||
}
|
||||
|
||||
@ -1221,7 +1249,7 @@ static int lookup_path_in_array(const char *path_elem,
|
||||
|
||||
int saved_errno = errno;
|
||||
errno = 0;
|
||||
int array_index = strtol(path_elem, &first_invalid, 10);
|
||||
long array_index = strtol(path_elem, &first_invalid, 10);
|
||||
if (ERANGE == errno) {
|
||||
errno = saved_errno;
|
||||
return MMDB_INVALID_LOOKUP_PATH_ERROR;
|
||||
@ -1236,11 +1264,11 @@ static int lookup_path_in_array(const char *path_elem,
|
||||
}
|
||||
}
|
||||
|
||||
if (*first_invalid || (uint32_t)array_index >= size) {
|
||||
if (*first_invalid || (unsigned long)array_index >= size) {
|
||||
return MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR;
|
||||
}
|
||||
|
||||
for (int i = 0; i < array_index; i++) {
|
||||
for (long i = 0; i < array_index; i++) {
|
||||
/* We don't want to follow a pointer here. If the next element is a
|
||||
* pointer we simply skip it and keep going */
|
||||
CHECKED_DECODE_ONE(mmdb, entry_data->offset_to_next, entry_data);
|
||||
@ -1406,7 +1434,7 @@ static int decode_one(const MMDB_s *const mmdb,
|
||||
DEBUG_MSGF("Extended type: %i (%s)", type, type_num_to_name(type));
|
||||
}
|
||||
|
||||
entry_data->type = type;
|
||||
entry_data->type = (uint32_t)type;
|
||||
|
||||
if (type == MMDB_DATA_TYPE_POINTER) {
|
||||
uint8_t psize = ((ctrl >> 3) & 3) + 1;
|
||||
@ -1462,6 +1490,7 @@ static int decode_one(const MMDB_s *const mmdb,
|
||||
}
|
||||
size = 65821 + get_uint24(&mem[offset]);
|
||||
offset += 3;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1497,28 +1526,28 @@ static int decode_one(const MMDB_s *const mmdb,
|
||||
DEBUG_MSGF("uint16 of size %d", size);
|
||||
return MMDB_INVALID_DATA_ERROR;
|
||||
}
|
||||
entry_data->uint16 = (uint16_t)get_uintX(&mem[offset], size);
|
||||
entry_data->uint16 = (uint16_t)get_uintX(&mem[offset], (int)size);
|
||||
DEBUG_MSGF("uint16 value: %u", entry_data->uint16);
|
||||
} else if (type == MMDB_DATA_TYPE_UINT32) {
|
||||
if (size > 4) {
|
||||
DEBUG_MSGF("uint32 of size %d", size);
|
||||
return MMDB_INVALID_DATA_ERROR;
|
||||
}
|
||||
entry_data->uint32 = (uint32_t)get_uintX(&mem[offset], size);
|
||||
entry_data->uint32 = (uint32_t)get_uintX(&mem[offset], (int)size);
|
||||
DEBUG_MSGF("uint32 value: %u", entry_data->uint32);
|
||||
} else if (type == MMDB_DATA_TYPE_INT32) {
|
||||
if (size > 4) {
|
||||
DEBUG_MSGF("int32 of size %d", size);
|
||||
return MMDB_INVALID_DATA_ERROR;
|
||||
}
|
||||
entry_data->int32 = get_sintX(&mem[offset], size);
|
||||
entry_data->int32 = get_sintX(&mem[offset], (int)size);
|
||||
DEBUG_MSGF("int32 value: %i", entry_data->int32);
|
||||
} else if (type == MMDB_DATA_TYPE_UINT64) {
|
||||
if (size > 8) {
|
||||
DEBUG_MSGF("uint64 of size %d", size);
|
||||
return MMDB_INVALID_DATA_ERROR;
|
||||
}
|
||||
entry_data->uint64 = get_uintX(&mem[offset], size);
|
||||
entry_data->uint64 = get_uintX(&mem[offset], (int)size);
|
||||
DEBUG_MSGF("uint64 value: %" PRIu64, entry_data->uint64);
|
||||
} else if (type == MMDB_DATA_TYPE_UINT128) {
|
||||
if (size > 16) {
|
||||
@ -1531,7 +1560,7 @@ static int decode_one(const MMDB_s *const mmdb,
|
||||
memcpy(entry_data->uint128 + 16 - size, &mem[offset], size);
|
||||
}
|
||||
#else
|
||||
entry_data->uint128 = get_uint128(&mem[offset], size);
|
||||
entry_data->uint128 = get_uint128(&mem[offset], (int)size);
|
||||
#endif
|
||||
} else if (type == MMDB_DATA_TYPE_FLOAT) {
|
||||
if (size != 4) {
|
||||
@ -1550,7 +1579,7 @@ static int decode_one(const MMDB_s *const mmdb,
|
||||
entry_data->double_value = get_ieee754_double(&mem[offset]);
|
||||
DEBUG_MSGF("double value: %f", entry_data->double_value);
|
||||
} else if (type == MMDB_DATA_TYPE_UTF8_STRING) {
|
||||
entry_data->utf8_string = size == 0 ? "" : (char *)&mem[offset];
|
||||
entry_data->utf8_string = size == 0 ? "" : (char const *)&mem[offset];
|
||||
entry_data->data_size = size;
|
||||
#ifdef MMDB_DEBUG
|
||||
char *string =
|
||||
@ -1578,13 +1607,15 @@ get_ptr_from(uint8_t ctrl, uint8_t const *const ptr, int ptr_size) {
|
||||
uint32_t new_offset;
|
||||
switch (ptr_size) {
|
||||
case 1:
|
||||
new_offset = ((ctrl & 7) << 8) + ptr[0];
|
||||
new_offset = (uint32_t)((ctrl & 7) << 8) + ptr[0];
|
||||
break;
|
||||
case 2:
|
||||
new_offset = 2048 + ((ctrl & 7) << 16) + (ptr[0] << 8) + ptr[1];
|
||||
new_offset = 2048 + (uint32_t)((ctrl & 7) << 16) +
|
||||
(uint32_t)(ptr[0] << 8) + ptr[1];
|
||||
break;
|
||||
case 3:
|
||||
new_offset = 2048 + 524288 + ((ctrl & 7) << 24) + get_uint24(ptr);
|
||||
new_offset =
|
||||
2048 + 524288 + (uint32_t)((ctrl & 7) << 24) + get_uint24(ptr);
|
||||
break;
|
||||
case 4:
|
||||
default:
|
||||
@ -1605,6 +1636,8 @@ int MMDB_get_metadata_as_entry_data_list(
|
||||
|
||||
int MMDB_get_entry_data_list(MMDB_entry_s *start,
|
||||
MMDB_entry_data_list_s **const entry_data_list) {
|
||||
*entry_data_list = NULL;
|
||||
|
||||
MMDB_data_pool_s *const pool = data_pool_new(MMDB_POOL_INIT_SIZE);
|
||||
if (!pool) {
|
||||
return MMDB_OUT_OF_MEMORY_ERROR;
|
||||
@ -1618,6 +1651,10 @@ int MMDB_get_entry_data_list(MMDB_entry_s *start,
|
||||
|
||||
int const status =
|
||||
get_entry_data_list(start->mmdb, start->offset, list, pool, 0);
|
||||
if (MMDB_SUCCESS != status) {
|
||||
data_pool_destroy(pool);
|
||||
return status;
|
||||
}
|
||||
|
||||
*entry_data_list = data_pool_to_list(pool);
|
||||
if (!*entry_data_list) {
|
||||
@ -1732,7 +1769,7 @@ static int get_entry_data_list(const MMDB_s *const mmdb,
|
||||
|
||||
static float get_ieee754_float(const uint8_t *restrict p) {
|
||||
volatile float f;
|
||||
uint8_t *q = (void *)&f;
|
||||
volatile uint8_t *q = (volatile void *)&f;
|
||||
/* Windows builds don't use autoconf but we can assume they're all
|
||||
* little-endian. */
|
||||
#if MMDB_LITTLE_ENDIAN || _WIN32
|
||||
@ -1748,7 +1785,7 @@ static float get_ieee754_float(const uint8_t *restrict p) {
|
||||
|
||||
static double get_ieee754_double(const uint8_t *restrict p) {
|
||||
volatile double d;
|
||||
uint8_t *q = (void *)&d;
|
||||
volatile uint8_t *q = (volatile void *)&d;
|
||||
#if MMDB_LITTLE_ENDIAN || _WIN32
|
||||
q[7] = p[0];
|
||||
q[6] = p[1];
|
||||
@ -1803,7 +1840,16 @@ static void free_mmdb_struct(MMDB_s *const mmdb) {
|
||||
}
|
||||
|
||||
if (NULL != mmdb->filename) {
|
||||
#if defined(__clang__)
|
||||
// This is a const char * that we need to free, which isn't valid. However it
|
||||
// would mean changing the public API to fix this.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wcast-qual"
|
||||
#endif
|
||||
FREE_AND_SET_NULL(mmdb->filename);
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
}
|
||||
if (NULL != mmdb->file_content) {
|
||||
#ifdef _WIN32
|
||||
@ -1812,12 +1858,30 @@ static void free_mmdb_struct(MMDB_s *const mmdb) {
|
||||
* to cleanup then. */
|
||||
WSACleanup();
|
||||
#else
|
||||
munmap((void *)mmdb->file_content, mmdb->file_size);
|
||||
#if defined(__clang__)
|
||||
// This is a const char * that we need to free, which isn't valid. However it
|
||||
// would mean changing the public API to fix this.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wcast-qual"
|
||||
#endif
|
||||
munmap((void *)mmdb->file_content, (size_t)mmdb->file_size);
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
if (NULL != mmdb->metadata.database_type) {
|
||||
#if defined(__clang__)
|
||||
// This is a const char * that we need to free, which isn't valid. However it
|
||||
// would mean changing the public API to fix this.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wcast-qual"
|
||||
#endif
|
||||
FREE_AND_SET_NULL(mmdb->metadata.database_type);
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
}
|
||||
|
||||
free_languages_metadata(mmdb);
|
||||
@ -1830,7 +1894,16 @@ static void free_languages_metadata(MMDB_s *mmdb) {
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < mmdb->metadata.languages.count; i++) {
|
||||
#if defined(__clang__)
|
||||
// This is a const char * that we need to free, which isn't valid. However it
|
||||
// would mean changing the public API to fix this.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wcast-qual"
|
||||
#endif
|
||||
FREE_AND_SET_NULL(mmdb->metadata.languages.names[i]);
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
}
|
||||
FREE_AND_SET_NULL(mmdb->metadata.languages.names);
|
||||
}
|
||||
@ -1843,14 +1916,32 @@ static void free_descriptions_metadata(MMDB_s *mmdb) {
|
||||
for (size_t i = 0; i < mmdb->metadata.description.count; i++) {
|
||||
if (NULL != mmdb->metadata.description.descriptions[i]) {
|
||||
if (NULL != mmdb->metadata.description.descriptions[i]->language) {
|
||||
#if defined(__clang__)
|
||||
// This is a const char * that we need to free, which isn't valid. However it
|
||||
// would mean changing the public API to fix this.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wcast-qual"
|
||||
#endif
|
||||
FREE_AND_SET_NULL(
|
||||
mmdb->metadata.description.descriptions[i]->language);
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
}
|
||||
|
||||
if (NULL !=
|
||||
mmdb->metadata.description.descriptions[i]->description) {
|
||||
#if defined(__clang__)
|
||||
// This is a const char * that we need to free, which isn't valid. However it
|
||||
// would mean changing the public API to fix this.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wcast-qual"
|
||||
#endif
|
||||
FREE_AND_SET_NULL(
|
||||
mmdb->metadata.description.descriptions[i]->description);
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
}
|
||||
FREE_AND_SET_NULL(mmdb->metadata.description.descriptions[i]);
|
||||
}
|
||||
@ -1891,9 +1982,9 @@ dump_entry_data_list(FILE *stream,
|
||||
*status = MMDB_INVALID_DATA_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
char *key = mmdb_strndup(
|
||||
(char *)entry_data_list->entry_data.utf8_string,
|
||||
entry_data_list->entry_data.data_size);
|
||||
char *key =
|
||||
mmdb_strndup(entry_data_list->entry_data.utf8_string,
|
||||
entry_data_list->entry_data.data_size);
|
||||
if (NULL == key) {
|
||||
*status = MMDB_OUT_OF_MEMORY_ERROR;
|
||||
return NULL;
|
||||
@ -1938,9 +2029,8 @@ dump_entry_data_list(FILE *stream,
|
||||
fprintf(stream, "]\n");
|
||||
} break;
|
||||
case MMDB_DATA_TYPE_UTF8_STRING: {
|
||||
char *string =
|
||||
mmdb_strndup((char *)entry_data_list->entry_data.utf8_string,
|
||||
entry_data_list->entry_data.data_size);
|
||||
char *string = mmdb_strndup(entry_data_list->entry_data.utf8_string,
|
||||
entry_data_list->entry_data.data_size);
|
||||
if (NULL == string) {
|
||||
*status = MMDB_OUT_OF_MEMORY_ERROR;
|
||||
return NULL;
|
||||
@ -1952,7 +2042,7 @@ dump_entry_data_list(FILE *stream,
|
||||
} break;
|
||||
case MMDB_DATA_TYPE_BYTES: {
|
||||
char *hex_string =
|
||||
bytes_to_hex((uint8_t *)entry_data_list->entry_data.bytes,
|
||||
bytes_to_hex(entry_data_list->entry_data.bytes,
|
||||
entry_data_list->entry_data.data_size);
|
||||
|
||||
if (NULL == hex_string) {
|
||||
@ -2044,12 +2134,12 @@ dump_entry_data_list(FILE *stream,
|
||||
static void print_indentation(FILE *stream, int i) {
|
||||
char buffer[1024];
|
||||
int size = i >= 1024 ? 1023 : i;
|
||||
memset(buffer, 32, size);
|
||||
memset(buffer, 32, (size_t)size);
|
||||
buffer[size] = '\0';
|
||||
fputs(buffer, stream);
|
||||
}
|
||||
|
||||
static char *bytes_to_hex(uint8_t *bytes, uint32_t size) {
|
||||
static char *bytes_to_hex(uint8_t const *bytes, uint32_t size) {
|
||||
char *hex_string;
|
||||
MAYBE_CHECK_SIZE_OVERFLOW(size, SIZE_MAX / 2 - 1, NULL);
|
||||
|
||||
|
16
vendor/MaxmindDB/t/CMakeLists.txt
vendored
16
vendor/MaxmindDB/t/CMakeLists.txt
vendored
@ -29,10 +29,18 @@ if(UNIX) # or if (NOT WIN32)
|
||||
find_package(Threads)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
# 4244, 4267 - libtap causes a significant number of conversion warning in
|
||||
# our tests on Windows.
|
||||
# 4996 - vsprintf used by libtap is unsafe.
|
||||
add_definitions("/wd4244 /wd4267 /wd4996")
|
||||
endif(WIN32)
|
||||
|
||||
foreach(TEST_TARGET_NAME ${TEST_TARGET_NAMES})
|
||||
add_executable(${TEST_TARGET_NAME} ${TEST_TARGET_NAME}.c maxminddb_test_helper.c)
|
||||
target_include_directories(${TEST_TARGET_NAME} PRIVATE ../src)
|
||||
target_link_libraries(${TEST_TARGET_NAME} maxminddb tap)
|
||||
target_compile_definitions(${TEST_TARGET_NAME} PRIVATE PACKAGE_VERSION="${PROJECT_VERSION}")
|
||||
|
||||
if(UNIX)
|
||||
target_link_libraries(${TEST_TARGET_NAME} m)
|
||||
@ -42,5 +50,11 @@ foreach(TEST_TARGET_NAME ${TEST_TARGET_NAMES})
|
||||
target_link_libraries(${TEST_TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
|
||||
add_test(${TEST_TARGET_NAME} ${TEST_TARGET_NAME})
|
||||
add_test( NAME ${TEST_TARGET_NAME} COMMAND ${TEST_TARGET_NAME} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/t)
|
||||
endforeach()
|
||||
|
||||
if(BUILD_FUZZING)
|
||||
add_executable(fuzz_mmdb fuzz_mmdb.c)
|
||||
target_include_directories(fuzz_mmdb PRIVATE ../src)
|
||||
target_link_libraries(fuzz_mmdb maxminddb $ENV{LIB_FUZZING_ENGINE})
|
||||
endif()
|
||||
|
10
vendor/MaxmindDB/t/bad_pointers_t.c
vendored
10
vendor/MaxmindDB/t/bad_pointers_t.c
vendored
@ -2,9 +2,9 @@
|
||||
|
||||
void run_tests(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-test-broken-pointers-24.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
{
|
||||
const char *ip = "1.1.1.16";
|
||||
@ -29,6 +29,9 @@ void run_tests(int mode, const char *mode_desc) {
|
||||
"MMDB_get_entry_data_list returns MMDB_INVALID_DATA_ERROR for "
|
||||
"bad pointer in data section");
|
||||
|
||||
// This is not necessary as on error we should not need to free
|
||||
// anything. However test that it is safe to do so. See change in
|
||||
// 1.12.2.
|
||||
MMDB_free_entry_data_list(entry_data_list);
|
||||
}
|
||||
|
||||
@ -36,8 +39,7 @@ void run_tests(int mode, const char *mode_desc) {
|
||||
const char *ip = "1.1.1.32";
|
||||
|
||||
int gai_error, mmdb_error;
|
||||
MMDB_lookup_result_s UNUSED(result) =
|
||||
MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error);
|
||||
MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error);
|
||||
|
||||
cmp_ok(mmdb_error,
|
||||
"==",
|
||||
|
10
vendor/MaxmindDB/t/basic_lookup_t.c
vendored
10
vendor/MaxmindDB/t/basic_lookup_t.c
vendored
@ -36,7 +36,7 @@ void test_one_result(MMDB_s *mmdb,
|
||||
} else {
|
||||
// When looking up IPv4 addresses in a mixed DB the result will be
|
||||
// something like "::1.2.3.4", not just "1.2.3.4".
|
||||
int maxlen = strlen(expect) + 3;
|
||||
size_t maxlen = strlen(expect) + 3;
|
||||
real_expect = malloc(maxlen);
|
||||
if (!real_expect) {
|
||||
BAIL_OUT("could not allocate memory");
|
||||
@ -77,12 +77,12 @@ void run_ipX_tests(const char *filename,
|
||||
int missing_ips_length,
|
||||
const char *pairs[][2],
|
||||
int pairs_rows) {
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
int mode = Current_Mode;
|
||||
const char *mode_desc = Current_Mode_Description;
|
||||
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
char desc_suffix[500];
|
||||
snprintf(desc_suffix, 500, "%s - %s", filename, mode_desc);
|
||||
@ -180,12 +180,12 @@ void all_record_sizes(int mode, const char *description) {
|
||||
|
||||
static void test_big_lookup(void) {
|
||||
const char *const db_filename = "GeoIP2-Precision-Enterprise-Test.mmdb";
|
||||
const char *const db_path = test_database_path(db_filename);
|
||||
char *db_path = test_database_path(db_filename);
|
||||
ok(db_path != NULL, "got database path");
|
||||
|
||||
MMDB_s *const mmdb = open_ok(db_path, MMDB_MODE_MMAP, "mmap mode");
|
||||
ok(mmdb != NULL, "opened MMDB");
|
||||
free((char *)db_path);
|
||||
free(db_path);
|
||||
|
||||
int gai_err = 0, mmdb_err = 0;
|
||||
const char *const ip_address = "81.2.69.160";
|
||||
|
17
vendor/MaxmindDB/t/compile_c++_t.pl
vendored
17
vendor/MaxmindDB/t/compile_c++_t.pl
vendored
@ -28,7 +28,11 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
const char *fname = "$test_db";
|
||||
MMDB_s mmdb;
|
||||
return MMDB_open(fname, MMDB_MODE_MMAP, &mmdb);
|
||||
if (MMDB_open(fname, MMDB_MODE_MMAP, &mmdb) != MMDB_SUCCESS) {
|
||||
return 1;
|
||||
}
|
||||
MMDB_close(&mmdb);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
|
||||
@ -45,8 +49,17 @@ my $include_dir = abs_path("$Bin/../include");
|
||||
my $lib_dir = abs_path("$Bin/../src/.libs");
|
||||
|
||||
my $cxx = $ENV{CXX} || 'c++';
|
||||
my @cxxflags = $ENV{CXXFLAGS} ? ( split ' ', $ENV{CXXFLAGS} ) : ();
|
||||
_test_cmd(
|
||||
[ $cxx, $file, "-I$include_dir", "-L$lib_dir", "-lmaxminddb", "-o$exe" ],
|
||||
[
|
||||
$cxx,
|
||||
$file,
|
||||
@cxxflags,
|
||||
"-I$include_dir",
|
||||
"-L$lib_dir",
|
||||
"-lmaxminddb",
|
||||
"-o$exe",
|
||||
],
|
||||
qr/^$/,
|
||||
q{},
|
||||
0,
|
||||
|
4
vendor/MaxmindDB/t/data-pool-t.c
vendored
4
vendor/MaxmindDB/t/data-pool-t.c
vendored
@ -43,7 +43,9 @@ static void test_data_pool_new(void) {
|
||||
}
|
||||
|
||||
static void test_data_pool_destroy(void) {
|
||||
{ data_pool_destroy(NULL); }
|
||||
{
|
||||
data_pool_destroy(NULL);
|
||||
}
|
||||
|
||||
{
|
||||
MMDB_data_pool_s *const pool = data_pool_new(512);
|
||||
|
37
vendor/MaxmindDB/t/data_entry_list_t.c
vendored
37
vendor/MaxmindDB/t/data_entry_list_t.c
vendored
@ -161,7 +161,7 @@ test_mapX_key_value_pair(MMDB_entry_data_list_s *entry_data_list) {
|
||||
"==",
|
||||
MMDB_DATA_TYPE_UTF8_STRING,
|
||||
"found a map key in 'map{mapX}'");
|
||||
const char *mapX_key_name = dup_entry_string_or_bail(mapX_key->entry_data);
|
||||
char *mapX_key_name = dup_entry_string_or_bail(mapX_key->entry_data);
|
||||
|
||||
if (strcmp(mapX_key_name, "utf8_stringX") == 0) {
|
||||
MMDB_entry_data_list_s *mapX_value = entry_data_list =
|
||||
@ -170,18 +170,18 @@ test_mapX_key_value_pair(MMDB_entry_data_list_s *entry_data_list) {
|
||||
"==",
|
||||
MMDB_DATA_TYPE_UTF8_STRING,
|
||||
"'map{mapX}{utf8_stringX}' type is utf8_string");
|
||||
const char *utf8_stringX_value =
|
||||
char *utf8_stringX_value =
|
||||
dup_entry_string_or_bail(mapX_value->entry_data);
|
||||
ok(strcmp(utf8_stringX_value, "hello") == 0,
|
||||
"map{mapX}{utf8_stringX} value is 'hello'");
|
||||
free((void *)utf8_stringX_value);
|
||||
free(utf8_stringX_value);
|
||||
} else if (strcmp(mapX_key_name, "arrayX") == 0) {
|
||||
entry_data_list = test_arrayX_value(entry_data_list);
|
||||
} else {
|
||||
ok(0, "unknown key found in map{mapX} - %s", mapX_key_name);
|
||||
}
|
||||
|
||||
free((void *)mapX_key_name);
|
||||
free(mapX_key_name);
|
||||
|
||||
return entry_data_list;
|
||||
}
|
||||
@ -203,10 +203,9 @@ test_map_value(MMDB_entry_data_list_s *entry_data_list) {
|
||||
"==",
|
||||
MMDB_DATA_TYPE_UTF8_STRING,
|
||||
"found a map key in 'map'");
|
||||
const char *map_key_1_name =
|
||||
dup_entry_string_or_bail(map_key_1->entry_data);
|
||||
char *map_key_1_name = dup_entry_string_or_bail(map_key_1->entry_data);
|
||||
ok(strcmp(map_key_1_name, "mapX") == 0, "key name is mapX");
|
||||
free((void *)map_key_1_name);
|
||||
free(map_key_1_name);
|
||||
|
||||
MMDB_entry_data_list_s *mapX = entry_data_list = entry_data_list->next;
|
||||
cmp_ok(mapX->entry_data.type,
|
||||
@ -312,7 +311,7 @@ test_utf8_string_value(MMDB_entry_data_list_s *entry_data_list) {
|
||||
"==",
|
||||
MMDB_DATA_TYPE_UTF8_STRING,
|
||||
"'utf8_string' key's value is a string");
|
||||
const char *utf8_string = dup_entry_string_or_bail(value->entry_data);
|
||||
char *utf8_string = dup_entry_string_or_bail(value->entry_data);
|
||||
// This is hex for "unicode! ☯ - ♫" as bytes
|
||||
char expect[19] = {0x75,
|
||||
0x6e,
|
||||
@ -323,29 +322,29 @@ test_utf8_string_value(MMDB_entry_data_list_s *entry_data_list) {
|
||||
0x65,
|
||||
0x21,
|
||||
0x20,
|
||||
0xe2,
|
||||
0x98,
|
||||
0xaf,
|
||||
(char)0xe2,
|
||||
(char)0x98,
|
||||
(char)0xaf,
|
||||
0x20,
|
||||
0x2d,
|
||||
0x20,
|
||||
0xe2,
|
||||
0x99,
|
||||
0xab,
|
||||
(char)0xe2,
|
||||
(char)0x99,
|
||||
(char)0xab,
|
||||
0x00};
|
||||
|
||||
is(utf8_string, expect, "got expected value for utf8_string key");
|
||||
|
||||
free((void *)utf8_string);
|
||||
free(utf8_string);
|
||||
|
||||
return entry_data_list;
|
||||
}
|
||||
|
||||
void run_tests(int mode, const char *description) {
|
||||
const char *filename = "MaxMind-DB-test-decoder.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, description);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
char *ip = "1.1.1.1";
|
||||
MMDB_lookup_result_s result =
|
||||
@ -385,7 +384,7 @@ void run_tests(int mode, const char *description) {
|
||||
MMDB_DATA_TYPE_UTF8_STRING,
|
||||
"found a map key");
|
||||
|
||||
const char *key_name = dup_entry_string_or_bail(key->entry_data);
|
||||
char *key_name = dup_entry_string_or_bail(key->entry_data);
|
||||
if (strcmp(key_name, "array") == 0) {
|
||||
entry_data_list = test_array_value(entry_data_list);
|
||||
} else if (strcmp(key_name, "boolean") == 0) {
|
||||
@ -414,7 +413,7 @@ void run_tests(int mode, const char *description) {
|
||||
ok(0, "unknown key found in map - %s", key_name);
|
||||
}
|
||||
|
||||
free((void *)key_name);
|
||||
free(key_name);
|
||||
}
|
||||
|
||||
MMDB_free_entry_data_list(first);
|
||||
|
26
vendor/MaxmindDB/t/data_types_t.c
vendored
26
vendor/MaxmindDB/t/data_types_t.c
vendored
@ -14,7 +14,7 @@ void test_all_data_types(MMDB_lookup_result_s *result,
|
||||
description,
|
||||
"utf8_string",
|
||||
NULL);
|
||||
const char *string = mmdb_strndup(data.utf8_string, data.data_size);
|
||||
char *string = mmdb_strndup(data.utf8_string, data.data_size);
|
||||
// This is hex for "unicode! ☯ - ♫" as bytes
|
||||
char expect[19] = {0x75,
|
||||
0x6e,
|
||||
@ -25,19 +25,19 @@ void test_all_data_types(MMDB_lookup_result_s *result,
|
||||
0x65,
|
||||
0x21,
|
||||
0x20,
|
||||
0xe2,
|
||||
0x98,
|
||||
0xaf,
|
||||
(char)0xe2,
|
||||
(char)0x98,
|
||||
(char)0xaf,
|
||||
0x20,
|
||||
0x2d,
|
||||
0x20,
|
||||
0xe2,
|
||||
0x99,
|
||||
0xab,
|
||||
(char)0xe2,
|
||||
(char)0x99,
|
||||
(char)0xab,
|
||||
0x00};
|
||||
is(string, expect, "got expected utf8_string value");
|
||||
|
||||
free((char *)string);
|
||||
free(string);
|
||||
}
|
||||
|
||||
{
|
||||
@ -67,7 +67,7 @@ void test_all_data_types(MMDB_lookup_result_s *result,
|
||||
MMDB_entry_data_s data =
|
||||
data_ok(result, MMDB_DATA_TYPE_BYTES, description, "bytes", NULL);
|
||||
uint8_t expect[] = {0x00, 0x00, 0x00, 0x2a};
|
||||
ok(memcmp((uint8_t *)data.bytes, expect, 4) == 0,
|
||||
ok(memcmp(data.bytes, expect, 4) == 0,
|
||||
"bytes field has expected value");
|
||||
}
|
||||
|
||||
@ -204,9 +204,9 @@ void test_all_data_types(MMDB_lookup_result_s *result,
|
||||
"mapX",
|
||||
"utf8_stringX",
|
||||
NULL);
|
||||
const char *string = mmdb_strndup(data.utf8_string, data.data_size);
|
||||
char *string = mmdb_strndup(data.utf8_string, data.data_size);
|
||||
is(string, "hello", "map{mapX}{utf8_stringX} is 'hello'");
|
||||
free((char *)string);
|
||||
free(string);
|
||||
|
||||
snprintf(
|
||||
description, 500, "map{mapX}{arrayX} for %s - %s", ip, mode_desc);
|
||||
@ -417,7 +417,7 @@ void test_all_data_types_as_zero(MMDB_lookup_result_s *result,
|
||||
|
||||
void run_tests(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-test-decoder.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
|
||||
// All of the remaining tests require an open mmdb
|
||||
@ -426,7 +426,7 @@ void run_tests(int mode, const char *mode_desc) {
|
||||
return;
|
||||
}
|
||||
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
{
|
||||
const char *ip = "not an ip";
|
||||
|
5
vendor/MaxmindDB/t/dump_t.c
vendored
5
vendor/MaxmindDB/t/dump_t.c
vendored
@ -1,12 +1,13 @@
|
||||
#define _XOPEN_SOURCE 700
|
||||
|
||||
#include "maxminddb_test_helper.h"
|
||||
|
||||
#ifdef HAVE_OPEN_MEMSTREAM
|
||||
void run_tests(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-test-decoder.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
const char *ip = "1.1.1.1";
|
||||
MMDB_lookup_result_s result =
|
||||
|
8
vendor/MaxmindDB/t/external_symbols_t.pl
vendored
8
vendor/MaxmindDB/t/external_symbols_t.pl
vendored
@ -5,12 +5,20 @@ use warnings;
|
||||
|
||||
use FindBin qw( $Bin );
|
||||
|
||||
_skip_tests_if_not_linux();
|
||||
_skip_tests_if_required_modules_are_not_present();
|
||||
_skip_tests_if_nm_is_not_present();
|
||||
_test_libs_external_symbols();
|
||||
|
||||
done_testing();
|
||||
|
||||
sub _skip_tests_if_not_linux {
|
||||
return if $^O eq 'linux';
|
||||
|
||||
print "1..0 # skip all tests skipped - this test requires Linux.\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
sub _skip_tests_if_required_modules_are_not_present {
|
||||
eval <<'EOF';
|
||||
use Test::More 0.88;
|
||||
|
34
vendor/MaxmindDB/t/fuzz_mmdb.c
vendored
Normal file
34
vendor/MaxmindDB/t/fuzz_mmdb.c
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
#include "maxminddb-compat-util.h"
|
||||
#include "maxminddb.h"
|
||||
#include <unistd.h>
|
||||
|
||||
#define kMinInputLength 2
|
||||
#define kMaxInputLength 4048
|
||||
|
||||
extern int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
int status;
|
||||
FILE *fp;
|
||||
MMDB_s mmdb;
|
||||
char filename[256];
|
||||
|
||||
if (size < kMinInputLength || size > kMaxInputLength)
|
||||
return 0;
|
||||
|
||||
sprintf(filename, "/tmp/libfuzzer.%d", getpid());
|
||||
|
||||
fp = fopen(filename, "wb");
|
||||
if (!fp)
|
||||
return 0;
|
||||
|
||||
fwrite(data, size, sizeof(uint8_t), fp);
|
||||
fclose(fp);
|
||||
|
||||
status = MMDB_open(filename, MMDB_MODE_MMAP, &mmdb);
|
||||
if (status == MMDB_SUCCESS)
|
||||
MMDB_close(&mmdb);
|
||||
|
||||
unlink(filename);
|
||||
return 0;
|
||||
}
|
4
vendor/MaxmindDB/t/get_value_pointer_bug_t.c
vendored
4
vendor/MaxmindDB/t/get_value_pointer_bug_t.c
vendored
@ -47,9 +47,9 @@ void test_one_ip(MMDB_s *mmdb,
|
||||
|
||||
void run_tests(int mode, const char *mode_desc) {
|
||||
const char *filename = "GeoIP2-City-Test.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
/* This exercises a bug where the entire top-level value is a pointer to
|
||||
* another part of the data section. */
|
||||
|
8
vendor/MaxmindDB/t/get_value_t.c
vendored
8
vendor/MaxmindDB/t/get_value_t.c
vendored
@ -77,9 +77,9 @@ int call_vget_value(MMDB_entry_s *entry, MMDB_entry_data_s *entry_data, ...) {
|
||||
|
||||
void test_simple_structure(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-test-decoder.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
const char *ip = "1.1.1.1";
|
||||
MMDB_lookup_result_s result =
|
||||
@ -242,9 +242,9 @@ void test_no_result(int status,
|
||||
|
||||
void test_nested_structure(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-test-nested.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
const char *ip = "1.1.1.1";
|
||||
MMDB_lookup_result_s result =
|
||||
|
4
vendor/MaxmindDB/t/ipv4_start_cache_t.c
vendored
4
vendor/MaxmindDB/t/ipv4_start_cache_t.c
vendored
@ -18,9 +18,9 @@ void test_one_ip(MMDB_s *mmdb,
|
||||
|
||||
void run_tests(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-no-ipv4-search-tree.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
test_one_ip(mmdb, "1.1.1.1", filename, mode_desc);
|
||||
test_one_ip(mmdb, "255.255.255.255", filename, mode_desc);
|
||||
|
7
vendor/MaxmindDB/t/ipv6_lookup_in_ipv4_t.c
vendored
7
vendor/MaxmindDB/t/ipv6_lookup_in_ipv4_t.c
vendored
@ -2,14 +2,13 @@
|
||||
|
||||
void run_tests(int mode, const char *mode_desc) {
|
||||
const char *filename = "MaxMind-DB-test-ipv4-28.mmdb";
|
||||
const char *path = test_database_path(filename);
|
||||
char *path = test_database_path(filename);
|
||||
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||||
free((void *)path);
|
||||
free(path);
|
||||
|
||||
const char *ip = "::abcd";
|
||||
int gai_error, mmdb_error;
|
||||
MMDB_lookup_result_s UNUSED(result) =
|
||||
MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error);
|
||||
MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error);
|
||||
|
||||
cmp_ok(mmdb_error,
|
||||
"==",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user