summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2016-12-13 00:08:44 +0100
committerAndrew Shadura <andrewsh@debian.org>2016-12-13 14:12:49 +0100
commitcbcda5a02273a68277a2f5c9aa1c799794df2fc9 (patch)
treedf230f94e04016303df98f225ec160ab5f670b3d
parent10033048d9c97c5b3a8a9396760dbb75f9584843 (diff)
parentac38577eacbb21536a02caf00891fee542d7dd30 (diff)
* New upstream release 9.21 * Remove static linked library from libstorm-dev * Compile without pie hardening (shared library is already pic)
-rw-r--r--CMakeLists.txt115
-rw-r--r--Makefile.linux4
-rw-r--r--Makefile.mac4
-rw-r--r--Premake5.lua2
-rw-r--r--StormLib.bat2
-rw-r--r--StormLib_dll.vcxproj532
-rw-r--r--StormLib_test.vcproj4
-rw-r--r--StormLib_test.vcxproj553
-rw-r--r--StormLib_test.vcxproj.filters839
-rw-r--r--StormLib_v11.sln139
-rw-r--r--StormLib_vs08.sln (renamed from StormLib_v09.sln)2
-rw-r--r--StormLib_vs08.vcproj (renamed from StormLib.vcproj)0
-rw-r--r--StormLib_vs12.sln67
-rw-r--r--StormLib_vs12.vcxproj (renamed from StormLib.vcxproj)4
-rw-r--r--StormLib_vs12.vcxproj.filters (renamed from StormLib.vcxproj.filters)4
-rw-r--r--StormLib_vs15.sln67
-rw-r--r--StormLib_vs15.vcxproj932
-rw-r--r--StormLib_vs15.vcxproj.filters (renamed from StormLib_dll.vcxproj.filters)72
-rw-r--r--debian/changelog8
-rw-r--r--debian/libstorm-dev.install1
-rwxr-xr-xdebian/rules4
-rw-r--r--makefile.w324
-rw-r--r--src/FileStream.cpp10
-rw-r--r--src/SBaseCommon.cpp42
-rw-r--r--src/SBaseDumpData.cpp4
-rw-r--r--src/SBaseFileTable.cpp131
-rw-r--r--src/SBaseSubTypes.cpp14
-rw-r--r--src/SFileCompactArchive.cpp2
-rw-r--r--src/SFileCreateArchive.cpp4
-rw-r--r--src/SFileFindFile.cpp4
-rw-r--r--src/SFileGetFileInfo.cpp11
-rw-r--r--src/SFileListFile.cpp2
-rw-r--r--src/SFileOpenArchive.cpp17
-rw-r--r--src/SFileOpenFileEx.cpp8
-rw-r--r--src/SFilePatchArchives.cpp324
-rw-r--r--src/SFileReadFile.cpp98
-rw-r--r--src/StormCommon.h2
-rw-r--r--src/StormLib.h30
-rw-r--r--src/StormPort.h581
-rw-r--r--src/adpcm/adpcm.cpp3
-rw-r--r--src/adpcm/adpcm_old.h2
-rw-r--r--src/huffman/huff.cpp1
-rw-r--r--src/libtomcrypt/src/headers/tomcrypt.h4
-rw-r--r--src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c2
-rw-r--r--src/libtomcrypt/src/pk/asn1/der_encode_setof.c2
-rw-r--r--src/pklib/pklib.h2
-rw-r--r--src/sparse/sparse.h2
-rw-r--r--storm_dll/Storm_dll.sln13
-rw-r--r--storm_dll/Storm_dll.vcproj56
-rw-r--r--storm_dll/storm.dllbin327680 -> 0 bytes
-rw-r--r--storm_dll/storm.libbin5238 -> 5238 bytes
-rw-r--r--storm_dll/storm_test.cpp18
-rw-r--r--storm_dll/storm_test.vcproj18
-rw-r--r--test/StormTest.cpp358
54 files changed, 2398 insertions, 2726 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d18488..76c6aa9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
project(StormLib)
cmake_minimum_required(VERSION 2.6)
+set(LIBRARY_NAME storm)
+
set(SRC_FILES
src/adpcm/adpcm.cpp
src/huffman/huff.cpp
@@ -262,64 +264,95 @@ add_definitions(-D_7ZIP_ST -DBZ_STRICT_ANSI)
if(WIN32)
if(MSVC)
message(STATUS "Using MSVC")
- add_definitions(-D_7ZIP_ST -DWIN32)
+ add_definitions(-DWIN32)
else()
message(STATUS "Using mingw")
endif()
set(SRC_ADDITIONAL_FILES ${ZLIB_BZIP2_FILES} ${TOMCRYPT_FILES} ${TOMMATH_FILES})
set(LINK_LIBS wininet)
-endif()
-
-if(APPLE)
- message(STATUS "Using Mac OS X port")
- set(LINK_LIBS z bz2)
- set(SRC_ADDITIONAL_FILES ${TOMCRYPT_FILES} ${TOMMATH_FILES})
-endif()
-
-if (${CMAKE_SYSTEM_NAME} STREQUAL Linux)
- message(STATUS "Using Linux port")
+else()
+ find_package(ZLIB REQUIRED)
+ find_package(BZip2 REQUIRED)
+ include_directories(${ZLIB_INCLUDE_DIR} ${BZIP2_INCLUDE_DIR})
+ set(LINK_LIBS ${ZLIB_LIBRARY} ${BZIP2_LIBRARIES})
option(WITH_LIBTOMCRYPT "Use system LibTomCrypt library" OFF)
if(WITH_LIBTOMCRYPT)
- set(LINK_LIBS z bz2 tomcrypt)
+ set(LINK_LIBS ${LINK_LIBS} tomcrypt)
else()
- set(LINK_LIBS z bz2)
set(SRC_ADDITIONAL_FILES ${TOMCRYPT_FILES} ${TOMMATH_FILES})
endif()
endif()
-add_library(storm SHARED ${SRC_FILES} ${SRC_ADDITIONAL_FILES})
-target_link_libraries(storm ${LINK_LIBS})
-
-option(WITH_TEST "Compile Test application" OFF)
-if(WITH_TEST)
- add_executable(storm_test ${TEST_SRC_FILES})
- target_link_libraries(storm_test storm)
+if(${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
+ message(STATUS "Using FreeBSD port")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DO_LARGEFILE=0 -Dstat64=stat -Dlstat64=lstat -Dlseek64=lseek -Doff64_t=off_t -Dfstat64=fstat -Dftruncate64=ftruncate")
endif()
-option(WITH_STATIC "Compile static linked library" OFF)
-if(WITH_STATIC)
- add_library(storm_static STATIC ${SRC_FILES} ${SRC_ADDITIONAL_FILES})
- target_link_libraries(storm_static ${LINK_LIBS})
- set_target_properties(storm_static PROPERTIES OUTPUT_NAME storm)
- install(TARGETS storm_static RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib FRAMEWORK DESTINATION /Library/Frameworks)
-endif()
+option(BUILD_SHARED_LIBS "Compile shared libraries" OFF)
-if(APPLE)
- set_target_properties(storm PROPERTIES FRAMEWORK true)
- set_target_properties(storm PROPERTIES PUBLIC_HEADER "src/StormLib.h src/StormPort.h")
- set_target_properties(storm PROPERTIES LINK_FLAGS "-framework Carbon")
-endif()
+add_library(${LIBRARY_NAME} ${SRC_FILES} ${SRC_ADDITIONAL_FILES})
+target_link_libraries(${LIBRARY_NAME} ${LINK_LIBS})
+target_compile_definitions(${LIBRARY_NAME} PUBLIC -D__STORMLIB_SELF__) #CMake should take care of the linking
+target_include_directories(${LIBRARY_NAME} PUBLIC src/)
+set_target_properties(${LIBRARY_NAME} PROPERTIES PUBLIC_HEADER "src/StormLib.h;src/StormPort.h")
+if(BUILD_SHARED_LIBS)
+ if(APPLE)
+ set_target_properties(${LIBRARY_NAME} PROPERTIES FRAMEWORK true)
+ set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-framework Carbon")
+ endif()
+ if(UNIX)
+ SET(VERSION_MAJOR "9")
+ SET(VERSION_MINOR "20")
+ SET(VERSION_PATCH "0")
+ SET(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
+ set_target_properties(${LIBRARY_NAME} PROPERTIES VERSION "${VERSION_STRING}")
+ set_target_properties(${LIBRARY_NAME} PROPERTIES SOVERSION "${VERSION_MAJOR}")
+ endif()
-if(UNIX)
- set_target_properties(storm PROPERTIES VERSION 9.0.0)
- set_target_properties(storm PROPERTIES SOVERSION 9)
+ # On Win32, build StormLib.dll since we don't want to clash with Storm.dll
+ if(WIN32)
+ set_target_properties(${LIBRARY_NAME} PROPERTIES OUTPUT_NAME StormLib)
+ endif()
endif()
-# On Win32, build StormLib.dll since we don't want to clash with Storm.dll
-if(WIN32)
- set_target_properties(storm PROPERTIES OUTPUT_NAME StormLib)
-endif()
+install(TARGETS ${LIBRARY_NAME}
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ FRAMEWORK DESTINATION /Library/Frameworks
+ PUBLIC_HEADER DESTINATION include
+ INCLUDES DESTINATION include)
+
+ #CPack configurtion
+ SET(CPACK_GENERATOR "DEB" "RPM")
+ SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
+ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MPQ manipulation library")
+ SET(CPACK_PACKAGE_VENDOR "Ladislav Zezula")
+ SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
+ SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+ SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
+ SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
+ SET(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}")
+
+ #DEB configuration
+ SET(CPACK_DEBIAN_PACKAGE_SECTION "libs")
+ SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://www.zezula.net/en/mpq/stormlib.html")
+ SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "imbacen@gmail.com")
+ SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
+ SET(CPACK_DEBIAN_PACKAGE_DEPENDS "zlib1g,bzip2")
-install(TARGETS storm RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib FRAMEWORK DESTINATION /Library/Frameworks)
-install(FILES src/StormLib.h src/StormPort.h DESTINATION include)
+ #RPM configuration
+ SET(CPACK_RPM_PACKAGE_RELEASE 1)
+ SET(CPACK_RPM_PACKAGE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+ SET(CPACK_RPM_PACKAGE_GROUP "${PROJECT_NAME}")
+ SET(CPACK_RPM_PACKAGE_URL "http://www.zezula.net/en/mpq/stormlib.html")
+ SET(CPACK_RPM_PACKAGE_REQUIRES "zlib,bzip2")
+ INCLUDE(CPack)
+
+option(WITH_TEST "Compile Test application" OFF)
+if(WITH_TEST)
+ add_executable(storm_test ${TEST_SRC_FILES})
+ target_link_libraries(storm_test ${LIBRARY_NAME})
+ install(TARGETS storm_test DESTINATION bin)
+endif()
diff --git a/Makefile.linux b/Makefile.linux
index c588d61..ff81e98 100644
--- a/Makefile.linux
+++ b/Makefile.linux
@@ -265,6 +265,7 @@ COBJS = src/libtomcrypt/src/hashes/sha1.o \
LIB = libStorm.so
SLIB = libStorm.a
+SLIBA = $(SLIB)
all: $(OBJS) $(COBJS) $(LIB) $(SLIB)
@@ -272,7 +273,7 @@ $(LIB): $(OBJS) $(COBJS)
$(C++) $(ARCH) -shared -o $(LIB) $(OBJS) $(COBJS) $(LFLAGS)
$(SLIB): $(OBJS) $(COBJS)
- $(AR) rcs $(SLIB) $(OBJS) $(COBJS)
+ $(AR) rcS $(SLIB) $(OBJS) $(COBJS)
clean:
rm -f $(OBJS) $(COBJS) $(LIB)
@@ -286,6 +287,7 @@ $(COBJS): %.o: %.c
$(LIB): $(OBJS) $(COBJS)
all: $(LIB)
+ ranlib -c $(SLIB)
install: $(LIB)
install $(LIB) /usr/local/lib
diff --git a/Makefile.mac b/Makefile.mac
index b5c59db..c4cb0a5 100644
--- a/Makefile.mac
+++ b/Makefile.mac
@@ -263,8 +263,8 @@ all: $(LIBRARY)
#install: $(LIBRARY)
# install $(LIBRARY) /usr/local/lib
# mkdir -p /usr/local/include/StormLib
-# cp StormLib.h /usr/local/include/StormLib
-# cp StormPort.h /usr/local/include/StormLib
+# cp src/StormLib.h /usr/local/include/StormLib
+# cp src/StormPort.h /usr/local/include/StormLib
$(LIBRARY): $(COBJS) $(OBJS)
$(CPP) $(CFLAGS) $(DFLAGS) $(ARCH) $(LFLAGS) -shared -o $(LIBRARY) $(COBJS) $(OBJS)
diff --git a/Premake5.lua b/Premake5.lua
index 8805a62..957ed36 100644
--- a/Premake5.lua
+++ b/Premake5.lua
@@ -22,7 +22,7 @@ solution 'StormLib'
'src/pklib/crc32.c',
'src/zlib/compress.c',
}
-
+
filter 'configurations:Debug*'
flags { 'Symbols' }
defines { '_DEBUG' }
diff --git a/StormLib.bat b/StormLib.bat
index d675eac..c2cc7de 100644
--- a/StormLib.bat
+++ b/StormLib.bat
@@ -21,5 +21,3 @@ copy .\bin\StormLib\%1\%2\*.lib ..\aaa\lib64
goto exit
:exit
-
-
diff --git a/StormLib_dll.vcxproj b/StormLib_dll.vcxproj
deleted file mode 100644
index a2a9660..0000000
--- a/StormLib_dll.vcxproj
+++ /dev/null
@@ -1,532 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.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>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{CB385198-50B1-4CF4-883B-11F042DED6AA}</ProjectGuid>
- <RootNamespace>StormLib_dll</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </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" />
- </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" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>11.0.51106.1</_ProjectFileVersion>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>true</LinkIncremental>
- <TargetName>StormLib</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>true</LinkIncremental>
- <TargetName>StormLib</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>false</LinkIncremental>
- <TargetName>StormLib</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>false</LinkIncremental>
- <TargetName>StormLib</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <ModuleDefinitionFile>.\StormLib_dll\StormLib.def</ModuleDefinitionFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <OutputFile>$(OutDir)StormLib.dll</OutputFile>
- <ModuleDefinitionFile>.\StormLib_dll\StormLib.def</ModuleDefinitionFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <ModuleDefinitionFile>.\StormLib_dll\StormLib.def</ModuleDefinitionFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <OutputFile>$(OutDir)StormLib.dll</OutputFile>
- <ModuleDefinitionFile>.\StormLib_dll\StormLib.def</ModuleDefinitionFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <Text Include="doc\History.txt" />
- <Text Include="doc\The MoPaQ File Format 0.9.txt" />
- <Text Include="doc\The MoPaQ File Format 1.0.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="src\StormCommon.h" />
- <ClInclude Include="src\StormLib.h" />
- <ClInclude Include="src\StormPort.h" />
- <ClInclude Include="src\adpcm\adpcm.h" />
- <ClInclude Include="src\huffman\huff.h" />
- <ClInclude Include="src\pklib\pklib.h" />
- <ClInclude Include="src\sparse\sparse.h" />
- <ClInclude Include="src\jenkins\lookup.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c" />
- <ClCompile Include="src\SBaseSubTypes.cpp" />
- <ClCompile Include="stormlib_dll\DllMain.c">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\FileStream.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SBaseCommon.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SBaseFileTable.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SCompression.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileAddFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileAttributes.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileCompactArchive.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileCreateArchive.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileExtractFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileFindFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileGetFileInfo.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileListFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileOpenArchive.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileOpenFileEx.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFilePatchArchives.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileReadFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileVerify.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\adpcm\adpcm.cpp" />
- <ClCompile Include="src\bzip2\blocksort.c" />
- <ClCompile Include="src\bzip2\bzlib.c" />
- <ClCompile Include="src\bzip2\compress.c" />
- <ClCompile Include="src\bzip2\crctable.c" />
- <ClCompile Include="src\bzip2\decompress.c" />
- <ClCompile Include="src\bzip2\huffman.c" />
- <ClCompile Include="src\bzip2\randtable.c" />
- <ClCompile Include="src\huffman\huff.cpp" />
- <ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c" />
- <ClCompile Include="src\libtomcrypt\src\hashes\md5.c" />
- <ClCompile Include="src\libtomcrypt\src\hashes\sha1.c" />
- <ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c" />
- <ClCompile Include="src\libtomcrypt\src\math\multi.c" />
- <ClCompile Include="src\libtomcrypt\src\math\rand_prime.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\zeromem.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c" />
- <ClCompile Include="src\libtommath\bn_fast_mp_invmod.c" />
- <ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c" />
- <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c" />
- <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c" />
- <ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_2expt.c" />
- <ClCompile Include="src\libtommath\bn_mp_abs.c" />
- <ClCompile Include="src\libtommath\bn_mp_add.c" />
- <ClCompile Include="src\libtommath\bn_mp_add_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_addmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_and.c" />
- <ClCompile Include="src\libtommath\bn_mp_clamp.c" />
- <ClCompile Include="src\libtommath\bn_mp_clear.c" />
- <ClCompile Include="src\libtommath\bn_mp_clear_multi.c" />
- <ClCompile Include="src\libtommath\bn_mp_cmp.c" />
- <ClCompile Include="src\libtommath\bn_mp_cmp_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_cmp_mag.c" />
- <ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c" />
- <ClCompile Include="src\libtommath\bn_mp_copy.c" />
- <ClCompile Include="src\libtommath\bn_mp_count_bits.c" />
- <ClCompile Include="src\libtommath\bn_mp_div.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_2.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_2d.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_3.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c" />
- <ClCompile Include="src\libtommath\bn_mp_dr_reduce.c" />
- <ClCompile Include="src\libtommath\bn_mp_dr_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_exch.c" />
- <ClCompile Include="src\libtommath\bn_mp_expt_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_exptmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c" />
- <ClCompile Include="src\libtommath\bn_mp_exteuclid.c" />
- <ClCompile Include="src\libtommath\bn_mp_fread.c" />
- <ClCompile Include="src\libtommath\bn_mp_fwrite.c" />
- <ClCompile Include="src\libtommath\bn_mp_gcd.c" />
- <ClCompile Include="src\libtommath\bn_mp_get_int.c" />
- <ClCompile Include="src\libtommath\bn_mp_grow.c" />
- <ClCompile Include="src\libtommath\bn_mp_init.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_copy.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_multi.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_set.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_set_int.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_invmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_invmod_slow.c" />
- <ClCompile Include="src\libtommath\bn_mp_is_square.c" />
- <ClCompile Include="src\libtommath\bn_mp_jacobi.c" />
- <ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c" />
- <ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_lcm.c" />
- <ClCompile Include="src\libtommath\bn_mp_lshd.c" />
- <ClCompile Include="src\libtommath\bn_mp_mod.c" />
- <ClCompile Include="src\libtommath\bn_mp_mod_2d.c" />
- <ClCompile Include="src\libtommath\bn_mp_mod_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c" />
- <ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c" />
- <ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul_2.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul_2d.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_mulmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_n_root.c" />
- <ClCompile Include="src\libtommath\bn_mp_neg.c" />
- <ClCompile Include="src\libtommath\bn_mp_or.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_fermat.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c" />
- <ClCompile Include="src\libtommath\bn_mp_radix_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_radix_smap.c" />
- <ClCompile Include="src\libtommath\bn_mp_rand.c" />
- <ClCompile Include="src\libtommath\bn_mp_read_radix.c" />
- <ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_rshd.c" />
- <ClCompile Include="src\libtommath\bn_mp_set.c" />
- <ClCompile Include="src\libtommath\bn_mp_set_int.c" />
- <ClCompile Include="src\libtommath\bn_mp_shrink.c" />
- <ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_sqrmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_sqrt.c" />
- <ClCompile Include="src\libtommath\bn_mp_sub.c" />
- <ClCompile Include="src\libtommath\bn_mp_sub_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_submod.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c" />
- <ClCompile Include="src\libtommath\bn_mp_toom_mul.c" />
- <ClCompile Include="src\libtommath\bn_mp_toom_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_toradix.c" />
- <ClCompile Include="src\libtommath\bn_mp_toradix_n.c" />
- <ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_xor.c" />
- <ClCompile Include="src\libtommath\bn_mp_zero.c" />
- <ClCompile Include="src\libtommath\bn_prime_tab.c" />
- <ClCompile Include="src\libtommath\bn_reverse.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_add.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_exptmod.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_sqr.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_sub.c" />
- <ClCompile Include="src\libtommath\bncore.c" />
- <ClCompile Include="src\lzma\C\LzFind.c" />
- <ClCompile Include="src\lzma\C\LzFindMt.c" />
- <ClCompile Include="src\lzma\C\LzmaDec.c" />
- <ClCompile Include="src\lzma\C\LzmaEnc.c" />
- <ClCompile Include="src\lzma\C\Threads.c" />
- <ClCompile Include="src\pklib\explode.c" />
- <ClCompile Include="src\pklib\implode.c" />
- <ClCompile Include="src\sparse\sparse.cpp" />
- <ClCompile Include="src\zlib\adler32.c" />
- <ClCompile Include="src\zlib\compress_zlib.c" />
- <ClCompile Include="src\zlib\crc32.c" />
- <ClCompile Include="src\zlib\deflate.c" />
- <ClCompile Include="src\zlib\inffast.c" />
- <ClCompile Include="src\zlib\inflate.c" />
- <ClCompile Include="src\zlib\inftrees.c" />
- <ClCompile Include="src\zlib\trees.c" />
- <ClCompile Include="src\zlib\zutil.c" />
- <ClCompile Include="src\jenkins\lookup3.c" />
- </ItemGroup>
- <ItemGroup>
- <None Include="stormlib_dll\StormLib.def" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/StormLib_test.vcproj b/StormLib_test.vcproj
index 7bb6ea3..61561d5 100644
--- a/StormLib_test.vcproj
+++ b/StormLib_test.vcproj
@@ -50,7 +50,6 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="./src/libtomcrypt/src/headers"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__STORMLIB_TEST__;__STORMLIB_DUMP_DATA__"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -130,7 +129,6 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="./src/libtomcrypt/src/headers"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__STORMLIB_TEST__"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -208,7 +206,6 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="./src/libtomcrypt/src/headers"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;__STORMLIB_TEST__"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
@@ -286,7 +283,6 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="./src/libtomcrypt/src/headers"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;__STORMLIB_TEST__"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
diff --git a/StormLib_test.vcxproj b/StormLib_test.vcxproj
deleted file mode 100644
index 3290839..0000000
--- a/StormLib_test.vcxproj
+++ /dev/null
@@ -1,553 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.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>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}</ProjectGuid>
- <RootNamespace>StormLib_test</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </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" />
- </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" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>11.0.51106.1</_ProjectFileVersion>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>true</LinkIncremental>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>false</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
- <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
- <LinkIncremental>false</LinkIncremental>
- <TargetName>$(ProjectName)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./src/libtomcrypt/src/headers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <ExceptionHandling>false</ExceptionHandling>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX86</TargetMachine>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- <Manifest>
- <VerboseOutput>false</VerboseOutput>
- </Manifest>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./src/libtomcrypt/src/headers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <AdditionalIncludeDirectories>./src/libtomcrypt/src/headers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <ExceptionHandling>false</ExceptionHandling>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX86</TargetMachine>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <AdditionalIncludeDirectories>./src/libtomcrypt/src/headers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader />
- <WarningLevel>Level1</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention />
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <Text Include="doc\History.txt" />
- <Text Include="doc\The MoPaQ File Format 0.9.txt" />
- <Text Include="doc\The MoPaQ File Format 1.0.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="src\FileStream.h" />
- <ClInclude Include="src\StormCommon.h" />
- <ClInclude Include="src\StormLib.h" />
- <ClInclude Include="src\StormPort.h" />
- <ClInclude Include="src\adpcm\adpcm.h" />
- <ClInclude Include="src\huffman\huff.h" />
- <ClInclude Include="src\pklib\pklib.h" />
- <ClInclude Include="src\sparse\sparse.h" />
- <ClInclude Include="src\jenkins\lookup.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="src\FileStream.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c" />
- <ClCompile Include="src\SBaseCommon.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SBaseDumpData.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SBaseFileTable.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SBaseSubTypes.cpp" />
- <ClCompile Include="src\SCompression.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileAddFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileAttributes.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileCompactArchive.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileCreateArchive.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileExtractFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileFindFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileGetFileInfo.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileListFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileOpenArchive.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileOpenFileEx.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFilePatchArchives.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileReadFile.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\SFileVerify.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="test\StormTest.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\adpcm\adpcm.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\bzip2\blocksort.c" />
- <ClCompile Include="src\bzip2\bzlib.c" />
- <ClCompile Include="src\bzip2\compress.c" />
- <ClCompile Include="src\bzip2\crctable.c" />
- <ClCompile Include="src\bzip2\decompress.c" />
- <ClCompile Include="src\bzip2\huffman.c" />
- <ClCompile Include="src\bzip2\randtable.c" />
- <ClCompile Include="src\huffman\huff.cpp">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c" />
- <ClCompile Include="src\libtomcrypt\src\hashes\md5.c" />
- <ClCompile Include="src\libtomcrypt\src\hashes\sha1.c" />
- <ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c" />
- <ClCompile Include="src\libtomcrypt\src\math\multi.c" />
- <ClCompile Include="src\libtomcrypt\src\math\rand_prime.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c" />
- <ClCompile Include="src\libtomcrypt\src\misc\zeromem.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c" />
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c" />
- <ClCompile Include="src\libtommath\bn_fast_mp_invmod.c" />
- <ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c" />
- <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c" />
- <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c" />
- <ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_2expt.c" />
- <ClCompile Include="src\libtommath\bn_mp_abs.c" />
- <ClCompile Include="src\libtommath\bn_mp_add.c" />
- <ClCompile Include="src\libtommath\bn_mp_add_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_addmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_and.c" />
- <ClCompile Include="src\libtommath\bn_mp_clamp.c" />
- <ClCompile Include="src\libtommath\bn_mp_clear.c" />
- <ClCompile Include="src\libtommath\bn_mp_clear_multi.c" />
- <ClCompile Include="src\libtommath\bn_mp_cmp.c" />
- <ClCompile Include="src\libtommath\bn_mp_cmp_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_cmp_mag.c" />
- <ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c" />
- <ClCompile Include="src\libtommath\bn_mp_copy.c" />
- <ClCompile Include="src\libtommath\bn_mp_count_bits.c" />
- <ClCompile Include="src\libtommath\bn_mp_div.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_2.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_2d.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_3.c" />
- <ClCompile Include="src\libtommath\bn_mp_div_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c" />
- <ClCompile Include="src\libtommath\bn_mp_dr_reduce.c" />
- <ClCompile Include="src\libtommath\bn_mp_dr_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_exch.c" />
- <ClCompile Include="src\libtommath\bn_mp_expt_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_exptmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c" />
- <ClCompile Include="src\libtommath\bn_mp_exteuclid.c" />
- <ClCompile Include="src\libtommath\bn_mp_fread.c" />
- <ClCompile Include="src\libtommath\bn_mp_fwrite.c" />
- <ClCompile Include="src\libtommath\bn_mp_gcd.c" />
- <ClCompile Include="src\libtommath\bn_mp_get_int.c" />
- <ClCompile Include="src\libtommath\bn_mp_grow.c" />
- <ClCompile Include="src\libtommath\bn_mp_init.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_copy.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_multi.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_set.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_set_int.c" />
- <ClCompile Include="src\libtommath\bn_mp_init_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_invmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_invmod_slow.c" />
- <ClCompile Include="src\libtommath\bn_mp_is_square.c" />
- <ClCompile Include="src\libtommath\bn_mp_jacobi.c" />
- <ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c" />
- <ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_lcm.c" />
- <ClCompile Include="src\libtommath\bn_mp_lshd.c" />
- <ClCompile Include="src\libtommath\bn_mp_mod.c" />
- <ClCompile Include="src\libtommath\bn_mp_mod_2d.c" />
- <ClCompile Include="src\libtommath\bn_mp_mod_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c" />
- <ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c" />
- <ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul_2.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul_2d.c" />
- <ClCompile Include="src\libtommath\bn_mp_mul_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_mulmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_n_root.c" />
- <ClCompile Include="src\libtommath\bn_mp_neg.c" />
- <ClCompile Include="src\libtommath\bn_mp_or.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_fermat.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c" />
- <ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c" />
- <ClCompile Include="src\libtommath\bn_mp_radix_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_radix_smap.c" />
- <ClCompile Include="src\libtommath\bn_mp_rand.c" />
- <ClCompile Include="src\libtommath\bn_mp_read_radix.c" />
- <ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c" />
- <ClCompile Include="src\libtommath\bn_mp_reduce_setup.c" />
- <ClCompile Include="src\libtommath\bn_mp_rshd.c" />
- <ClCompile Include="src\libtommath\bn_mp_set.c" />
- <ClCompile Include="src\libtommath\bn_mp_set_int.c" />
- <ClCompile Include="src\libtommath\bn_mp_shrink.c" />
- <ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_sqrmod.c" />
- <ClCompile Include="src\libtommath\bn_mp_sqrt.c" />
- <ClCompile Include="src\libtommath\bn_mp_sub.c" />
- <ClCompile Include="src\libtommath\bn_mp_sub_d.c" />
- <ClCompile Include="src\libtommath\bn_mp_submod.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c" />
- <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c" />
- <ClCompile Include="src\libtommath\bn_mp_toom_mul.c" />
- <ClCompile Include="src\libtommath\bn_mp_toom_sqr.c" />
- <ClCompile Include="src\libtommath\bn_mp_toradix.c" />
- <ClCompile Include="src\libtommath\bn_mp_toradix_n.c" />
- <ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c" />
- <ClCompile Include="src\libtommath\bn_mp_xor.c" />
- <ClCompile Include="src\libtommath\bn_mp_zero.c" />
- <ClCompile Include="src\libtommath\bn_prime_tab.c" />
- <ClCompile Include="src\libtommath\bn_reverse.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_add.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_exptmod.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_sqr.c" />
- <ClCompile Include="src\libtommath\bn_s_mp_sub.c" />
- <ClCompile Include="src\libtommath\bncore.c" />
- <ClCompile Include="src\lzma\C\LzFind.c" />
- <ClCompile Include="src\lzma\C\LzFindMt.c" />
- <ClCompile Include="src\lzma\C\LzmaDec.c" />
- <ClCompile Include="src\lzma\C\LzmaEnc.c" />
- <ClCompile Include="src\lzma\C\Threads.c" />
- <ClCompile Include="src\pklib\explode.c" />
- <ClCompile Include="src\pklib\implode.c" />
- <ClCompile Include="src\sparse\sparse.cpp" />
- <ClCompile Include="src\zlib\adler32.c" />
- <ClCompile Include="src\zlib\compress_zlib.c" />
- <ClCompile Include="src\zlib\crc32.c" />
- <ClCompile Include="src\zlib\deflate.c" />
- <ClCompile Include="src\zlib\inffast.c" />
- <ClCompile Include="src\zlib\inflate.c" />
- <ClCompile Include="src\zlib\inftrees.c" />
- <ClCompile Include="src\zlib\trees.c" />
- <ClCompile Include="src\zlib\zutil.c" />
- <ClCompile Include="src\jenkins\lookup3.c">
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level1</WarningLevel>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level1</WarningLevel>
- </ClCompile>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/StormLib_test.vcxproj.filters b/StormLib_test.vcxproj.filters
deleted file mode 100644
index 13d2423..0000000
--- a/StormLib_test.vcxproj.filters
+++ /dev/null
@@ -1,839 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Doc Files">
- <UniqueIdentifier>{c0babef7-a4c6-465f-b35d-e3e76db9fbf2}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{a5af690c-30fc-48a4-a8b3-b355364f523a}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files">
- <UniqueIdentifier>{efe8c45b-9ac6-4ece-9802-0684c7c04f4f}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\adpcm">
- <UniqueIdentifier>{a4ffdb8c-2367-4167-b46f-5053f9efe5ad}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\bzip2">
- <UniqueIdentifier>{c0d46102-b1f4-4ddd-afb2-23c823e87200}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\huffman">
- <UniqueIdentifier>{177c16f2-a75f-402b-9a3f-d5ff582737bf}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt">
- <UniqueIdentifier>{b16d7cfc-d53a-47d5-9bce-f1bacea7c30c}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\hashes">
- <UniqueIdentifier>{5ced2573-f357-4a5e-803d-10623c23d91f}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\math">
- <UniqueIdentifier>{a7ad01bf-937b-4726-815b-7017d7fce74b}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\misc">
- <UniqueIdentifier>{5178056b-812c-43bb-947e-792cabc52dc1}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\pk">
- <UniqueIdentifier>{f3716532-2a20-4722-af58-917f82b27231}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\pk\asn1">
- <UniqueIdentifier>{7740e6d6-03cf-46d7-8b7f-71296fecb507}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\pk\ecc">
- <UniqueIdentifier>{b5ee44e8-e6c9-461f-b63f-1135451f1cb2}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\pk\pkcs1">
- <UniqueIdentifier>{b0440145-14bb-423e-86ed-91a8013e1df5}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtomcrypt\pk\rsa">
- <UniqueIdentifier>{62e2f0bb-db68-4626-b8b6-6ff1425b3ef2}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\libtommath">
- <UniqueIdentifier>{e795a249-ae13-4b6c-90ff-3340873e1d5d}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\lzma">
- <UniqueIdentifier>{f710fac0-2561-4ef8-8b66-6de4a840f05d}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\pklib">
- <UniqueIdentifier>{60cd5d7f-a9a5-4fbf-ac59-39c097b2e7ec}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\sparse">
- <UniqueIdentifier>{9f869665-533d-424d-ada9-db9827e28b0f}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\zlib">
- <UniqueIdentifier>{3d0b81c2-cba7-41dc-9fbb-f16fa9638c5d}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\jenkins">
- <UniqueIdentifier>{1712688f-dc14-4979-8fdd-8d6b559ab26d}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <Text Include="doc\History.txt">
- <Filter>Doc Files</Filter>
- </Text>
- <Text Include="doc\The MoPaQ File Format 0.9.txt">
- <Filter>Doc Files</Filter>
- </Text>
- <Text Include="doc\The MoPaQ File Format 1.0.txt">
- <Filter>Doc Files</Filter>
- </Text>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="src\FileStream.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="src\StormCommon.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="src\StormLib.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="src\StormPort.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="src\adpcm\adpcm.h">
- <Filter>Source Files\adpcm</Filter>
- </ClInclude>
- <ClInclude Include="src\huffman\huff.h">
- <Filter>Source Files\huffman</Filter>
- </ClInclude>
- <ClInclude Include="src\pklib\pklib.h">
- <Filter>Source Files\pklib</Filter>
- </ClInclude>
- <ClInclude Include="src\sparse\sparse.h">
- <Filter>Source Files\sparse</Filter>
- </ClInclude>
- <ClInclude Include="src\jenkins\lookup.h">
- <Filter>Source Files\jenkins</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="src\FileStream.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SBaseCommon.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SBaseDumpData.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SBaseFileTable.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SCompression.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileAddFile.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileAttributes.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileCompactArchive.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileCreateArchive.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileExtractFile.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileFindFile.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileGetFileInfo.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileListFile.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileOpenArchive.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileOpenFileEx.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFilePatchArchives.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileReadFile.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\SFileVerify.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test\StormTest.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\adpcm\adpcm.cpp">
- <Filter>Source Files\adpcm</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\blocksort.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\bzlib.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\compress.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\crctable.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\decompress.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\huffman.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\bzip2\randtable.c">
- <Filter>Source Files\bzip2</Filter>
- </ClCompile>
- <ClCompile Include="src\huffman\huff.cpp">
- <Filter>Source Files\huffman</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c">
- <Filter>Source Files\libtomcrypt\hashes</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\hashes\md5.c">
- <Filter>Source Files\libtomcrypt\hashes</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\hashes\sha1.c">
- <Filter>Source Files\libtomcrypt\hashes</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c">
- <Filter>Source Files\libtomcrypt\math</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\math\multi.c">
- <Filter>Source Files\libtomcrypt\math</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\math\rand_prime.c">
- <Filter>Source Files\libtomcrypt\math</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\misc\zeromem.c">
- <Filter>Source Files\libtomcrypt\misc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c">
- <Filter>Source Files\libtomcrypt\pk\ecc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c">
- <Filter>Source Files\libtomcrypt\pk\ecc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c">
- <Filter>Source Files\libtomcrypt\pk\ecc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c">
- <Filter>Source Files\libtomcrypt\pk\ecc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c">
- <Filter>Source Files\libtomcrypt\pk\ecc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c">
- <Filter>Source Files\libtomcrypt\pk\ecc</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_fast_mp_invmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_2expt.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_abs.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_add.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_add_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_addmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_and.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_clamp.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_clear.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_clear_multi.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_cmp.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_cmp_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_cmp_mag.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_copy.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_count_bits.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_div.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_div_2.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_div_2d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_div_3.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_div_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_dr_reduce.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_dr_setup.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_exch.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_expt_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_exptmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_exteuclid.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_fread.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_fwrite.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_gcd.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_get_int.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_grow.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_init.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_init_copy.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_init_multi.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_init_set.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_init_set_int.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_init_size.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_invmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_invmod_slow.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_is_square.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_jacobi.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_lcm.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_lshd.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mod_2d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mod_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mul.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mul_2.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mul_2d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mul_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_mulmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_n_root.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_neg.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_or.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_fermat.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_radix_size.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_radix_smap.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_rand.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_read_radix.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_reduce_setup.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_rshd.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_set.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_set_int.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_shrink.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_sqr.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_sqrmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_sqrt.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_sub.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_sub_d.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_submod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_toom_mul.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_toom_sqr.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_toradix.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_toradix_n.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_xor.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_mp_zero.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_prime_tab.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_reverse.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_s_mp_add.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_s_mp_exptmod.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_s_mp_sqr.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bn_s_mp_sub.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\libtommath\bncore.c">
- <Filter>Source Files\libtommath</Filter>
- </ClCompile>
- <ClCompile Include="src\lzma\C\LzFind.c">
- <Filter>Source Files\lzma</Filter>
- </ClCompile>
- <ClCompile Include="src\lzma\C\LzFindMt.c">
- <Filter>Source Files\lzma</Filter>
- </ClCompile>
- <ClCompile Include="src\lzma\C\LzmaDec.c">
- <Filter>Source Files\lzma</Filter>
- </ClCompile>
- <ClCompile Include="src\lzma\C\LzmaEnc.c">
- <Filter>Source Files\lzma</Filter>
- </ClCompile>
- <ClCompile Include="src\lzma\C\Threads.c">
- <Filter>Source Files\lzma</Filter>
- </ClCompile>
- <ClCompile Include="src\pklib\explode.c">
- <Filter>Source Files\pklib</Filter>
- </ClCompile>
- <ClCompile Include="src\pklib\implode.c">
- <Filter>Source Files\pklib</Filter>
- </ClCompile>
- <ClCompile Include="src\sparse\sparse.cpp">
- <Filter>Source Files\sparse</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\adler32.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\crc32.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\deflate.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\inffast.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\inflate.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\inftrees.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\trees.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\zutil.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\jenkins\lookup3.c">
- <Filter>Source Files\jenkins</Filter>
- </ClCompile>
- <ClCompile Include="src\zlib\compress_zlib.c">
- <Filter>Source Files\zlib</Filter>
- </ClCompile>
- <ClCompile Include="src\SBaseSubTypes.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c">
- <Filter>Source Files\libtomcrypt\pk\asn1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/StormLib_v11.sln b/StormLib_v11.sln
deleted file mode 100644
index f849427..0000000
--- a/StormLib_v11.sln
+++ /dev/null
@@ -1,139 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib.vcxproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_dll", "StormLib_dll.vcxproj", "{CB385198-50B1-4CF4-883B-11F042DED6AA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_test", "StormLib_test.vcxproj", "{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- DebugAD|Win32 = DebugAD|Win32
- DebugAD|x64 = DebugAD|x64
- DebugAS|Win32 = DebugAS|Win32
- DebugAS|x64 = DebugAS|x64
- DebugUD|Win32 = DebugUD|Win32
- DebugUD|x64 = DebugUD|x64
- DebugUS|Win32 = DebugUS|Win32
- DebugUS|x64 = DebugUS|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- ReleaseAD|Win32 = ReleaseAD|Win32
- ReleaseAD|x64 = ReleaseAD|x64
- ReleaseAS|Win32 = ReleaseAS|Win32
- ReleaseAS|x64 = ReleaseAS|x64
- ReleaseUD|Win32 = ReleaseUD|Win32
- ReleaseUD|x64 = ReleaseUD|x64
- ReleaseUS|Win32 = ReleaseUS|Win32
- ReleaseUS|x64 = ReleaseUS|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|Win32.ActiveCfg = DebugUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.ActiveCfg = DebugUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.Build.0 = DebugUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.ActiveCfg = DebugAD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.Build.0 = DebugAD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.ActiveCfg = DebugAD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.Build.0 = DebugAD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.ActiveCfg = DebugAS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.Build.0 = DebugAS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.ActiveCfg = DebugAS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.Build.0 = DebugAS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.ActiveCfg = DebugUD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.Build.0 = DebugUD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.ActiveCfg = DebugUD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.Build.0 = DebugUD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.ActiveCfg = DebugUS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.Build.0 = DebugUS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.ActiveCfg = DebugUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.Build.0 = DebugUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|Win32.ActiveCfg = ReleaseUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.ActiveCfg = ReleaseUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.Build.0 = ReleaseUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.ActiveCfg = ReleaseAD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.Build.0 = ReleaseAD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.ActiveCfg = ReleaseAD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.Build.0 = ReleaseAD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.ActiveCfg = ReleaseAS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.Build.0 = ReleaseAS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.ActiveCfg = ReleaseAS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.Build.0 = ReleaseAS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.ActiveCfg = ReleaseUD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.Build.0 = ReleaseUD|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.ActiveCfg = ReleaseUD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.Build.0 = ReleaseUD|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.ActiveCfg = ReleaseUS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.Build.0 = ReleaseUS|Win32
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.ActiveCfg = ReleaseUS|x64
- {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.Build.0 = ReleaseUS|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|Win32.ActiveCfg = Debug|Win32
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|Win32.Build.0 = Debug|Win32
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|x64.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|x64.Build.0 = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|Win32.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|x64.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|x64.Build.0 = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|Win32.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|x64.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|x64.Build.0 = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|Win32.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|x64.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|x64.Build.0 = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|Win32.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|x64.ActiveCfg = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|x64.Build.0 = Debug|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|Win32.ActiveCfg = Release|Win32
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|Win32.Build.0 = Release|Win32
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|x64.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|x64.Build.0 = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|Win32.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|x64.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|x64.Build.0 = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|Win32.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|x64.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|x64.Build.0 = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|Win32.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|x64.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|x64.Build.0 = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|Win32.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|x64.ActiveCfg = Release|x64
- {CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|x64.Build.0 = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|Win32.ActiveCfg = Debug|Win32
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|Win32.Build.0 = Debug|Win32
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|x64.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|x64.Build.0 = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|Win32.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|x64.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|x64.Build.0 = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|Win32.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|x64.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|x64.Build.0 = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|Win32.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|x64.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|x64.Build.0 = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|Win32.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|x64.ActiveCfg = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|x64.Build.0 = Debug|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|Win32.ActiveCfg = Release|Win32
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|Win32.Build.0 = Release|Win32
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|x64.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|x64.Build.0 = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|Win32.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|x64.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|x64.Build.0 = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|Win32.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|x64.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|x64.Build.0 = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|Win32.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|x64.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|x64.Build.0 = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|Win32.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|x64.ActiveCfg = Release|x64
- {AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/StormLib_v09.sln b/StormLib_vs08.sln
index 66937b5..72f1264 100644
--- a/StormLib_v09.sln
+++ b/StormLib_vs08.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib.vcproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib_vs08.vcproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_dll", "StormLib_dll.vcproj", "{CB385198-50B1-4CF4-883B-11F042DED6AA}"
EndProject
diff --git a/StormLib.vcproj b/StormLib_vs08.vcproj
index db947a7..db947a7 100644
--- a/StormLib.vcproj
+++ b/StormLib_vs08.vcproj
diff --git a/StormLib_vs12.sln b/StormLib_vs12.sln
new file mode 100644
index 0000000..2732c37
--- /dev/null
+++ b/StormLib_vs12.sln
@@ -0,0 +1,67 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib_vs12.vcxproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ DebugAD|Win32 = DebugAD|Win32
+ DebugAD|x64 = DebugAD|x64
+ DebugAS|Win32 = DebugAS|Win32
+ DebugAS|x64 = DebugAS|x64
+ DebugUD|Win32 = DebugUD|Win32
+ DebugUD|x64 = DebugUD|x64
+ DebugUS|Win32 = DebugUS|Win32
+ DebugUS|x64 = DebugUS|x64
+ ReleaseAD|Win32 = ReleaseAD|Win32
+ ReleaseAD|x64 = ReleaseAD|x64
+ ReleaseAS|Win32 = ReleaseAS|Win32
+ ReleaseAS|x64 = ReleaseAS|x64
+ ReleaseUD|Win32 = ReleaseUD|Win32
+ ReleaseUD|x64 = ReleaseUD|x64
+ ReleaseUS|Win32 = ReleaseUS|Win32
+ ReleaseUS|x64 = ReleaseUS|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|Win32.ActiveCfg = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.ActiveCfg = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.Build.0 = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.ActiveCfg = DebugAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.Build.0 = DebugAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.ActiveCfg = DebugAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.Build.0 = DebugAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.ActiveCfg = DebugAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.Build.0 = DebugAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.ActiveCfg = DebugAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.Build.0 = DebugAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.ActiveCfg = DebugUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.Build.0 = DebugUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.ActiveCfg = DebugUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.Build.0 = DebugUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.ActiveCfg = DebugUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.Build.0 = DebugUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.ActiveCfg = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.Build.0 = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|Win32.ActiveCfg = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.ActiveCfg = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.Build.0 = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.ActiveCfg = ReleaseAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.Build.0 = ReleaseAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.ActiveCfg = ReleaseAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.Build.0 = ReleaseAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.ActiveCfg = ReleaseAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.Build.0 = ReleaseAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.ActiveCfg = ReleaseAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.Build.0 = ReleaseAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.ActiveCfg = ReleaseUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.Build.0 = ReleaseUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.ActiveCfg = ReleaseUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.Build.0 = ReleaseUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.ActiveCfg = ReleaseUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.Build.0 = ReleaseUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.ActiveCfg = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.Build.0 = ReleaseUS|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/StormLib.vcxproj b/StormLib_vs12.vcxproj
index 5de4e81..663554a 100644
--- a/StormLib.vcxproj
+++ b/StormLib_vs12.vcxproj
@@ -606,8 +606,8 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\StormCommon.h" />
- <ClInclude Include="src\StormLib.h" />
- <ClInclude Include="src\StormPort.h" />
+ <ClInclude Include="include\StormLib.h" />
+ <ClInclude Include="include\StormPort.h" />
<ClInclude Include="src\adpcm\adpcm.h" />
<ClInclude Include="src\huffman\huff.h" />
<ClInclude Include="src\pklib\pklib.h" />
diff --git a/StormLib.vcxproj.filters b/StormLib_vs12.vcxproj.filters
index ffbc876..a532132 100644
--- a/StormLib.vcxproj.filters
+++ b/StormLib_vs12.vcxproj.filters
@@ -80,10 +80,10 @@
<ClInclude Include="src\StormCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="src\StormLib.h">
+ <ClInclude Include="include\StormLib.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="src\StormPort.h">
+ <ClInclude Include="include\StormPort.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\adpcm\adpcm.h">
diff --git a/StormLib_vs15.sln b/StormLib_vs15.sln
new file mode 100644
index 0000000..70f1640
--- /dev/null
+++ b/StormLib_vs15.sln
@@ -0,0 +1,67 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib_vs15.vcxproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ DebugAD|Win32 = DebugAD|Win32
+ DebugAD|x64 = DebugAD|x64
+ DebugAS|Win32 = DebugAS|Win32
+ DebugAS|x64 = DebugAS|x64
+ DebugUD|Win32 = DebugUD|Win32
+ DebugUD|x64 = DebugUD|x64
+ DebugUS|Win32 = DebugUS|Win32
+ DebugUS|x64 = DebugUS|x64
+ ReleaseAD|Win32 = ReleaseAD|Win32
+ ReleaseAD|x64 = ReleaseAD|x64
+ ReleaseAS|Win32 = ReleaseAS|Win32
+ ReleaseAS|x64 = ReleaseAS|x64
+ ReleaseUD|Win32 = ReleaseUD|Win32
+ ReleaseUD|x64 = ReleaseUD|x64
+ ReleaseUS|Win32 = ReleaseUS|Win32
+ ReleaseUS|x64 = ReleaseUS|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|Win32.ActiveCfg = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.ActiveCfg = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.Build.0 = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.ActiveCfg = DebugAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.Build.0 = DebugAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.ActiveCfg = DebugAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.Build.0 = DebugAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.ActiveCfg = DebugAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.Build.0 = DebugAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.ActiveCfg = DebugAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.Build.0 = DebugAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.ActiveCfg = DebugUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.Build.0 = DebugUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.ActiveCfg = DebugUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.Build.0 = DebugUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.ActiveCfg = DebugUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.Build.0 = DebugUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.ActiveCfg = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.Build.0 = DebugUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|Win32.ActiveCfg = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.ActiveCfg = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.Build.0 = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.ActiveCfg = ReleaseAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.Build.0 = ReleaseAD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.ActiveCfg = ReleaseAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.Build.0 = ReleaseAD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.ActiveCfg = ReleaseAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.Build.0 = ReleaseAS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.ActiveCfg = ReleaseAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.Build.0 = ReleaseAS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.ActiveCfg = ReleaseUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.Build.0 = ReleaseUD|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.ActiveCfg = ReleaseUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.Build.0 = ReleaseUD|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.ActiveCfg = ReleaseUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.Build.0 = ReleaseUS|Win32
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.ActiveCfg = ReleaseUS|x64
+ {78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.Build.0 = ReleaseUS|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/StormLib_vs15.vcxproj b/StormLib_vs15.vcxproj
new file mode 100644
index 0000000..59dbdb3
--- /dev/null
+++ b/StormLib_vs15.vcxproj
@@ -0,0 +1,932 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DebugAD|Win32">
+ <Configuration>DebugAD</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugAD|x64">
+ <Configuration>DebugAD</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugAS|Win32">
+ <Configuration>DebugAS</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugAS|x64">
+ <Configuration>DebugAS</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugUD|Win32">
+ <Configuration>DebugUD</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugUD|x64">
+ <Configuration>DebugUD</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugUS|Win32">
+ <Configuration>DebugUS</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DebugUS|x64">
+ <Configuration>DebugUS</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseAD|Win32">
+ <Configuration>ReleaseAD</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseAD|x64">
+ <Configuration>ReleaseAD</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseAS|Win32">
+ <Configuration>ReleaseAS</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseAS|x64">
+ <Configuration>ReleaseAS</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseUD|Win32">
+ <Configuration>ReleaseUD</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseUD|x64">
+ <Configuration>ReleaseUD</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseUS|Win32">
+ <Configuration>ReleaseUS</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseUS|x64">
+ <Configuration>ReleaseUS</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>StormLib</ProjectName>
+ <ProjectGuid>{78424708-1F6E-4D4B-920C-FB6D26847055}</ProjectGuid>
+ <RootNamespace>StormLib</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DAD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DAD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DAS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DAS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RAD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RAD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RAS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RAS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DUD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DUD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DUS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)DUS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RUD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RUD</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|Win32'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RUS</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|x64'">
+ <OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
+ <IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
+ <TargetName>$(ProjectName)RUS</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAD|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAS|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAD|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAS|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugUD|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugUS|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUD|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseUS|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader />
+ <WarningLevel>Level1</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Lib>
+ <OutputFile>./bin/$(ProjectName)/$(Platform)/$(Configuration)/$(TargetName).lib</OutputFile>
+ </Lib>
+ <PostBuildEvent>
+ <Command>StormLib.bat $(Platform) $(Configuration)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <Text Include="doc\History.txt" />
+ <Text Include="doc\The MoPaQ File Format 0.9.txt" />
+ <Text Include="doc\The MoPaQ File Format 1.0.txt" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\StormCommon.h" />
+ <ClInclude Include="include\StormLib.h" />
+ <ClInclude Include="include\StormPort.h" />
+ <ClInclude Include="src\adpcm\adpcm.h" />
+ <ClInclude Include="src\huffman\huff.h" />
+ <ClInclude Include="src\pklib\pklib.h" />
+ <ClInclude Include="src\sparse\sparse.h" />
+ <ClInclude Include="src\jenkins\lookup.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\FileStream.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c" />
+ <ClCompile Include="src\SBaseCommon.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SBaseFileTable.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SBaseSubTypes.cpp" />
+ <ClCompile Include="src\SCompression.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileAddFile.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileAttributes.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileCompactArchive.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileCreateArchive.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileExtractFile.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileFindFile.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileGetFileInfo.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileListFile.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileOpenArchive.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileOpenFileEx.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFilePatchArchives.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileReadFile.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\SFileVerify.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ <PrecompiledHeaderFile>StormCommon.h</PrecompiledHeaderFile>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ClCompile Include="src\adpcm\adpcm.cpp" />
+ <ClCompile Include="src\bzip2\blocksort.c" />
+ <ClCompile Include="src\bzip2\bzlib.c" />
+ <ClCompile Include="src\bzip2\compress.c" />
+ <ClCompile Include="src\bzip2\crctable.c" />
+ <ClCompile Include="src\bzip2\decompress.c" />
+ <ClCompile Include="src\bzip2\huffman.c" />
+ <ClCompile Include="src\bzip2\randtable.c" />
+ <ClCompile Include="src\huffman\huff.cpp" />
+ <ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c" />
+ <ClCompile Include="src\libtomcrypt\src\hashes\md5.c" />
+ <ClCompile Include="src\libtomcrypt\src\hashes\sha1.c" />
+ <ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c" />
+ <ClCompile Include="src\libtomcrypt\src\math\multi.c" />
+ <ClCompile Include="src\libtomcrypt\src\math\rand_prime.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c" />
+ <ClCompile Include="src\libtomcrypt\src\misc\zeromem.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c" />
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c" />
+ <ClCompile Include="src\libtommath\bn_fast_mp_invmod.c" />
+ <ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c" />
+ <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c" />
+ <ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c" />
+ <ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c" />
+ <ClCompile Include="src\libtommath\bn_mp_2expt.c" />
+ <ClCompile Include="src\libtommath\bn_mp_abs.c" />
+ <ClCompile Include="src\libtommath\bn_mp_add.c" />
+ <ClCompile Include="src\libtommath\bn_mp_add_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_addmod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_and.c" />
+ <ClCompile Include="src\libtommath\bn_mp_clamp.c" />
+ <ClCompile Include="src\libtommath\bn_mp_clear.c" />
+ <ClCompile Include="src\libtommath\bn_mp_clear_multi.c" />
+ <ClCompile Include="src\libtommath\bn_mp_cmp.c" />
+ <ClCompile Include="src\libtommath\bn_mp_cmp_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_cmp_mag.c" />
+ <ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c" />
+ <ClCompile Include="src\libtommath\bn_mp_copy.c" />
+ <ClCompile Include="src\libtommath\bn_mp_count_bits.c" />
+ <ClCompile Include="src\libtommath\bn_mp_div.c" />
+ <ClCompile Include="src\libtommath\bn_mp_div_2.c" />
+ <ClCompile Include="src\libtommath\bn_mp_div_2d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_div_3.c" />
+ <ClCompile Include="src\libtommath\bn_mp_div_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c" />
+ <ClCompile Include="src\libtommath\bn_mp_dr_reduce.c" />
+ <ClCompile Include="src\libtommath\bn_mp_dr_setup.c" />
+ <ClCompile Include="src\libtommath\bn_mp_exch.c" />
+ <ClCompile Include="src\libtommath\bn_mp_expt_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_exptmod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c" />
+ <ClCompile Include="src\libtommath\bn_mp_exteuclid.c" />
+ <ClCompile Include="src\libtommath\bn_mp_fread.c" />
+ <ClCompile Include="src\libtommath\bn_mp_fwrite.c" />
+ <ClCompile Include="src\libtommath\bn_mp_gcd.c" />
+ <ClCompile Include="src\libtommath\bn_mp_get_int.c" />
+ <ClCompile Include="src\libtommath\bn_mp_grow.c" />
+ <ClCompile Include="src\libtommath\bn_mp_init.c" />
+ <ClCompile Include="src\libtommath\bn_mp_init_copy.c" />
+ <ClCompile Include="src\libtommath\bn_mp_init_multi.c" />
+ <ClCompile Include="src\libtommath\bn_mp_init_set.c" />
+ <ClCompile Include="src\libtommath\bn_mp_init_set_int.c" />
+ <ClCompile Include="src\libtommath\bn_mp_init_size.c" />
+ <ClCompile Include="src\libtommath\bn_mp_invmod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_invmod_slow.c" />
+ <ClCompile Include="src\libtommath\bn_mp_is_square.c" />
+ <ClCompile Include="src\libtommath\bn_mp_jacobi.c" />
+ <ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c" />
+ <ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c" />
+ <ClCompile Include="src\libtommath\bn_mp_lcm.c" />
+ <ClCompile Include="src\libtommath\bn_mp_lshd.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mod_2d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mod_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c" />
+ <ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c" />
+ <ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mul.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mul_2.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mul_2d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mul_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_mulmod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_n_root.c" />
+ <ClCompile Include="src\libtommath\bn_mp_neg.c" />
+ <ClCompile Include="src\libtommath\bn_mp_or.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_fermat.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c" />
+ <ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c" />
+ <ClCompile Include="src\libtommath\bn_mp_radix_size.c" />
+ <ClCompile Include="src\libtommath\bn_mp_radix_smap.c" />
+ <ClCompile Include="src\libtommath\bn_mp_rand.c" />
+ <ClCompile Include="src\libtommath\bn_mp_read_radix.c" />
+ <ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c" />
+ <ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_2k.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c" />
+ <ClCompile Include="src\libtommath\bn_mp_reduce_setup.c" />
+ <ClCompile Include="src\libtommath\bn_mp_rshd.c" />
+ <ClCompile Include="src\libtommath\bn_mp_set.c" />
+ <ClCompile Include="src\libtommath\bn_mp_set_int.c" />
+ <ClCompile Include="src\libtommath\bn_mp_shrink.c" />
+ <ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c" />
+ <ClCompile Include="src\libtommath\bn_mp_sqr.c" />
+ <ClCompile Include="src\libtommath\bn_mp_sqrmod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_sqrt.c" />
+ <ClCompile Include="src\libtommath\bn_mp_sub.c" />
+ <ClCompile Include="src\libtommath\bn_mp_sub_d.c" />
+ <ClCompile Include="src\libtommath\bn_mp_submod.c" />
+ <ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c" />
+ <ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c" />
+ <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c" />
+ <ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c" />
+ <ClCompile Include="src\libtommath\bn_mp_toom_mul.c" />
+ <ClCompile Include="src\libtommath\bn_mp_toom_sqr.c" />
+ <ClCompile Include="src\libtommath\bn_mp_toradix.c" />
+ <ClCompile Include="src\libtommath\bn_mp_toradix_n.c" />
+ <ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c" />
+ <ClCompile Include="src\libtommath\bn_mp_xor.c" />
+ <ClCompile Include="src\libtommath\bn_mp_zero.c" />
+ <ClCompile Include="src\libtommath\bn_prime_tab.c" />
+ <ClCompile Include="src\libtommath\bn_reverse.c" />
+ <ClCompile Include="src\libtommath\bn_s_mp_add.c" />
+ <ClCompile Include="src\libtommath\bn_s_mp_exptmod.c" />
+ <ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c" />
+ <ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c" />
+ <ClCompile Include="src\libtommath\bn_s_mp_sqr.c" />
+ <ClCompile Include="src\libtommath\bn_s_mp_sub.c" />
+ <ClCompile Include="src\libtommath\bncore.c" />
+ <ClCompile Include="src\lzma\C\LzFind.c" />
+ <ClCompile Include="src\lzma\C\LzFindMt.c" />
+ <ClCompile Include="src\lzma\C\LzmaDec.c" />
+ <ClCompile Include="src\lzma\C\LzmaEnc.c" />
+ <ClCompile Include="src\lzma\C\Threads.c" />
+ <ClCompile Include="src\pklib\explode.c" />
+ <ClCompile Include="src\pklib\implode.c" />
+ <ClCompile Include="src\sparse\sparse.cpp" />
+ <ClCompile Include="src\zlib\adler32.c" />
+ <ClCompile Include="src\zlib\compress_zlib.c" />
+ <ClCompile Include="src\zlib\crc32.c" />
+ <ClCompile Include="src\zlib\deflate.c" />
+ <ClCompile Include="src\zlib\inffast.c" />
+ <ClCompile Include="src\zlib\inflate.c" />
+ <ClCompile Include="src\zlib\inftrees.c" />
+ <ClCompile Include="src\zlib\trees.c" />
+ <ClCompile Include="src\zlib\zutil.c" />
+ <ClCompile Include="src\jenkins\lookup3.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/StormLib_dll.vcxproj.filters b/StormLib_vs15.vcxproj.filters
index 90c622f..a532132 100644
--- a/StormLib_dll.vcxproj.filters
+++ b/StormLib_vs15.vcxproj.filters
@@ -2,67 +2,67 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Doc Files">
- <UniqueIdentifier>{85359376-4146-45ff-a6ce-225b3f103198}</UniqueIdentifier>
+ <UniqueIdentifier>{595d6bc1-89d0-4fb8-98f6-be35e73727c4}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
- <UniqueIdentifier>{02d49f0b-fc11-4b84-8ca2-0d0df0bc524e}</UniqueIdentifier>
+ <UniqueIdentifier>{721663d8-8692-476f-b0fd-71fdadf69929}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
- <UniqueIdentifier>{c6293ab1-ea8a-42fb-ae3e-85524ad2e68d}</UniqueIdentifier>
+ <UniqueIdentifier>{9cc24144-d198-4bd1-b941-b946bd61b982}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\adpcm">
- <UniqueIdentifier>{fd9d5cac-d0b6-4204-9160-706a03ec0c69}</UniqueIdentifier>
+ <UniqueIdentifier>{be0080d3-fc04-4442-9e28-b4cc2641177d}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\bzip2">
- <UniqueIdentifier>{7333e6fb-8b95-40b6-bc5e-bdfa7f15b93a}</UniqueIdentifier>
+ <UniqueIdentifier>{adb84a97-8a0c-4988-9473-452326110dff}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\huffman">
- <UniqueIdentifier>{0e473b19-e86f-4180-82b4-3c427117b6c7}</UniqueIdentifier>
+ <UniqueIdentifier>{87256d6a-e658-4f60-8759-6bff32a35eb2}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt">
- <UniqueIdentifier>{cca0e168-e531-4d83-8a8e-478c2ba39323}</UniqueIdentifier>
+ <UniqueIdentifier>{d730d7c1-2960-49d2-ba0d-d1a91dd08964}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\hashes">
- <UniqueIdentifier>{8b8ae872-b929-4758-ac0d-ccb28436ebb8}</UniqueIdentifier>
+ <UniqueIdentifier>{13e5ccb1-06f1-4d10-bdc1-825b51c64dbf}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\math">
- <UniqueIdentifier>{c5829ed3-f34a-4cc5-b01d-b4d44ef6a07c}</UniqueIdentifier>
+ <UniqueIdentifier>{73f7f025-7366-4d76-8d60-4327e00b9d18}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\misc">
- <UniqueIdentifier>{d10b97e0-dd06-440b-aa78-d7739e762511}</UniqueIdentifier>
+ <UniqueIdentifier>{be21c641-7727-4d7b-919e-c895d801db17}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\pk">
- <UniqueIdentifier>{bc743c98-8a6a-4eb4-bb65-2407720090ae}</UniqueIdentifier>
+ <UniqueIdentifier>{694a7758-f909-4b8e-aa13-4d06a8c70eff}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\pk\asn1">
- <UniqueIdentifier>{f155fafa-653d-4638-a0a4-dc46e5581713}</UniqueIdentifier>
+ <UniqueIdentifier>{3f01cae6-5676-4f33-bb38-215341eedfc4}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\pk\ecc">
- <UniqueIdentifier>{7478ca26-875e-4ebf-99d5-7957270bc95f}</UniqueIdentifier>
+ <UniqueIdentifier>{63d75851-c430-4c76-aa08-3398523aab4a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\pk\pkcs1">
- <UniqueIdentifier>{4169e85a-6a42-47f5-a69a-34de5a13ca30}</UniqueIdentifier>
+ <UniqueIdentifier>{11175e9e-e9f1-405c-961b-933e72503cdd}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtomcrypt\pk\rsa">
- <UniqueIdentifier>{df7f82be-b039-4b9b-bb1f-a48b2724957a}</UniqueIdentifier>
+ <UniqueIdentifier>{e30512f4-bdf8-4460-823d-475bd8f08d28}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libtommath">
- <UniqueIdentifier>{3861070d-c4b6-45a8-8a8e-ec7ce7e12d48}</UniqueIdentifier>
+ <UniqueIdentifier>{d2889ef6-3f12-4a9b-8624-8d061748ff03}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\lzma">
- <UniqueIdentifier>{b25aeeef-06f4-4b47-a892-42df4354591b}</UniqueIdentifier>
+ <UniqueIdentifier>{02c6dfb8-4a58-46c5-bb35-69ba6215a3a6}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\pklib">
- <UniqueIdentifier>{77645fb6-77f6-4623-a67a-bc844d414aa9}</UniqueIdentifier>
+ <UniqueIdentifier>{563829a0-aaa3-4af2-88a2-8c6445d2754b}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\sparse">
- <UniqueIdentifier>{e10bf121-3ed4-478c-a0d5-3eb83d0a98c7}</UniqueIdentifier>
+ <UniqueIdentifier>{e82b0d03-77ff-46dc-b5a4-5b469224222a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\zlib">
- <UniqueIdentifier>{abbf0b9a-8227-4cb1-b5f7-76306334c483}</UniqueIdentifier>
+ <UniqueIdentifier>{cb92df18-9435-4db9-997a-e0e7d532cd26}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\jenkins">
- <UniqueIdentifier>{66f88b55-bc43-4c10-838c-b6f27dfc7f4a}</UniqueIdentifier>
+ <UniqueIdentifier>{2920175c-439c-4fd5-b94e-8cf1d3aaadd3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@@ -80,10 +80,10 @@
<ClInclude Include="src\StormCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="src\StormLib.h">
+ <ClInclude Include="include\StormLib.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="src\StormPort.h">
+ <ClInclude Include="include\StormPort.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\adpcm\adpcm.h">
@@ -103,9 +103,6 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="stormlib_dll\DllMain.c">
- <Filter>Source Files</Filter>
- </ClCompile>
<ClCompile Include="src\FileStream.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -778,15 +775,6 @@
<ClCompile Include="src\SBaseSubTypes.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c">
- <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
- <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c">
- <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
- </ClCompile>
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c">
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
</ClCompile>
@@ -829,10 +817,14 @@
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c">
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
</ClCompile>
- </ItemGroup>
- <ItemGroup>
- <None Include="stormlib_dll\StormLib.def">
- <Filter>Source Files</Filter>
- </None>
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c">
+ <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
+ </ClCompile>
+ <ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c">
+ <Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
+ </ClCompile>
+ <ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c">
+ <Filter>Source Files\libtomcrypt\pk\rsa</Filter>
+ </ClCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index 819550e..5aa15ba 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+stormlib (9.21-1) unstable; urgency=low
+
+ * New upstream release 9.21
+ * Remove static linked library from libstorm-dev
+ * Compile without pie hardening (shared library is already pic)
+
+ -- Pali Rohár <pali.rohar@gmail.com> Tue, 13 Dec 2016 00:08:44 +0100
+
stormlib (9.20-1) unstable; urgency=low
* Initial release (Closes: #819380)
diff --git a/debian/libstorm-dev.install b/debian/libstorm-dev.install
index cc029d1..3ffcb69 100644
--- a/debian/libstorm-dev.install
+++ b/debian/libstorm-dev.install
@@ -1,3 +1,2 @@
usr/include
usr/lib/libstorm.so
-usr/lib/libstorm.a
diff --git a/debian/rules b/debian/rules
index 953a9ca..5b5c047 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,9 +1,9 @@
#!/usr/bin/make -f
-export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-pie
%:
dh $@
override_dh_auto_configure:
- dh_auto_configure -- -DWITH_LIBTOMCRYPT=ON -DWITH_STATIC=ON
+ dh_auto_configure -- -DWITH_LIBTOMCRYPT=ON -DBUILD_SHARED_LIBS=ON
diff --git a/makefile.w32 b/makefile.w32
index a32019d..7fbd98f 100644
--- a/makefile.w32
+++ b/makefile.w32
@@ -275,8 +275,8 @@ all: $(LIBRARY) $(TESTEXE)
#install: $(LIBRARY)
# install $(LIBRARY) /usr/local/lib
# mkdir -p /usr/local/include/StormLib
-# cp StormLib.h /usr/local/include/StormLib
-# cp StormPort.h /usr/local/include/StormLib
+# cp src/StormLib.h /usr/local/include/StormLib
+# cp src/StormPort.h /usr/local/include/StormLib
$(LIBRARY): $(COBJS) $(OBJS) $(OBJS_DLL)
$(CPP) $(CFLAGS) $(DFLAGS) -o $(LIBRARY) $(COBJS) $(OBJS) $(OBJS_DLL) $(DLLLFLAGS)
diff --git a/src/FileStream.cpp b/src/FileStream.cpp
index 29a4d33..2aeada1 100644
--- a/src/FileStream.cpp
+++ b/src/FileStream.cpp
@@ -34,14 +34,14 @@
// Local functions - platform-specific functions
#ifndef PLATFORM_WINDOWS
-static int nLastError = ERROR_SUCCESS;
+static DWORD nLastError = ERROR_SUCCESS;
-int GetLastError()
+DWORD GetLastError()
{
return nLastError;
}
-void SetLastError(int nError)
+void SetLastError(DWORD nError)
{
nLastError = nError;
}
@@ -2821,11 +2821,11 @@ void FileStream_Close(TFileStream * pStream)
FileStream_Close(pStream->pMaster);
pStream->pMaster = NULL;
- // Close the stream provider.
+ // Close the stream provider ...
if(pStream->StreamClose != NULL)
pStream->StreamClose(pStream);
- // Also close base stream, if any
+ // ... or close base stream, if any
else if(pStream->BaseClose != NULL)
pStream->BaseClose(pStream);
diff --git a/src/SBaseCommon.cpp b/src/SBaseCommon.cpp
index 54fc6d0..aa891df 100644
--- a/src/SBaseCommon.cpp
+++ b/src/SBaseCommon.cpp
@@ -147,7 +147,6 @@ void StringCatT(TCHAR * dest, const TCHAR * src, size_t nMaxChars)
// Storm hashing functions
#define STORM_BUFFER_SIZE 0x500
-
#define HASH_INDEX_MASK(ha) (ha->pHeader->dwHashTableSize ? (ha->pHeader->dwHashTableSize - 1) : 0)
static DWORD StormBuffer[STORM_BUFFER_SIZE]; // Buffer for the decryption engine
@@ -192,6 +191,22 @@ void InitializeMpqCryptography()
}
}
+//
+// Note: Implementation of this function in WorldEdit.exe and storm.dll
+// incorrectly treats the character as signed, which leads to the
+// a buffer underflow if the character in the file name >= 0x80:
+// The following steps happen when *pbKey == 0xBF and dwHashType == 0x0000
+// (calculating hash index)
+//
+// 1) Result of AsciiToUpperTable_Slash[*pbKey++] is sign-extended to 0xffffffbf
+// 2) The "ch" is added to dwHashType (0xffffffbf + 0x0000 => 0xffffffbf)
+// 3) The result is used as index to the StormBuffer table,
+// thus dereferences a random value BEFORE the begin of StormBuffer.
+//
+// As result, MPQs containing files with non-ANSI characters will not work between
+// various game versions and localizations. Even WorldEdit, after importing a file
+// with Korean characters in the name, cannot open the file back.
+//
DWORD HashString(const char * szFileName, DWORD dwHashType)
{
LPBYTE pbKey = (BYTE *)szFileName;
@@ -255,7 +270,22 @@ DWORD HashStringLower(const char * szFileName, DWORD dwHashType)
//-----------------------------------------------------------------------------
// Calculates the hash table size for a given amount of files
-DWORD GetHashTableSizeForFileCount(DWORD dwFileCount)
+// Returns the nearest higher power of two.
+// If the value is already a power of two, returns the same value
+DWORD GetNearestPowerOfTwo(DWORD dwFileCount)
+{
+ dwFileCount --;
+
+ dwFileCount |= dwFileCount >> 1;
+ dwFileCount |= dwFileCount >> 2;
+ dwFileCount |= dwFileCount >> 4;
+ dwFileCount |= dwFileCount >> 8;
+ dwFileCount |= dwFileCount >> 16;
+
+ return dwFileCount + 1;
+}
+/*
+DWORD GetNearestPowerOfTwo(DWORD dwFileCount)
{
DWORD dwPowerOfTwo = HASH_TABLE_SIZE_MIN;
@@ -269,7 +299,7 @@ DWORD GetHashTableSizeForFileCount(DWORD dwFileCount)
dwPowerOfTwo <<= 1;
return dwPowerOfTwo;
}
-
+*/
//-----------------------------------------------------------------------------
// Calculates a Jenkin's Encrypting and decrypting MPQ file data
@@ -628,7 +658,7 @@ TMPQHash * GetFirstHashEntry(TMPQArchive * ha, const char * szFileName)
TMPQHash * pHash = ha->pHashTable + dwIndex;
// If the entry matches, we found it.
- if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && pHash->dwBlockIndex < ha->dwFileTableSize)
+ if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
return pHash;
// If that hash entry is a free entry, it means we haven't found the file
@@ -663,7 +693,7 @@ TMPQHash * GetNextHashEntry(TMPQArchive * ha, TMPQHash * pFirstHash, TMPQHash *
pHash = ha->pHashTable + dwIndex;
// If the entry matches, we found it.
- if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && pHash->dwBlockIndex < ha->dwFileTableSize)
+ if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
return pHash;
// If that hash entry is a free entry, it means we haven't found the file
@@ -691,7 +721,7 @@ TMPQHash * AllocateHashEntry(
pHash->dwName1 = dwName1;
pHash->dwName2 = dwName2;
pHash->lcLocale = (USHORT)lcLocale;
- pHash->wPlatform = 0;
+ pHash->Platform = 0;
pHash->dwBlockIndex = (DWORD)(pFileEntry - ha->pFileTable);
}
diff --git a/src/SBaseDumpData.cpp b/src/SBaseDumpData.cpp
index d156030..334561b 100644
--- a/src/SBaseDumpData.cpp
+++ b/src/SBaseDumpData.cpp
@@ -51,11 +51,11 @@ void DumpHashTable(TMPQHash * pHashTable, DWORD dwHashTableSize)
printf("== Hash Table =================================\n");
for(i = 0; i < dwHashTableSize; i++)
{
- printf("[%08x] %08X %08X %04X %04X %08X\n", i,
+ printf("[%08x] %08X %08X %04X %02X %08X\n", i,
pHashTable[i].dwName1,
pHashTable[i].dwName2,
pHashTable[i].lcLocale,
- pHashTable[i].wPlatform,
+ pHashTable[i].Platform,
pHashTable[i].dwBlockIndex);
}
printf("-----------------------------------------------\n\n");
diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp
index ed0748d..c7a26aa 100644
--- a/src/SBaseFileTable.cpp
+++ b/src/SBaseFileTable.cpp
@@ -581,21 +581,23 @@ int ConvertMpqHeaderToFormat4(
// Hash entry verification when the file table does not exist yet
bool IsValidHashEntry(TMPQArchive * ha, TMPQHash * pHash)
{
- TFileEntry * pFileEntry = ha->pFileTable + pHash->dwBlockIndex;
- return ((pHash->dwBlockIndex < ha->dwFileTableSize) && (pFileEntry->dwFlags & MPQ_FILE_EXISTS)) ? true : false;
+ TFileEntry * pFileEntry = ha->pFileTable + MPQ_BLOCK_INDEX(pHash);
+
+ return ((MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize) && (pFileEntry->dwFlags & MPQ_FILE_EXISTS)) ? true : false;
}
// Hash entry verification when the file table does not exist yet
static bool IsValidHashEntry1(TMPQArchive * ha, TMPQHash * pHash, TMPQBlock * pBlockTable)
{
ULONGLONG ByteOffset;
- TMPQBlock * pBlock = pBlockTable + pHash->dwBlockIndex;
+ TMPQBlock * pBlock;
- // Storm.dll does not perform this check. However, if there will
- // be an entry with (dwBlockIndex > dwBlockTableSize), the game would crash
- // Hence we assume that dwBlockIndex must be less than dwBlockTableSize
- if(pHash->dwBlockIndex < ha->pHeader->dwBlockTableSize)
+ // The block index is considered valid if it's less than block table size
+ if(MPQ_BLOCK_INDEX(pHash) < ha->pHeader->dwBlockTableSize)
{
+ // Calculate the block table position
+ pBlock = pBlockTable + MPQ_BLOCK_INDEX(pHash);
+
// Check whether this is an existing file
// Also we do not allow to be file size greater than 2GB
if((pBlock->dwFlags & MPQ_FILE_EXISTS) && (pBlock->dwFSize & 0x8000000) == 0)
@@ -610,32 +612,42 @@ static bool IsValidHashEntry1(TMPQArchive * ha, TMPQHash * pHash, TMPQBlock * pB
}
// Returns a hash table entry in the following order:
-// 1) A hash table entry with the preferred locale
-// 2) A hash table entry with the neutral locale
+// 1) A hash table entry with the preferred locale and platform
+// 2) A hash table entry with the neutral|matching locale and neutral|matching platform
// 3) NULL
-static TMPQHash * GetHashEntryLocale(TMPQArchive * ha, const char * szFileName, LCID lcLocale)
+// Storm_2016.dll: 15020940
+static TMPQHash * GetHashEntryLocale(TMPQArchive * ha, const char * szFileName, LCID lcLocale, BYTE Platform)
{
- TMPQHash * pHashNeutral = NULL;
TMPQHash * pFirstHash = GetFirstHashEntry(ha, szFileName);
+ TMPQHash * pBestEntry = NULL;
TMPQHash * pHash = pFirstHash;
// Parse the found hashes
while(pHash != NULL)
{
- // If the locales match, return it
- if(lcLocale == pHash->lcLocale)
+ // Storm_2016.dll: 150209CB
+ // If the hash entry matches both locale and platform, return it immediately
+ // Note: We only succeed this check if the locale is non-neutral, because
+ // some Warcraft III maps have several items with neutral locale&platform, which leads
+ // to wrong item being returned
+ if((lcLocale || Platform) && pHash->lcLocale == lcLocale && pHash->Platform == Platform)
return pHash;
-
- // If we found neutral hash, remember it
- if(pHash->lcLocale == 0)
- pHashNeutral = pHash;
+
+ // Storm_2016.dll: 150209D9
+ // If (locale matches or is neutral) OR (platform matches or is neutral)
+ // remember this as the best entry
+ if(pHash->lcLocale == 0 || pHash->lcLocale == lcLocale)
+ {
+ if(pHash->Platform == 0 || pHash->Platform == Platform)
+ pBestEntry = pHash;
+ }
// Get the next hash entry for that file
pHash = GetNextHashEntry(ha, pFirstHash, pHash);
}
// At the end, return neutral hash (if found), otherwise NULL
- return pHashNeutral;
+ return pBestEntry;
}
// Returns a hash table entry in the following order:
@@ -699,7 +711,7 @@ static TMPQHash * DefragmentHashTable(
// Calculate how many entries in the hash table we really need
dwFirstFreeEntry = (DWORD)(pTarget - pHashTable);
- dwNewTableSize = GetHashTableSizeForFileCount(dwFirstFreeEntry);
+ dwNewTableSize = GetNearestPowerOfTwo(dwFirstFreeEntry);
// Fill the rest with entries that look like deleted
pHashTableEnd = pHashTable + dwNewTableSize;
@@ -732,11 +744,15 @@ static int BuildFileTableFromBlockTable(
TMPQHash * pHash;
LPDWORD DefragmentTable = NULL;
DWORD dwItemCount = 0;
+ DWORD dwFlagMask;
// Sanity checks
assert(ha->pFileTable != NULL);
assert(ha->dwFileTableSize >= ha->dwMaxFileCount);
+ // MPQs for Warcraft III doesn't know some flags, namely MPQ_FILE_SINGLE_UNIT and MPQ_FILE_PATCH_FILE
+ dwFlagMask = (ha->dwFlags & MPQ_FLAG_WAR3_MAP) ? ~(MPQ_FILE_SINGLE_UNIT | MPQ_FILE_PATCH_FILE) : 0xFFFFFFFF;
+
// Defragment the hash table, if needed
if(ha->dwFlags & MPQ_FLAG_HASH_TABLE_CUT)
{
@@ -765,33 +781,34 @@ static int BuildFileTableFromBlockTable(
pHashTableEnd = ha->pHashTable + pHeader->dwHashTableSize;
for(pHash = ha->pHashTable; pHash < pHashTableEnd; pHash++)
{
- DWORD dwBlockIndex = pHash->dwBlockIndex;
- DWORD dwNewIndex = pHash->dwBlockIndex;
-
//
// We need to properly handle these cases:
// - Multiple hash entries (same file name) point to the same block entry
// - Multiple hash entries (different file name) point to the same block entry
//
// Ignore all hash table entries where:
- // - dwBlockIndex >= BlockTableSize
+ // - Block Index >= BlockTableSize
// - Flags of the appropriate block table entry
+ //
if(IsValidHashEntry1(ha, pHash, pBlockTable))
{
+ DWORD dwOldIndex = MPQ_BLOCK_INDEX(pHash);
+ DWORD dwNewIndex = MPQ_BLOCK_INDEX(pHash);
+
// Determine the new block index
if(DefragmentTable != NULL)
{
- // Need to handle case when multile hash
+ // Need to handle case when multiple hash
// entries point to the same block entry
- if(DefragmentTable[dwBlockIndex] == HASH_ENTRY_FREE)
+ if(DefragmentTable[dwOldIndex] == HASH_ENTRY_FREE)
{
- DefragmentTable[dwBlockIndex] = dwItemCount;
+ DefragmentTable[dwOldIndex] = dwItemCount;
dwNewIndex = dwItemCount++;
}
else
{
- dwNewIndex = DefragmentTable[dwBlockIndex];
+ dwNewIndex = DefragmentTable[dwOldIndex];
}
// Fix the pointer in the hash entry
@@ -803,7 +820,7 @@ static int BuildFileTableFromBlockTable(
// Get the pointer to the file entry and the block entry
pFileEntry = ha->pFileTable + dwNewIndex;
- pBlock = pBlockTable + dwBlockIndex;
+ pBlock = pBlockTable + dwOldIndex;
// ByteOffset is only valid if file size is not zero
pFileEntry->ByteOffset = pBlock->dwFilePos;
@@ -813,7 +830,7 @@ static int BuildFileTableFromBlockTable(
// Fill the rest of the file entry
pFileEntry->dwFileSize = pBlock->dwFSize;
pFileEntry->dwCmpSize = pBlock->dwCSize;
- pFileEntry->dwFlags = pBlock->dwFlags;
+ pFileEntry->dwFlags = pBlock->dwFlags & dwFlagMask;
}
}
@@ -1796,12 +1813,12 @@ TFileEntry * GetFileEntryLocale2(TMPQArchive * ha, const char * szFileName, LCID
// we will need the pointer to hash table entry
if(ha->pHashTable != NULL)
{
- pHash = GetHashEntryLocale(ha, szFileName, lcLocale);
- if(pHash != NULL && pHash->dwBlockIndex < ha->dwFileTableSize)
+ pHash = GetHashEntryLocale(ha, szFileName, lcLocale, 0);
+ if(pHash != NULL && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
{
if(PtrHashIndex != NULL)
PtrHashIndex[0] = (DWORD)(pHash - ha->pHashTable);
- return ha->pFileTable + pHash->dwBlockIndex;
+ return ha->pFileTable + MPQ_BLOCK_INDEX(pHash);
}
}
@@ -1831,11 +1848,11 @@ TFileEntry * GetFileEntryExact(TMPQArchive * ha, const char * szFileName, LCID l
if(ha->pHashTable != NULL)
{
pHash = GetHashEntryExact(ha, szFileName, lcLocale);
- if(pHash != NULL && pHash->dwBlockIndex < ha->dwFileTableSize)
+ if(pHash != NULL && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
{
if(PtrHashIndex != NULL)
PtrHashIndex[0] = (DWORD)(pHash - ha->pHashTable);
- return ha->pFileTable + pHash->dwBlockIndex;
+ return ha->pFileTable + MPQ_BLOCK_INDEX(pHash);
}
}
@@ -1980,7 +1997,8 @@ int RenameFileEntry(
pHashEntry->dwName1 = 0xFFFFFFFF;
pHashEntry->dwName2 = 0xFFFFFFFF;
pHashEntry->lcLocale = 0xFFFF;
- pHashEntry->wPlatform = 0xFFFF;
+ pHashEntry->Platform = 0xFF;
+ pHashEntry->Reserved = 0xFF;
pHashEntry->dwBlockIndex = HASH_ENTRY_DELETED;
}
@@ -2020,7 +2038,8 @@ int DeleteFileEntry(TMPQArchive * ha, TMPQFile * hf)
pHashEntry->dwName1 = 0xFFFFFFFF;
pHashEntry->dwName2 = 0xFFFFFFFF;
pHashEntry->lcLocale = 0xFFFF;
- pHashEntry->wPlatform = 0xFFFF;
+ pHashEntry->Platform = 0xFF;
+ pHashEntry->Reserved = 0xFF;
pHashEntry->dwBlockIndex = HASH_ENTRY_DELETED;
}
@@ -2141,9 +2160,10 @@ static TMPQHash * LoadHashTable(TMPQArchive * ha)
DWORD dwCmpSize;
bool bHashTableIsCut = false;
- // If the MPQ has no hash table, do nothing
- if(pHeader->dwHashTablePos == 0 && pHeader->wHashTablePosHi == 0)
- return NULL;
+ // Note: It is allowed to load hash table if it is at offset 0.
+ // Example: MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x
+// if(pHeader->dwHashTablePos == 0 && pHeader->wHashTablePosHi == 0)
+// return NULL;
// If the hash table size is zero, do nothing
if(pHeader->dwHashTableSize == 0)
@@ -2201,9 +2221,10 @@ TMPQBlock * LoadBlockTable(TMPQArchive * ha, bool /* bDontFixEntries */)
DWORD dwCmpSize;
bool bBlockTableIsCut = false;
- // Do nothing if the block table position is zero
- if(pHeader->dwBlockTablePos == 0 && pHeader->wBlockTablePosHi == 0)
- return NULL;
+ // Note: It is possible that the block table starts at offset 0
+ // Example: MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x
+// if(pHeader->dwBlockTablePos == 0 && pHeader->wBlockTablePosHi == 0)
+// return NULL;
// Do nothing if the block table size is zero
if(pHeader->dwBlockTableSize == 0)
@@ -2298,8 +2319,8 @@ int LoadAnyHashTable(TMPQArchive * ha)
if(pHeader->HetTablePos64 != 0)
ha->pHetTable = LoadHetTable(ha);
- // Try to load the hash table
- if(pHeader->wHashTablePosHi || pHeader->dwHashTablePos)
+ // Try to load classic hash table
+ if(pHeader->dwHashTableSize)
ha->pHashTable = LoadHashTable(ha);
// At least one of the tables must be present
@@ -2597,6 +2618,13 @@ int DefragmentFileTable(TMPQArchive * ha)
// Update the block table size
dwBlockTableSize = (DWORD)(pSource - ha->pFileTable) + 1;
}
+ else
+ {
+ // If there is file name left, free it
+ if(pSource->szFileName != NULL)
+ STORM_FREE(pSource->szFileName);
+ pSource->szFileName = NULL;
+ }
}
// Did we defragment something?
@@ -2610,14 +2638,17 @@ int DefragmentFileTable(TMPQArchive * ha)
{
TMPQHash * pHashTableEnd = ha->pHashTable + ha->pHeader->dwHashTableSize;
TMPQHash * pHash;
+ DWORD dwNewBlockIndex;
for(pHash = ha->pHashTable; pHash < pHashTableEnd; pHash++)
{
- if(pHash->dwBlockIndex < ha->dwFileTableSize)
- {
- assert(DefragmentTable[pHash->dwBlockIndex] != HASH_ENTRY_FREE);
- pHash->dwBlockIndex = DefragmentTable[pHash->dwBlockIndex];
- }
+ if(MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
+ {
+ // If that block entry is there, set it to the hash entry
+ // If not, set it as DELETED
+ dwNewBlockIndex = DefragmentTable[MPQ_BLOCK_INDEX(pHash)];
+ pHash->dwBlockIndex = (dwNewBlockIndex != HASH_ENTRY_FREE) ? dwNewBlockIndex : HASH_ENTRY_DELETED;
+ }
}
}
}
@@ -2724,7 +2755,7 @@ int RebuildFileTable(TMPQArchive * ha, DWORD dwNewHashTableSize)
{
if(IsValidHashEntry(ha, pHash))
{
- pFileEntry = ha->pFileTable + pHash->dwBlockIndex;
+ pFileEntry = ha->pFileTable + MPQ_BLOCK_INDEX(pHash);
AllocateHashEntry(ha, pFileEntry, pHash->lcLocale);
}
}
diff --git a/src/SBaseSubTypes.cpp b/src/SBaseSubTypes.cpp
index 9807701..47c205e 100644
--- a/src/SBaseSubTypes.cpp
+++ b/src/SBaseSubTypes.cpp
@@ -187,7 +187,6 @@ TMPQHash * LoadSqpHashTable(TMPQArchive * ha)
TSQPHash * pSqpHashEnd;
TSQPHash * pSqpHash;
TMPQHash * pMpqHash;
- DWORD dwBlockIndex;
int nError = ERROR_SUCCESS;
// Load the hash table
@@ -203,8 +202,7 @@ TMPQHash * LoadSqpHashTable(TMPQArchive * ha)
if(pSqpHash->dwBlockIndex != HASH_ENTRY_FREE)
{
// Check block index against the size of the block table
- dwBlockIndex = pSqpHash->dwBlockIndex;
- if(pHeader->dwBlockTableSize <= dwBlockIndex && dwBlockIndex < HASH_ENTRY_DELETED)
+ if(pHeader->dwBlockTableSize <= MPQ_BLOCK_INDEX(pSqpHash) && pSqpHash->dwBlockIndex < HASH_ENTRY_DELETED)
nError = ERROR_FILE_CORRUPT;
// We do not support nonzero locale and platform ID
@@ -216,9 +214,9 @@ TMPQHash * LoadSqpHashTable(TMPQArchive * ha)
pMpqHash->dwName2 = pSqpHash->dwName2;
// Store the rest. Note that this must be done last,
- // because pSqpHash->dwBlockIndex corresponds to pMpqHash->dwName2
- pMpqHash->dwBlockIndex = dwBlockIndex;
- pMpqHash->wPlatform = 0;
+ // because block index corresponds to pMpqHash->dwName2
+ pMpqHash->dwBlockIndex = MPQ_BLOCK_INDEX(pSqpHash);
+ pMpqHash->Platform = 0;
pMpqHash->lcLocale = 0;
}
}
@@ -525,7 +523,7 @@ TMPQHash * LoadMpkHashTable(TMPQArchive * ha)
if(pMpkHash != NULL)
{
// Calculate the hash table size as if it was real MPQ hash table
- pHeader->dwHashTableSize = GetHashTableSizeForFileCount(pHeader->dwHashTableSize);
+ pHeader->dwHashTableSize = GetNearestPowerOfTwo(pHeader->dwHashTableSize);
pHeader->HashTableSize64 = pHeader->dwHashTableSize * sizeof(TMPQHash);
// Now allocate table that will serve like a true MPQ hash table,
@@ -546,7 +544,7 @@ TMPQHash * LoadMpkHashTable(TMPQArchive * ha)
// Copy the MPK hash entry to the hash table
pHash->dwBlockIndex = pMpkHash[i].dwBlockIndex;
- pHash->wPlatform = 0;
+ pHash->Platform = 0;
pHash->lcLocale = 0;
pHash->dwName1 = pMpkHash[i].dwName2;
pHash->dwName2 = pMpkHash[i].dwName3;
diff --git a/src/SFileCompactArchive.cpp b/src/SFileCompactArchive.cpp
index 57c8839..2895baa 100644
--- a/src/SFileCompactArchive.cpp
+++ b/src/SFileCompactArchive.cpp
@@ -481,7 +481,7 @@ bool WINAPI SFileSetMaxFileCount(HANDLE hMpq, DWORD dwMaxFileCount)
if(nError == ERROR_SUCCESS)
{
// Calculate the hash table size for the new file limit
- dwNewHashTableSize = GetHashTableSizeForFileCount(dwMaxFileCount);
+ dwNewHashTableSize = GetNearestPowerOfTwo(dwMaxFileCount);
// Rebuild both file tables
nError = RebuildFileTable(ha, dwNewHashTableSize);
diff --git a/src/SFileCreateArchive.cpp b/src/SFileCreateArchive.cpp
index fb9ed60..47354fe 100644
--- a/src/SFileCreateArchive.cpp
+++ b/src/SFileCreateArchive.cpp
@@ -178,7 +178,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea
}
// If file count is not zero, initialize the hash table size
- dwHashTableSize = GetHashTableSizeForFileCount(pCreateInfo->dwMaxFileCount + dwReservedFiles);
+ dwHashTableSize = GetNearestPowerOfTwo(pCreateInfo->dwMaxFileCount + dwReservedFiles);
// Retrieve the file size and round it up to 0x200 bytes
FileStream_GetSize(pStream, &MpqPos);
@@ -202,7 +202,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea
if(nError == ERROR_SUCCESS)
{
memset(ha, 0, sizeof(TMPQArchive));
- ha->pfnHashString = HashString;
+ ha->pfnHashString = HashStringSlash;
ha->pStream = pStream;
ha->dwSectorSize = pCreateInfo->dwSectorSize;
ha->UserDataPos = MpqPos;
diff --git a/src/SFileFindFile.cpp b/src/SFileFindFile.cpp
index aacba12..18bf4d5 100644
--- a/src/SFileFindFile.cpp
+++ b/src/SFileFindFile.cpp
@@ -138,7 +138,7 @@ static bool FileWasFoundBefore(
}
// Calculate the hash to the table
- dwNameHash = HashString(szRealFileName, MPQ_HASH_NAME_A);
+ dwNameHash = ha->pfnHashString(szRealFileName, MPQ_HASH_NAME_A);
dwStartIndex = dwIndex = (dwNameHash % hs->dwSearchTableItems);
// The file might have been found before
@@ -299,7 +299,7 @@ static int DoMPQSearch_HashTable(TMPQSearch * hs, SFILE_FIND_DATA * lpFindFileDa
if(IsValidHashEntry(ha, pHash))
{
// Check if this file entry should be included in the search result
- if(DoMPQSearch_FileEntry(hs, lpFindFileData, ha, pHash, ha->pFileTable + pHash->dwBlockIndex))
+ if(DoMPQSearch_FileEntry(hs, lpFindFileData, ha, pHash, ha->pFileTable + MPQ_BLOCK_INDEX(pHash)))
return ERROR_SUCCESS;
}
}
diff --git a/src/SFileGetFileInfo.cpp b/src/SFileGetFileInfo.cpp
index 9874793..365dce5 100644
--- a/src/SFileGetFileInfo.cpp
+++ b/src/SFileGetFileInfo.cpp
@@ -773,6 +773,17 @@ bool WINAPI SFileGetFileInfo(
}
break;
+ case SFileInfoCRC32:
+ hf = IsValidFileHandle(hMpqOrFile);
+ if(hf != NULL && hf->pFileEntry != NULL)
+ {
+ dwInt32Value = hf->pFileEntry->dwCrc32;
+ pvSrcFileInfo = &dwInt32Value;
+ cbSrcFileInfo = sizeof(DWORD);
+ nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
+ }
+ break;
+
default: // Invalid info class
SetLastError(ERROR_INVALID_PARAMETER);
return false;
diff --git a/src/SFileListFile.cpp b/src/SFileListFile.cpp
index 62b8f11..3918bd9 100644
--- a/src/SFileListFile.cpp
+++ b/src/SFileListFile.cpp
@@ -350,7 +350,7 @@ static int SListFileCreateNodeForAllLocales(TMPQArchive * ha, const char * szFil
while(pHash != NULL)
{
// Allocate file name for the file entry
- AllocateFileName(ha, ha->pFileTable + pHash->dwBlockIndex, szFileName);
+ AllocateFileName(ha, ha->pFileTable + MPQ_BLOCK_INDEX(pHash), szFileName);
// Now find the next language version of the file
pHash = GetNextHashEntry(ha, pFirstHash, pHash);
diff --git a/src/SFileOpenArchive.cpp b/src/SFileOpenArchive.cpp
index d62b98f..62effe7 100644
--- a/src/SFileOpenArchive.cpp
+++ b/src/SFileOpenArchive.cpp
@@ -209,19 +209,19 @@ bool WINAPI SFileOpenArchive(
{
ULONGLONG SearchOffset = 0;
ULONGLONG EndOfSearch = FileSize;
- DWORD dwStreamFlags = 0;
+ DWORD dwStrmFlags = 0;
DWORD dwHeaderSize;
DWORD dwHeaderID;
bool bSearchComplete = false;
memset(ha, 0, sizeof(TMPQArchive));
- ha->pfnHashString = HashString;
+ ha->pfnHashString = HashStringSlash;
ha->pStream = pStream;
pStream = NULL;
// Set the archive read only if the stream is read-only
- FileStream_GetFlags(ha->pStream, &dwStreamFlags);
- ha->dwFlags |= (dwStreamFlags & STREAM_FLAG_READ_ONLY) ? MPQ_FLAG_READ_ONLY : 0;
+ FileStream_GetFlags(ha->pStream, &dwStrmFlags);
+ ha->dwFlags |= (dwStrmFlags & STREAM_FLAG_READ_ONLY) ? MPQ_FLAG_READ_ONLY : 0;
// Also remember if we shall check sector CRCs when reading file
ha->dwFlags |= (dwFlags & MPQ_OPEN_CHECK_SECTOR_CRC) ? MPQ_FLAG_CHECK_SECTOR_CRC : 0;
@@ -365,6 +365,13 @@ bool WINAPI SFileOpenArchive(
ha->pUserData = NULL;
}
+ // Anti-overflow. If the hash table size in the header is
+ // higher than 0x10000000, it would overflow in 32-bit version
+ // Observed in the malformed Warcraft III maps
+ // Example map: MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x
+ ha->pHeader->dwBlockTableSize = (ha->pHeader->dwBlockTableSize & BLOCK_INDEX_MASK);
+ ha->pHeader->dwHashTableSize = (ha->pHeader->dwHashTableSize & BLOCK_INDEX_MASK);
+
// Both MPQ_OPEN_NO_LISTFILE or MPQ_OPEN_NO_ATTRIBUTES trigger read only mode
if(dwFlags & (MPQ_OPEN_NO_LISTFILE | MPQ_OPEN_NO_ATTRIBUTES))
ha->dwFlags |= MPQ_FLAG_READ_ONLY;
@@ -428,7 +435,7 @@ bool WINAPI SFileOpenArchive(
if(pFileEntry != NULL)
{
// Just remember that the archive is weak-signed
- assert(pFileEntry->dwFlags == MPQ_FILE_EXISTS);
+ assert((pFileEntry->dwFlags & MPQ_FILE_EXISTS) != 0);
ha->dwFileFlags3 = pFileEntry->dwFlags;
}
diff --git a/src/SFileOpenFileEx.cpp b/src/SFileOpenFileEx.cpp
index 3794680..9ce0ae2 100644
--- a/src/SFileOpenFileEx.cpp
+++ b/src/SFileOpenFileEx.cpp
@@ -30,7 +30,7 @@ static DWORD FindHashIndex(TMPQArchive * ha, DWORD dwFileIndex)
pHashTableEnd = ha->pHashTable + ha->pHeader->dwHashTableSize;
for(pHash = ha->pHashTable; pHash < pHashTableEnd; pHash++)
{
- if(pHash->dwBlockIndex == dwFileIndex)
+ if(MPQ_BLOCK_INDEX(pHash) == dwFileIndex)
{
// Duplicate hash entry found
if(dwFirstIndex != HASH_ENTRY_FREE)
@@ -309,8 +309,10 @@ bool WINAPI SFileOpenFileEx(HANDLE hMpq, const char * szFileName, DWORD dwSearch
{
if(pFileEntry == NULL || (pFileEntry->dwFlags & MPQ_FILE_EXISTS) == 0)
nError = ERROR_FILE_NOT_FOUND;
- if(pFileEntry != NULL && pFileEntry->dwFlags & ~MPQ_FILE_VALID_FLAGS)
- nError = ERROR_NOT_SUPPORTED;
+
+ // Ignore unknown loading flags (example: MPQ_2016_v1_WME4_4.w3x)
+// if(pFileEntry != NULL && pFileEntry->dwFlags & ~MPQ_FILE_VALID_FLAGS)
+// nError = ERROR_NOT_SUPPORTED;
}
// Did the caller just wanted to know if the file exists?
diff --git a/src/SFilePatchArchives.cpp b/src/SFilePatchArchives.cpp
index d01aaf2..37b4612 100644
--- a/src/SFilePatchArchives.cpp
+++ b/src/SFilePatchArchives.cpp
@@ -15,6 +15,8 @@
//-----------------------------------------------------------------------------
// Local structures
+#define MAX_SC2_PATCH_PREFIX 0x80
+
#define PATCH_SIGNATURE_HEADER 0x48435450
#define PATCH_SIGNATURE_MD5 0x5f35444d
#define PATCH_SIGNATURE_XFRM 0x4d524658
@@ -277,6 +279,8 @@ static int ApplyFilePatch_BSD0(
// Get the longest block that we can combine
dwCombineSize = ((dwOldOffset + dwAddDataLength) >= dwOldSize) ? (dwOldSize - dwOldOffset) : dwAddDataLength;
+ if((dwNewOffset + dwCombineSize) > dwNewSize || (dwNewOffset + dwCombineSize) < dwNewOffset)
+ return ERROR_FILE_CORRUPT;
// Now combine the patch data with the original file
for(i = 0; i < dwCombineSize; i++)
@@ -410,30 +414,52 @@ static bool CreatePatchPrefix(TMPQArchive * ha, const char * szFileName, size_t
{
TMPQNamePrefix * pNewPrefix;
- // If the end of the patch prefix was not entered, find it
+ // If the length of the patch prefix was not entered, find it
+ // Not that the patch prefix must always begin with backslash
if(szFileName != NULL && nLength == 0)
nLength = strlen(szFileName);
// Create the patch prefix
- pNewPrefix = (TMPQNamePrefix *)STORM_ALLOC(BYTE, sizeof(TMPQNamePrefix) + nLength);
+ pNewPrefix = (TMPQNamePrefix *)STORM_ALLOC(BYTE, sizeof(TMPQNamePrefix) + nLength + 1);
if(pNewPrefix != NULL)
{
- // Fill the name prefix
- pNewPrefix->nLength = nLength;
- pNewPrefix->szPatchPrefix[0] = 0;
-
// Fill the name prefix. Also add the backslash
if(szFileName && nLength)
{
memcpy(pNewPrefix->szPatchPrefix, szFileName, nLength);
- pNewPrefix->szPatchPrefix[nLength] = 0;
+ if(pNewPrefix->szPatchPrefix[nLength - 1] != '\\')
+ pNewPrefix->szPatchPrefix[nLength++] = '\\';
}
+
+ // Terminate the string and fill the length
+ pNewPrefix->szPatchPrefix[nLength] = 0;
+ pNewPrefix->nLength = nLength;
}
ha->pPatchPrefix = pNewPrefix;
return (pNewPrefix != NULL);
}
+static bool CheckAndCreatePatchPrefix(TMPQArchive * ha, const char * szPatchPrefix, size_t nLength)
+{
+ char szTempName[MAX_SC2_PATCH_PREFIX + 0x41];
+ bool bResult = false;
+
+ // Prepare the patch file name
+ if(nLength > MAX_SC2_PATCH_PREFIX)
+ return false;
+
+ // Prepare the patched file name
+ memcpy(szTempName, szPatchPrefix, nLength);
+ memcpy(&szTempName[nLength], "\\(patch_metadata)", 18);
+
+ // Verifywhether that file exists
+ if(GetFileEntryLocale(ha, szTempName, 0) != NULL)
+ bResult = CreatePatchPrefix(ha, szPatchPrefix, nLength);
+
+ return bResult;
+}
+
static bool IsMatchingPatchFile(
TMPQArchive * ha,
const char * szFileName,
@@ -512,6 +538,9 @@ static const char * FindArchiveLanguage(TMPQArchive * ha, PLOCALIZED_MPQ_INFO pM
return NULL;
}
+//-----------------------------------------------------------------------------
+// Finding ratch prefix for an temporary build of WoW (Pre-Cataclysm)
+
static bool FindPatchPrefix_WoW_13164_13623(TMPQArchive * haBase, TMPQArchive * haPatch)
{
const char * szPatchPrefix;
@@ -532,27 +561,213 @@ static bool FindPatchPrefix_WoW_13164_13623(TMPQArchive * haBase, TMPQArchive *
return CreatePatchPrefix(haPatch, szNamePrefix, 5);
}
+//-----------------------------------------------------------------------------
+// Finding patch prefix for Starcraft II (Pre-Legacy of the Void)
+
+//
+// This method tries to match the patch by placement of the archive (in the game subdirectory)
+//
+// Archive Path: %GAME_DIR%\Mods\SwarmMulti.SC2Mod\Base.SC2Data
+// Patch Prefix: Mods\SwarmMulti.SC2Mod\Base.SC2Data
+//
+// Archive Path: %ANY_DIR%\MPQ_2013_v4_Mods#Liberty.SC2Mod#enGB.SC2Data
+// Patch Prefix: Mods\Liberty.SC2Mod\enGB.SC2Data
+//
+
+static bool CheckPatchPrefix_SC2_ArchiveName(
+ TMPQArchive * haPatch,
+ const TCHAR * szPathPtr,
+ const TCHAR * szSeparator,
+ const TCHAR * szPathEnd,
+ const TCHAR * szExpectedString,
+ size_t cchExpectedString)
+{
+ char szPatchPrefix[MAX_SC2_PATCH_PREFIX+0x41];
+ size_t nLength = 0;
+ bool bResult = false;
+
+ // Check whether the length is equal to the length of the expected string
+ if((size_t)(szSeparator - szPathPtr) == cchExpectedString)
+ {
+ // Now check the string itself
+ if(!_tcsnicmp(szPathPtr, szExpectedString, szSeparator - szPathPtr))
+ {
+ // Copy the name string
+ for(; szPathPtr < szPathEnd; szPathPtr++)
+ {
+ if(szPathPtr[0] != _T('/') && szPathPtr[0] != _T('#'))
+ szPatchPrefix[nLength++] = (char)szPathPtr[0];
+ else
+ szPatchPrefix[nLength++] = '\\';
+ }
+
+ // Check and create the patch prefix
+ bResult = CheckAndCreatePatchPrefix(haPatch, szPatchPrefix, nLength);
+ }
+ }
+
+ return bResult;
+}
+
+static bool FindPatchPrefix_SC2_ArchiveName(TMPQArchive * haBase, TMPQArchive * haPatch)
+{
+ const TCHAR * szPathBegin = FileStream_GetFileName(haBase->pStream);
+ const TCHAR * szSeparator = NULL;
+ const TCHAR * szPathEnd = szPathBegin + _tcslen(szPathBegin);
+ const TCHAR * szPathPtr;
+ int nSlashCount = 0;
+ int nDotCount = 0;
+
+ // Skip the part where the patch prefix would be too long
+ if((szPathEnd - szPathBegin) > MAX_SC2_PATCH_PREFIX)
+ szPathBegin = szPathEnd - MAX_SC2_PATCH_PREFIX;
+
+ // Search for the file extension
+ for(szPathPtr = szPathEnd; szPathPtr > szPathBegin; szPathPtr--)
+ {
+ if(szPathPtr[0] == _T('.'))
+ {
+ nDotCount++;
+ break;
+ }
+ }
+
+ // Search for the possible begin of the prefix name
+ for(/* NOTHING */; szPathPtr > szPathBegin; szPathPtr--)
+ {
+ // Check the slashes, backslashes and hashes
+ if(szPathPtr[0] == _T('\\') || szPathPtr[0] == _T('/') || szPathPtr[0] == _T('#'))
+ {
+ if(nDotCount == 0)
+ return false;
+ szSeparator = szPathPtr;
+ nSlashCount++;
+ }
+
+ // Check the path parts
+ if(szSeparator != NULL && nSlashCount >= nDotCount)
+ {
+ if(CheckPatchPrefix_SC2_ArchiveName(haPatch, szPathPtr, szSeparator, szPathEnd, _T("Battle.net"), 10))
+ return true;
+ if(CheckPatchPrefix_SC2_ArchiveName(haPatch, szPathPtr, szSeparator, szPathEnd, _T("Campaigns"), 9))
+ return true;
+ if(CheckPatchPrefix_SC2_ArchiveName(haPatch, szPathPtr, szSeparator, szPathEnd, _T("Mods"), 4))
+ return true;
+ }
+ }
+
+ // Not matched, sorry
+ return false;
+}
+
+//
+// This method tries to read the patch prefix from a helper file
+//
+// Example
+// =========================================================
+// MPQ File Name: MPQ_2013_v4_Base1.SC2Data
+// Helper File : MPQ_2013_v4_Base1.SC2Data-PATCH
+// File Contains: PatchPrefix=Mods\Core.SC2Mod\Base.SC2Data
+// Patch Prefix : Mods\Core.SC2Mod\Base.SC2Data
+//
+
+static bool ExtractPatchPrefixFromFile(const TCHAR * szHelperFile, char * szPatchPrefix, size_t nMaxChars, size_t * PtrLength)
+{
+ TFileStream * pStream;
+ ULONGLONG FileSize = 0;
+ size_t nLength;
+ char szFileData[MAX_PATH+1];
+ bool bResult = false;
+
+ pStream = FileStream_OpenFile(szHelperFile, STREAM_FLAG_READ_ONLY);
+ if(pStream != NULL)
+ {
+ // Retrieve and check the file size
+ FileStream_GetSize(pStream, &FileSize);
+ if(12 <= FileSize && FileSize < MAX_PATH)
+ {
+ // Read the entire file to memory
+ if(FileStream_Read(pStream, NULL, szFileData, (DWORD)FileSize))
+ {
+ // Terminate the buffer with zero
+ szFileData[(DWORD)FileSize] = 0;
+
+ // The file data must begin with the "PatchPrefix" variable
+ if(!_strnicmp(szFileData, "PatchPrefix", 11))
+ {
+ char * szLinePtr = szFileData + 11;
+ char * szLineEnd;
+
+ // Skip spaces or '='
+ while(szLinePtr[0] == ' ' || szLinePtr[0] == '=')
+ szLinePtr++;
+ szLineEnd = szLinePtr;
+
+ // Find the end
+ while(szLineEnd[0] != 0 && szLineEnd[0] != 0x0A && szLineEnd[0] != 0x0D)
+ szLineEnd++;
+ nLength = (size_t)(szLineEnd - szLinePtr);
+
+ // Copy the variable
+ if(szLineEnd > szLinePtr && nLength <= nMaxChars)
+ {
+ memcpy(szPatchPrefix, szLinePtr, nLength);
+ szPatchPrefix[nLength] = 0;
+ PtrLength[0] = nLength;
+ bResult = true;
+ }
+ }
+ }
+ }
+
+ // Close the stream
+ FileStream_Close(pStream);
+ }
+
+ return bResult;
+}
+
+
+static bool FindPatchPrefix_SC2_HelperFile(TMPQArchive * haBase, TMPQArchive * haPatch)
+{
+ TCHAR szHelperFile[MAX_PATH+1];
+ char szPatchPrefix[MAX_SC2_PATCH_PREFIX+0x41];
+ size_t nLength = 0;
+ bool bResult = false;
+
+ // Create the name of the patch helper file
+ _tcscpy(szHelperFile, FileStream_GetFileName(haBase->pStream));
+ if(_tcslen(szHelperFile) + 6 > MAX_PATH)
+ return false;
+ _tcscat(szHelperFile, _T("-PATCH"));
+
+ // Open the patch helper file and read the line
+ if(ExtractPatchPrefixFromFile(szHelperFile, szPatchPrefix, MAX_SC2_PATCH_PREFIX, &nLength))
+ bResult = CheckAndCreatePatchPrefix(haPatch, szPatchPrefix, nLength);
+
+ return bResult;
+}
+
//
// Find match in Starcraft II patch MPQs
// Match a LST file in the root directory if the MPQ with any of the file in subdirectories
//
// The problem:
-// Base: enGB-md5.lst
-// Patch: Campaigns\Liberty.SC2Campaign\enGB.SC2Assets\enGB-md5.lst
-// Campaigns\Liberty.SC2Campaign\enGB.SC2Data\enGB-md5.lst
-// Campaigns\LibertyStory.SC2Campaign\enGB.SC2Data\enGB-md5.lst
-// Campaigns\LibertyStory.SC2Campaign\enGB.SC2Data\enGB-md5.lst Mods\Core.SC2Mod\enGB.SC2Assets\enGB-md5.lst
-// Mods\Core.SC2Mod\enGB.SC2Data\enGB-md5.lst
-// Mods\Liberty.SC2Mod\enGB.SC2Assets\enGB-md5.lst
-// Mods\Liberty.SC2Mod\enGB.SC2Data\enGB-md5.lst
-// Mods\LibertyMulti.SC2Mod\enGB.SC2Data\enGB-md5.lst
+// File in the base MPQ: enGB-md5.lst
+// File in the patch MPQ: Campaigns\Liberty.SC2Campaign\enGB.SC2Assets\enGB-md5.lst
+// Campaigns\Liberty.SC2Campaign\enGB.SC2Data\enGB-md5.lst
+// Campaigns\LibertyStory.SC2Campaign\enGB.SC2Data\enGB-md5.lst
+// Campaigns\LibertyStory.SC2Campaign\enGB.SC2Data\enGB-md5.lst Mods\Core.SC2Mod\enGB.SC2Assets\enGB-md5.lst
+// Mods\Core.SC2Mod\enGB.SC2Data\enGB-md5.lst
+// Mods\Liberty.SC2Mod\enGB.SC2Assets\enGB-md5.lst
+// Mods\Liberty.SC2Mod\enGB.SC2Data\enGB-md5.lst
+// Mods\LibertyMulti.SC2Mod\enGB.SC2Data\enGB-md5.lst
//
// Solution:
// We need to match the file by its MD5
//
-// Note: pBaseEntry is the file entry of the base version of "StreamingBuckets.txt"
-static bool FindPatchPrefix_SC2(TMPQArchive * haBase, TMPQArchive * haPatch, TFileEntry * pBaseEntry)
+static bool FindPatchPrefix_SC2_MatchFiles(TMPQArchive * haBase, TMPQArchive * haPatch, TFileEntry * pBaseEntry)
{
TMPQNamePrefix * pPatchPrefix;
char * szPatchFileName;
@@ -612,6 +827,59 @@ static bool FindPatchPrefix_SC2(TMPQArchive * haBase, TMPQArchive * haPatch, TFi
return bResult;
}
+// Note: pBaseEntry is the file entry of the base version of "StreamingBuckets.txt"
+static bool FindPatchPrefix_SC2(TMPQArchive * haBase, TMPQArchive * haPatch, TFileEntry * pBaseEntry)
+{
+ // Method 1: Try it by the placement of the archive.
+ // Works when someone is opening an archive in the game (sub)directory
+ if(FindPatchPrefix_SC2_ArchiveName(haBase, haPatch))
+ return true;
+
+ // Method 2: Try to locate the Name.Ext-PATCH file and read the patch prefix from it
+ if(FindPatchPrefix_SC2_HelperFile(haBase, haPatch))
+ return true;
+
+ // Method 3: Try to pair any version of "StreamingBuckets.txt" from the patch MPQ
+ // with the "StreamingBuckets.txt" in the base MPQ. Does not always work
+ if(FindPatchPrefix_SC2_MatchFiles(haBase, haPatch, pBaseEntry))
+ return true;
+
+ return false;
+}
+
+//
+// Patch prefix is the path subdirectory where the patched files are within MPQ.
+//
+// Example 1:
+// Main MPQ: locale-enGB.MPQ
+// Patch MPQ: wow-update-12694.MPQ
+// File in main MPQ: DBFilesClient\Achievement.dbc
+// File in patch MPQ: enGB\DBFilesClient\Achievement.dbc
+// Path prefix: enGB
+//
+// Example 2:
+// Main MPQ: expansion1.MPQ
+// Patch MPQ: wow-update-12694.MPQ
+// File in main MPQ: DBFilesClient\Achievement.dbc
+// File in patch MPQ: Base\DBFilesClient\Achievement.dbc
+// Path prefix: Base
+//
+// Example 3:
+// Main MPQ: %GAME%\Battle.net\Battle.net.MPQ
+// Patch MPQ: s2-update-base-26147.MPQ
+// File in main MPQ: Battle.net\i18n\deDE\String\CLIENT_ACHIEVEMENTS.xml
+// File in patch MPQ: Battle.net\Battle.net.MPQ\Battle.net\i18n\deDE\String\CLIENT_ACHIEVEMENTS.xml
+// Path prefix: Battle.net\Battle.net.MPQ
+//
+// Example 4:
+// Main MPQ: %GAME%\Campaigns\Liberty.SC2Campaign\enGB.SC2Data
+// *OR* %ANY_DIR%\%ANY_NAME%Campaigns#Liberty.SC2Campaign#enGB.SC2Data
+// Patch MPQ: s2-update-enGB-23258.MPQ
+// File in main MPQ: LocalizedData\GameHotkeys.txt
+// File in patch MPQ: Campaigns\Liberty.SC2Campaign\enGB.SC2Data\LocalizedData\GameHotkeys.txt
+// Patch Prefix: Campaigns\Liberty.SC2Campaign\enGB.SC2Data
+//
+
static bool FindPatchPrefix(TMPQArchive * haBase, TMPQArchive * haPatch, const char * szPatchPathPrefix)
{
TFileEntry * pFileEntry;
@@ -671,7 +939,7 @@ int Patch_InitPatcher(TMPQPatcher * pPatcher, TMPQFile * hf)
DWORD cbMaxFileData = 0;
// Overflow check
- if((sizeof(MPQ_PATCH_HEADER) + cbMaxFileData) < cbMaxFileData)
+ if((cbMaxFileData + (DWORD)sizeof(MPQ_PATCH_HEADER)) < cbMaxFileData)
return ERROR_NOT_ENOUGH_MEMORY;
if(hf->hfPatch == NULL)
return ERROR_INVALID_PARAMETER;
@@ -817,24 +1085,6 @@ void Patch_Finalize(TMPQPatcher * pPatcher)
//-----------------------------------------------------------------------------
// Public functions
-//
-// Patch prefix is the path subdirectory where the patched files are within MPQ.
-//
-// Example 1:
-// Main MPQ: locale-enGB.MPQ
-// Patch MPQ: wow-update-12694.MPQ
-// File in main MPQ: DBFilesClient\Achievement.dbc
-// File in patch MPQ: enGB\DBFilesClient\Achievement.dbc
-// Path prefix: enGB
-//
-// Example 2:
-// Main MPQ: expansion1.MPQ
-// Patch MPQ: wow-update-12694.MPQ
-// File in main MPQ: DBFilesClient\Achievement.dbc
-// File in patch MPQ: Base\DBFilesClient\Achievement.dbc
-// Path prefix: Base
-//
-
bool WINAPI SFileOpenPatchArchive(
HANDLE hMpq,
const TCHAR * szPatchMpqName,
diff --git a/src/SFileReadFile.cpp b/src/SFileReadFile.cpp
index 30dc587..485b361 100644
--- a/src/SFileReadFile.cpp
+++ b/src/SFileReadFile.cpp
@@ -801,9 +801,10 @@ DWORD WINAPI SFileGetFileSize(HANDLE hFile, LPDWORD pdwFileSizeHigh)
DWORD WINAPI SFileSetFilePointer(HANDLE hFile, LONG lFilePos, LONG * plFilePosHigh, DWORD dwMoveMethod)
{
TMPQFile * hf = (TMPQFile *)hFile;
- ULONGLONG FilePosition;
- ULONGLONG MoveOffset;
- DWORD dwFilePosHi;
+ ULONGLONG OldPosition;
+ ULONGLONG NewPosition;
+ ULONGLONG FileSize;
+ ULONGLONG DeltaPos;
// If the hFile is not a valid file handle, return an error.
if(!IsValidFileHandle(hFile))
@@ -812,33 +813,47 @@ DWORD WINAPI SFileSetFilePointer(HANDLE hFile, LONG lFilePos, LONG * plFilePosHi
return SFILE_INVALID_POS;
}
+ // Retrieve the file size for handling the limits
+ if(hf->pStream != NULL)
+ {
+ FileStream_GetSize(hf->pStream, &FileSize);
+ }
+ else
+ {
+ FileSize = SFileGetFileSize(hFile, NULL);
+ }
+
+ // Handle the NULL and non-NULL values of plFilePosHigh
+ // Non-NULL: The DeltaPos is combined from lFilePos and *lpFilePosHigh
+ // NULL: The DeltaPos is sign-extended value of lFilePos
+ DeltaPos = (plFilePosHigh != NULL) ? MAKE_OFFSET64(plFilePosHigh[0], lFilePos) : (ULONGLONG)(LONGLONG)lFilePos;
+
// Get the relative point where to move from
switch(dwMoveMethod)
{
case FILE_BEGIN:
- FilePosition = 0;
+
+ // Move relative to the file begin.
+ OldPosition = 0;
break;
case FILE_CURRENT:
+
+ // Retrieve the current file position
if(hf->pStream != NULL)
{
- FileStream_GetPos(hf->pStream, &FilePosition);
+ FileStream_GetPos(hf->pStream, &OldPosition);
}
else
{
- FilePosition = hf->dwFilePos;
+ OldPosition = hf->dwFilePos;
}
break;
case FILE_END:
- if(hf->pStream != NULL)
- {
- FileStream_GetSize(hf->pStream, &FilePosition);
- }
- else
- {
- FilePosition = SFileGetFileSize(hFile, NULL);
- }
+
+ // Move relative to the end of the file
+ OldPosition = FileSize;
break;
default:
@@ -846,47 +861,36 @@ DWORD WINAPI SFileSetFilePointer(HANDLE hFile, LONG lFilePos, LONG * plFilePosHi
return SFILE_INVALID_POS;
}
- // Now get the move offset. Note that both values form
- // a signed 64-bit value (a file pointer can be moved backwards)
- if(plFilePosHigh != NULL)
- dwFilePosHi = *plFilePosHigh;
- else
- dwFilePosHi = (lFilePos & 0x80000000) ? 0xFFFFFFFF : 0;
- MoveOffset = MAKE_OFFSET64(dwFilePosHi, lFilePos);
+ // Calculate the new position
+ NewPosition = OldPosition + DeltaPos;
- // Now calculate the new file pointer
- // Do not allow the file pointer to overflow
- FilePosition = ((FilePosition + MoveOffset) >= FilePosition) ? (FilePosition + MoveOffset) : 0;
+ // If moving backward, don't allow the new position go negative
+ if((LONGLONG)DeltaPos < 0)
+ {
+ if(NewPosition > FileSize)
+ NewPosition = 0;
+ }
+
+ // If moving forward, don't allow the new position go past the end of the file
+ else
+ {
+ if(NewPosition > FileSize)
+ NewPosition = FileSize;
+ }
// Now apply the file pointer to the file
if(hf->pStream != NULL)
{
- // Apply the new file position
- if(!FileStream_Read(hf->pStream, &FilePosition, NULL, 0))
+ if(!FileStream_Read(hf->pStream, &NewPosition, NULL, 0))
return SFILE_INVALID_POS;
-
- // Return the new file position
- if(plFilePosHigh != NULL)
- *plFilePosHigh = (LONG)(FilePosition >> 32);
- return (DWORD)FilePosition;
}
else
{
- // Files in MPQ can't be bigger than 4 GB.
- // We don't allow to go past 4 GB
- if(FilePosition >> 32)
- {
- SetLastError(ERROR_INVALID_PARAMETER);
- return SFILE_INVALID_POS;
- }
-
- // Change the file position
- hf->dwFilePos = (DWORD)FilePosition;
-
- // Return the new file position
- if(plFilePosHigh != NULL)
- *plFilePosHigh = 0;
- return (DWORD)FilePosition;
+ hf->dwFilePos = (DWORD)NewPosition;
}
-}
+ // Return the new file position
+ if(plFilePosHigh != NULL)
+ *plFilePosHigh = (LONG)(NewPosition >> 32);
+ return (DWORD)NewPosition;
+}
diff --git a/src/StormCommon.h b/src/StormCommon.h
index 3c2148e..27ba45f 100644
--- a/src/StormCommon.h
+++ b/src/StormCommon.h
@@ -154,7 +154,7 @@ DWORD HashStringLower(const char * szFileName, DWORD dwHashType);
void InitializeMpqCryptography();
-DWORD GetHashTableSizeForFileCount(DWORD dwFileCount);
+DWORD GetNearestPowerOfTwo(DWORD dwFileCount);
bool IsPseudoFileName(const char * szFileName, LPDWORD pdwFileIndex);
ULONGLONG HashStringJenkins(const char * szFileName);
diff --git a/src/StormLib.h b/src/StormLib.h
index 0f0f2a5..dfa31f9 100644
--- a/src/StormLib.h
+++ b/src/StormLib.h
@@ -71,6 +71,7 @@
/* 27.08.14 9.10 Lad Signing archives with weak digital signature */
/* 25.11.14 9.11 Lad Fixed bug reading & creating HET table */
/* 18.09.15 9.20 Lad Release 9.20 */
+/* 12.12.16 9.20 Lad Release 9.21 */
/*****************************************************************************/
#ifndef __STORMLIB_H__
@@ -135,8 +136,8 @@ extern "C" {
//-----------------------------------------------------------------------------
// Defines
-#define STORMLIB_VERSION 0x0914 // Current version of StormLib (9.20)
-#define STORMLIB_VERSION_STRING "9.20" // String version of StormLib version
+#define STORMLIB_VERSION 0x0915 // Current version of StormLib (9.21)
+#define STORMLIB_VERSION_STRING "9.21" // String version of StormLib version
#define ID_MPQ 0x1A51504D // MPQ archive header ID ('MPQ\x1A')
#define ID_MPQ_USERDATA 0x1B51504D // MPQ userdata entry ('MPQ\x1B')
@@ -213,12 +214,11 @@ extern "C" {
#define MPQ_FILE_DELETE_MARKER 0x02000000 // File is a deletion marker. Used in MPQ patches, indicating that the file no longer exists.
#define MPQ_FILE_SECTOR_CRC 0x04000000 // File has checksums for each sector.
// Ignored if file is not compressed or imploded.
-
-#define MPQ_FILE_COMPRESS_MASK 0x0000FF00 // Mask for a file being compressed
+#define MPQ_FILE_SIGNATURE 0x10000000 // Present on STANDARD.SNP\(signature). The only occurence ever observed
#define MPQ_FILE_EXISTS 0x80000000 // Set if file exists, reset when the file was deleted
#define MPQ_FILE_REPLACEEXISTING 0x80000000 // Replace when the file exist (SFileAddFile)
-#define MPQ_FILE_EXISTS_MASK 0xF00000FF // These must be either zero or MPQ_FILE_EXISTS
+#define MPQ_FILE_COMPRESS_MASK 0x0000FF00 // Mask for a file being compressed
#define MPQ_FILE_VALID_FLAGS (MPQ_FILE_IMPLODE | \
MPQ_FILE_COMPRESS | \
@@ -228,8 +228,16 @@ extern "C" {
MPQ_FILE_SINGLE_UNIT | \
MPQ_FILE_DELETE_MARKER | \
MPQ_FILE_SECTOR_CRC | \
+ MPQ_FILE_SIGNATURE | \
MPQ_FILE_EXISTS)
+// We need to mask out the upper 4 bits of the block table index.
+// This is because it gets shifted out when calculating block table offset
+// BlockTableOffset = pHash->dwBlockIndex << 0x04
+// Malformed MPQ maps may contain block indexes like 0x40000001 or 0xF0000023
+#define BLOCK_INDEX_MASK 0x0FFFFFFF
+#define MPQ_BLOCK_INDEX(pHash) (pHash->dwBlockIndex & BLOCK_INDEX_MASK)
+
// Compression types for multiple compressions
#define MPQ_COMPRESSION_HUFFMANN 0x01 // Huffmann compression (used on WAVE files only)
#define MPQ_COMPRESSION_ZLIB 0x02 // ZLIB compression
@@ -434,6 +442,7 @@ typedef enum _SFileInfoClass
SFileInfoFlags, // File flags from (DWORD)
SFileInfoEncryptionKey, // File encryption key
SFileInfoEncryptionKeyRaw, // Unfixed value of the file key
+ SFileInfoCRC32, // CRC32 of the file
} SFileInfoClass;
//-----------------------------------------------------------------------------
@@ -609,12 +618,13 @@ typedef struct _TMPQHash
// The platform the file is used for. 0 indicates the default platform.
// No other values have been observed.
- // Note: wPlatform is actually just BYTE, but since it has never been used, we don't care.
- USHORT wPlatform;
+ BYTE Platform;
+ BYTE Reserved;
#else
- USHORT wPlatform;
+ BYTE Platform;
+ BYTE Reserved;
USHORT lcLocale;
#endif
@@ -1076,8 +1086,8 @@ int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pv
#ifndef PLATFORM_WINDOWS
-void SetLastError(int err);
-int GetLastError();
+void SetLastError(DWORD err);
+DWORD GetLastError();
#endif
diff --git a/src/StormPort.h b/src/StormPort.h
index 154d573..25134b9 100644
--- a/src/StormPort.h
+++ b/src/StormPort.h
@@ -1,290 +1,291 @@
-/*****************************************************************************/
-/* StormPort.h Copyright (c) Marko Friedemann 2001 */
-/*---------------------------------------------------------------------------*/
-/* Portability module for the StormLib library. Contains a wrapper symbols */
-/* to make the compilation under Linux work */
-/* */
-/* Author: Marko Friedemann <marko.friedemann@bmx-chemnitz.de> */
-/* Created at: Mon Jan 29 18:26:01 CEST 2001 */
-/* Computer: whiplash.flachland-chemnitz.de */
-/* System: Linux 2.4.0 on i686 */
-/* */
-/* Author: Sam Wilkins <swilkins1337@gmail.com> */
-/* System: Mac OS X and port to big endian processor */
-/* */
-/*---------------------------------------------------------------------------*/
-/* Date Ver Who Comment */
-/* -------- ---- --- ------- */
-/* 29.01.01 1.00 Mar Created */
-/* 24.03.03 1.01 Lad Some cosmetic changes */
-/* 12.11.03 1.02 Dan Macintosh compatibility */
-/* 24.07.04 1.03 Sam Mac OS X compatibility */
-/* 22.11.06 1.04 Sam Mac OS X compatibility (for StormLib 6.0) */
-/* 31.12.06 1.05 XPinguin Full GNU/Linux compatibility */
-/* 17.10.12 1.05 Lad Moved error codes so they don't overlap with errno.h */
-/*****************************************************************************/
-
-#ifndef __STORMPORT_H__
-#define __STORMPORT_H__
-
-#ifndef __cplusplus
- #define bool char
- #define true 1
- #define false 0
-#endif
-
-//-----------------------------------------------------------------------------
-// Defines for Windows
-
-#if !defined(PLATFORM_DEFINED) && defined(_WIN32)
-
- // In MSVC 8.0, there are some functions declared as deprecated.
- #if _MSC_VER >= 1400
- #define _CRT_SECURE_NO_DEPRECATE
- #define _CRT_NON_CONFORMING_SWPRINTFS
- #endif
-
- #include <tchar.h>
- #include <assert.h>
- #include <ctype.h>
- #include <stdio.h>
- #include <windows.h>
- #include <wininet.h>
- #define PLATFORM_LITTLE_ENDIAN
-
- #ifdef _WIN64
- #define PLATFORM_64BIT
- #else
- #define PLATFORM_32BIT
- #endif
-
- #define PLATFORM_WINDOWS
- #define PLATFORM_DEFINED // The platform is known now
-
-#endif
-
-//-----------------------------------------------------------------------------
-// Defines for Mac
-
-#if !defined(PLATFORM_DEFINED) && defined(__APPLE__) // Mac BSD API
-
- // Macintosh
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <stdlib.h>
- #include <errno.h>
-
- // Support for PowerPC on Max OS X
- #if (__ppc__ == 1) || (__POWERPC__ == 1) || (_ARCH_PPC == 1)
- #include <stdint.h>
- #include <CoreFoundation/CFByteOrder.h>
- #endif
-
- #define PKEXPORT
- #define __SYS_ZLIB
- #define __SYS_BZLIB
-
- #ifndef __BIG_ENDIAN__
- #define PLATFORM_LITTLE_ENDIAN
- #endif
-
- #define PLATFORM_MAC
- #define PLATFORM_DEFINED // The platform is known now
-
-#endif
-
-//-----------------------------------------------------------------------------
-// Assumption: we are not on Windows nor Macintosh, so this must be linux *grin*
-
-#if !defined(PLATFORM_DEFINED)
-
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <stdint.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <stdarg.h>
- #include <string.h>
- #include <ctype.h>
- #include <assert.h>
- #include <errno.h>
-
- #define PLATFORM_LITTLE_ENDIAN
- #define PLATFORM_LINUX
- #define PLATFORM_DEFINED
-
-#endif
-
-//-----------------------------------------------------------------------------
-// Definition of Windows-specific types for non-Windows platforms
-
-#ifndef PLATFORM_WINDOWS
- #if __LP64__
- #define PLATFORM_64BIT
- #else
- #define PLATFORM_32BIT
- #endif
-
- // Typedefs for ANSI C
- typedef unsigned char BYTE;
- typedef unsigned short USHORT;
- typedef int LONG;
- typedef unsigned int DWORD;
- typedef unsigned long DWORD_PTR;
- typedef long LONG_PTR;
- typedef long INT_PTR;
- typedef long long LONGLONG;
- typedef unsigned long long ULONGLONG;
- typedef void * HANDLE;
- typedef void * LPOVERLAPPED; // Unsupported on Linux and Mac
- typedef char TCHAR;
- typedef unsigned int LCID;
- typedef LONG * PLONG;
- typedef DWORD * LPDWORD;
- typedef BYTE * LPBYTE;
-
- #ifdef PLATFORM_32BIT
- #define _LZMA_UINT32_IS_ULONG
- #endif
-
- // Some Windows-specific defines
- #ifndef MAX_PATH
- #define MAX_PATH 1024
- #endif
-
- #define WINAPI
-
- #define FILE_BEGIN SEEK_SET
- #define FILE_CURRENT SEEK_CUR
- #define FILE_END SEEK_END
-
- #define _T(x) x
- #define _tcslen strlen
- #define _tcscpy strcpy
- #define _tcscat strcat
- #define _tcschr strchr
- #define _tcsrchr strrchr
- #define _tcsstr strstr
- #define _tprintf printf
- #define _stprintf sprintf
- #define _tremove remove
-
- #define _stricmp strcasecmp
- #define _strnicmp strncasecmp
- #define _tcsicmp strcasecmp
- #define _tcsnicmp strncasecmp
-
-#endif // !PLATFORM_WINDOWS
-
-// 64-bit calls are supplied by "normal" calls on Mac
-#if defined(PLATFORM_MAC)
- #define stat64 stat
- #define fstat64 fstat
- #define lseek64 lseek
- #define ftruncate64 ftruncate
- #define off64_t off_t
- #define O_LARGEFILE 0
-#endif
-
-// Platform-specific error codes for UNIX-based platforms
-#if defined(PLATFORM_MAC) || defined(PLATFORM_LINUX)
- #define ERROR_SUCCESS 0
- #define ERROR_FILE_NOT_FOUND ENOENT
- #define ERROR_ACCESS_DENIED EPERM
- #define ERROR_INVALID_HANDLE EBADF
- #define ERROR_NOT_ENOUGH_MEMORY ENOMEM
- #define ERROR_NOT_SUPPORTED ENOTSUP
- #define ERROR_INVALID_PARAMETER EINVAL
- #define ERROR_DISK_FULL ENOSPC
- #define ERROR_ALREADY_EXISTS EEXIST
- #define ERROR_INSUFFICIENT_BUFFER ENOBUFS
- #define ERROR_BAD_FORMAT 1000 // No such error code under Linux
- #define ERROR_NO_MORE_FILES 1001 // No such error code under Linux
- #define ERROR_HANDLE_EOF 1002 // No such error code under Linux
- #define ERROR_CAN_NOT_COMPLETE 1003 // No such error code under Linux
- #define ERROR_FILE_CORRUPT 1004 // No such error code under Linux
-#endif
-
-//-----------------------------------------------------------------------------
-// Swapping functions
-
-#ifdef PLATFORM_LITTLE_ENDIAN
- #define BSWAP_INT16_UNSIGNED(a) (a)
- #define BSWAP_INT16_SIGNED(a) (a)
- #define BSWAP_INT32_UNSIGNED(a) (a)
- #define BSWAP_INT32_SIGNED(a) (a)
- #define BSWAP_INT64_SIGNED(a) (a)
- #define BSWAP_INT64_UNSIGNED(a) (a)
- #define BSWAP_ARRAY16_UNSIGNED(a,b) {}
- #define BSWAP_ARRAY32_UNSIGNED(a,b) {}
- #define BSWAP_ARRAY64_UNSIGNED(a,b) {}
- #define BSWAP_PART_HEADER(a) {}
- #define BSWAP_TMPQHEADER(a,b) {}
- #define BSWAP_TMPKHEADER(a) {}
-#else
-
-#ifdef __cplusplus
- extern "C" {
-#endif
- int16_t SwapInt16(uint16_t);
- uint16_t SwapUInt16(uint16_t);
- int32_t SwapInt32(uint32_t);
- uint32_t SwapUInt32(uint32_t);
- int64_t SwapInt64(uint64_t);
- uint64_t SwapUInt64(uint64_t);
- void ConvertUInt16Buffer(void * ptr, size_t length);
- void ConvertUInt32Buffer(void * ptr, size_t length);
- void ConvertUInt64Buffer(void * ptr, size_t length);
- void ConvertTMPQUserData(void *userData);
- void ConvertTMPQHeader(void *header, uint16_t wPart);
- void ConvertTMPKHeader(void *header);
-#ifdef __cplusplus
- }
-#endif
- #define BSWAP_INT16_SIGNED(a) SwapInt16((a))
- #define BSWAP_INT16_UNSIGNED(a) SwapUInt16((a))
- #define BSWAP_INT32_SIGNED(a) SwapInt32((a))
- #define BSWAP_INT32_UNSIGNED(a) SwapUInt32((a))
- #define BSWAP_INT64_SIGNED(a) SwapInt64((a))
- #define BSWAP_INT64_UNSIGNED(a) SwapUInt64((a))
- #define BSWAP_ARRAY16_UNSIGNED(a,b) ConvertUInt16Buffer((a),(b))
- #define BSWAP_ARRAY32_UNSIGNED(a,b) ConvertUInt32Buffer((a),(b))
- #define BSWAP_ARRAY64_UNSIGNED(a,b) ConvertUInt64Buffer((a),(b))
- #define BSWAP_TMPQHEADER(a,b) ConvertTMPQHeader((a),(b))
- #define BSWAP_TMPKHEADER(a) ConvertTMPKHeader((a))
-#endif
-
-//-----------------------------------------------------------------------------
-// Macro for deprecated symbols
-
-/*
-#ifdef _MSC_VER
- #if _MSC_FULL_VER >= 140050320
- #define STORMLIB_DEPRECATED(_Text) __declspec(deprecated(_Text))
- #else
- #define STORMLIB_DEPRECATED(_Text) __declspec(deprecated)
- #endif
-#else
- #ifdef __GNUC__
- #define STORMLIB_DEPRECATED(_Text) __attribute__((deprecated))
- #else
- #define STORMLIB_DEPRECATED(_Text) __attribute__((deprecated(_Text)))
- #endif
-#endif
-
-// When a flag is deprecated, use this macro
-#ifndef _STORMLIB_NO_DEPRECATE
- #define STORMLIB_DEPRECATED_FLAG(type, oldflag, newflag) \
- const STORMLIB_DEPRECATED(#oldflag " is deprecated. Use " #newflag ". To supress this warning, define _STORMLIB_NO_DEPRECATE") static type oldflag = (type)newflag;
-#else
-#define STORMLIB_DEPRECATED_FLAG(type, oldflag, newflag) static type oldflag = (type)newflag;
-#endif
-*/
-
-#endif // __STORMPORT_H__
+/*****************************************************************************/
+/* StormPort.h Copyright (c) Marko Friedemann 2001 */
+/*---------------------------------------------------------------------------*/
+/* Portability module for the StormLib library. Contains a wrapper symbols */
+/* to make the compilation under Linux work */
+/* */
+/* Author: Marko Friedemann <marko.friedemann@bmx-chemnitz.de> */
+/* Created at: Mon Jan 29 18:26:01 CEST 2001 */
+/* Computer: whiplash.flachland-chemnitz.de */
+/* System: Linux 2.4.0 on i686 */
+/* */
+/* Author: Sam Wilkins <swilkins1337@gmail.com> */
+/* System: Mac OS X and port to big endian processor */
+/* */
+/*---------------------------------------------------------------------------*/
+/* Date Ver Who Comment */
+/* -------- ---- --- ------- */
+/* 29.01.01 1.00 Mar Created */
+/* 24.03.03 1.01 Lad Some cosmetic changes */
+/* 12.11.03 1.02 Dan Macintosh compatibility */
+/* 24.07.04 1.03 Sam Mac OS X compatibility */
+/* 22.11.06 1.04 Sam Mac OS X compatibility (for StormLib 6.0) */
+/* 31.12.06 1.05 XPinguin Full GNU/Linux compatibility */
+/* 17.10.12 1.05 Lad Moved error codes so they don't overlap with errno.h */
+/*****************************************************************************/
+
+#ifndef __STORMPORT_H__
+#define __STORMPORT_H__
+
+#ifndef __cplusplus
+ #define bool char
+ #define true 1
+ #define false 0
+#endif
+
+//-----------------------------------------------------------------------------
+// Defines for Windows
+
+#if !defined(PLATFORM_DEFINED) && defined(_WIN32)
+
+ // In MSVC 8.0, there are some functions declared as deprecated.
+ #if _MSC_VER >= 1400
+ #define _CRT_SECURE_NO_DEPRECATE
+ #define _CRT_NON_CONFORMING_SWPRINTFS
+ #endif
+
+ #include <tchar.h>
+ #include <assert.h>
+ #include <ctype.h>
+ #include <stdio.h>
+ #include <windows.h>
+ #include <wininet.h>
+ #define PLATFORM_LITTLE_ENDIAN
+
+ #ifdef _WIN64
+ #define PLATFORM_64BIT
+ #else
+ #define PLATFORM_32BIT
+ #endif
+
+ #define PLATFORM_WINDOWS
+ #define PLATFORM_DEFINED // The platform is known now
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Defines for Mac
+
+#if !defined(PLATFORM_DEFINED) && defined(__APPLE__) // Mac BSD API
+
+ // Macintosh
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/mman.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <stdlib.h>
+ #include <errno.h>
+
+ // Support for PowerPC on Max OS X
+ #if (__ppc__ == 1) || (__POWERPC__ == 1) || (_ARCH_PPC == 1)
+ #include <stdint.h>
+ #include <CoreFoundation/CFByteOrder.h>
+ #endif
+
+ #define PKEXPORT
+ #define __SYS_ZLIB
+ #define __SYS_BZLIB
+
+ #ifndef __BIG_ENDIAN__
+ #define PLATFORM_LITTLE_ENDIAN
+ #endif
+
+ #define PLATFORM_MAC
+ #define PLATFORM_DEFINED // The platform is known now
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Assumption: we are not on Windows nor Macintosh, so this must be linux *grin*
+
+#if !defined(PLATFORM_DEFINED)
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/mman.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdarg.h>
+ #include <string.h>
+ #include <ctype.h>
+ #include <assert.h>
+ #include <errno.h>
+
+ #define PLATFORM_LITTLE_ENDIAN
+ #define PLATFORM_LINUX
+ #define PLATFORM_DEFINED
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Definition of Windows-specific types for non-Windows platforms
+
+#ifndef PLATFORM_WINDOWS
+ #if __LP64__
+ #define PLATFORM_64BIT
+ #else
+ #define PLATFORM_32BIT
+ #endif
+
+ // Typedefs for ANSI C
+ typedef unsigned char BYTE;
+ typedef unsigned short USHORT;
+ typedef int LONG;
+ typedef unsigned int DWORD;
+ typedef unsigned long DWORD_PTR;
+ typedef long LONG_PTR;
+ typedef long INT_PTR;
+ typedef long long LONGLONG;
+ typedef unsigned long long ULONGLONG;
+ typedef void * HANDLE;
+ typedef void * LPOVERLAPPED; // Unsupported on Linux and Mac
+ typedef char TCHAR;
+ typedef unsigned int LCID;
+ typedef LONG * PLONG;
+ typedef DWORD * LPDWORD;
+ typedef BYTE * LPBYTE;
+
+ #ifdef PLATFORM_32BIT
+ #define _LZMA_UINT32_IS_ULONG
+ #endif
+
+ // Some Windows-specific defines
+ #ifndef MAX_PATH
+ #define MAX_PATH 1024
+ #endif
+
+ #define WINAPI
+
+ #define FILE_BEGIN SEEK_SET
+ #define FILE_CURRENT SEEK_CUR
+ #define FILE_END SEEK_END
+
+ #define _T(x) x
+ #define _tcslen strlen
+ #define _tcscpy strcpy
+ #define _tcscat strcat
+ #define _tcschr strchr
+ #define _tcsrchr strrchr
+ #define _tcsstr strstr
+ #define _tcsnicmp strncasecmp
+ #define _tprintf printf
+ #define _stprintf sprintf
+ #define _tremove remove
+
+ #define _stricmp strcasecmp
+ #define _strnicmp strncasecmp
+ #define _tcsicmp strcasecmp
+ #define _tcsnicmp strncasecmp
+
+#endif // !PLATFORM_WINDOWS
+
+// 64-bit calls are supplied by "normal" calls on Mac
+#if defined(PLATFORM_MAC)
+ #define stat64 stat
+ #define fstat64 fstat
+ #define lseek64 lseek
+ #define ftruncate64 ftruncate
+ #define off64_t off_t
+ #define O_LARGEFILE 0
+#endif
+
+// Platform-specific error codes for UNIX-based platforms
+#if defined(PLATFORM_MAC) || defined(PLATFORM_LINUX)
+ #define ERROR_SUCCESS 0
+ #define ERROR_FILE_NOT_FOUND ENOENT
+ #define ERROR_ACCESS_DENIED EPERM
+ #define ERROR_INVALID_HANDLE EBADF
+ #define ERROR_NOT_ENOUGH_MEMORY ENOMEM
+ #define ERROR_NOT_SUPPORTED ENOTSUP
+ #define ERROR_INVALID_PARAMETER EINVAL
+ #define ERROR_DISK_FULL ENOSPC
+ #define ERROR_ALREADY_EXISTS EEXIST
+ #define ERROR_INSUFFICIENT_BUFFER ENOBUFS
+ #define ERROR_BAD_FORMAT 1000 // No such error code under Linux
+ #define ERROR_NO_MORE_FILES 1001 // No such error code under Linux
+ #define ERROR_HANDLE_EOF 1002 // No such error code under Linux
+ #define ERROR_CAN_NOT_COMPLETE 1003 // No such error code under Linux
+ #define ERROR_FILE_CORRUPT 1004 // No such error code under Linux
+#endif
+
+//-----------------------------------------------------------------------------
+// Swapping functions
+
+#ifdef PLATFORM_LITTLE_ENDIAN
+ #define BSWAP_INT16_UNSIGNED(a) (a)
+ #define BSWAP_INT16_SIGNED(a) (a)
+ #define BSWAP_INT32_UNSIGNED(a) (a)
+ #define BSWAP_INT32_SIGNED(a) (a)
+ #define BSWAP_INT64_SIGNED(a) (a)
+ #define BSWAP_INT64_UNSIGNED(a) (a)
+ #define BSWAP_ARRAY16_UNSIGNED(a,b) {}
+ #define BSWAP_ARRAY32_UNSIGNED(a,b) {}
+ #define BSWAP_ARRAY64_UNSIGNED(a,b) {}
+ #define BSWAP_PART_HEADER(a) {}
+ #define BSWAP_TMPQHEADER(a,b) {}
+ #define BSWAP_TMPKHEADER(a) {}
+#else
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+ int16_t SwapInt16(uint16_t);
+ uint16_t SwapUInt16(uint16_t);
+ int32_t SwapInt32(uint32_t);
+ uint32_t SwapUInt32(uint32_t);
+ int64_t SwapInt64(uint64_t);
+ uint64_t SwapUInt64(uint64_t);
+ void ConvertUInt16Buffer(void * ptr, size_t length);
+ void ConvertUInt32Buffer(void * ptr, size_t length);
+ void ConvertUInt64Buffer(void * ptr, size_t length);
+ void ConvertTMPQUserData(void *userData);
+ void ConvertTMPQHeader(void *header, uint16_t wPart);
+ void ConvertTMPKHeader(void *header);
+#ifdef __cplusplus
+ }
+#endif
+ #define BSWAP_INT16_SIGNED(a) SwapInt16((a))
+ #define BSWAP_INT16_UNSIGNED(a) SwapUInt16((a))
+ #define BSWAP_INT32_SIGNED(a) SwapInt32((a))
+ #define BSWAP_INT32_UNSIGNED(a) SwapUInt32((a))
+ #define BSWAP_INT64_SIGNED(a) SwapInt64((a))
+ #define BSWAP_INT64_UNSIGNED(a) SwapUInt64((a))
+ #define BSWAP_ARRAY16_UNSIGNED(a,b) ConvertUInt16Buffer((a),(b))
+ #define BSWAP_ARRAY32_UNSIGNED(a,b) ConvertUInt32Buffer((a),(b))
+ #define BSWAP_ARRAY64_UNSIGNED(a,b) ConvertUInt64Buffer((a),(b))
+ #define BSWAP_TMPQHEADER(a,b) ConvertTMPQHeader((a),(b))
+ #define BSWAP_TMPKHEADER(a) ConvertTMPKHeader((a))
+#endif
+
+//-----------------------------------------------------------------------------
+// Macro for deprecated symbols
+
+/*
+#ifdef _MSC_VER
+ #if _MSC_FULL_VER >= 140050320
+ #define STORMLIB_DEPRECATED(_Text) __declspec(deprecated(_Text))
+ #else
+ #define STORMLIB_DEPRECATED(_Text) __declspec(deprecated)
+ #endif
+#else
+ #ifdef __GNUC__
+ #define STORMLIB_DEPRECATED(_Text) __attribute__((deprecated))
+ #else
+ #define STORMLIB_DEPRECATED(_Text) __attribute__((deprecated(_Text)))
+ #endif
+#endif
+
+// When a flag is deprecated, use this macro
+#ifndef _STORMLIB_NO_DEPRECATE
+ #define STORMLIB_DEPRECATED_FLAG(type, oldflag, newflag) \
+ const STORMLIB_DEPRECATED(#oldflag " is deprecated. Use " #newflag ". To supress this warning, define _STORMLIB_NO_DEPRECATE") static type oldflag = (type)newflag;
+#else
+#define STORMLIB_DEPRECATED_FLAG(type, oldflag, newflag) static type oldflag = (type)newflag;
+#endif
+*/
+
+#endif // __STORMPORT_H__
diff --git a/src/adpcm/adpcm.cpp b/src/adpcm/adpcm.cpp
index e3741b6..e551bda 100644
--- a/src/adpcm/adpcm.cpp
+++ b/src/adpcm/adpcm.cpp
@@ -13,7 +13,8 @@
/* 10.01.13 3.00 Lad Refactored, beautified, documented :-) */
/*****************************************************************************/
-#include "../StormPort.h"
+#include <stddef.h>
+
#include "adpcm.h"
//-----------------------------------------------------------------------------
diff --git a/src/adpcm/adpcm_old.h b/src/adpcm/adpcm_old.h
index beb9615..7b76aff 100644
--- a/src/adpcm/adpcm_old.h
+++ b/src/adpcm/adpcm_old.h
@@ -14,7 +14,7 @@
//-----------------------------------------------------------------------------
// Functions
-#include "../StormPort.h"
+#include <StormPort.h>
int CompressADPCM (unsigned char * pbOutBuffer, int dwOutLength, short * pwInBuffer, int dwInLength, int nCmpType, int nChannels);
int DecompressADPCM(unsigned char * pbOutBuffer, int dwOutLength, unsigned char * pbInBuffer, int dwInLength, int nChannels);
diff --git a/src/huffman/huff.cpp b/src/huffman/huff.cpp
index 1636a80..877a294 100644
--- a/src/huffman/huff.cpp
+++ b/src/huffman/huff.cpp
@@ -19,7 +19,6 @@
#include <assert.h>
#include <string.h>
-#include "../StormPort.h"
#include "huff.h"
//-----------------------------------------------------------------------------
diff --git a/src/libtomcrypt/src/headers/tomcrypt.h b/src/libtomcrypt/src/headers/tomcrypt.h
index 74cdff4..7df3f5a 100644
--- a/src/libtomcrypt/src/headers/tomcrypt.h
+++ b/src/libtomcrypt/src/headers/tomcrypt.h
@@ -25,6 +25,10 @@ extern "C" {
/* descriptor table size */
#define TAB_SIZE 32
+#ifdef _MSC_VER
+#pragma warning(disable: 4333) // der_encode_utf8_string.c(91) : warning C4333: '>>' : right shift by too large amount, data loss
+#endif
+
/* error codes [will be expanded in future releases] */
enum {
CRYPT_OK=0, /* Result OK */
diff --git a/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c b/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c
index 91ba9d1..c02a96f 100644
--- a/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c
+++ b/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c
@@ -10,4 +10,4 @@
*/
#include "../headers/tomcrypt.h"
-ltc_math_descriptor ltc_mp;
+ltc_math_descriptor ltc_mp = {0};
diff --git a/src/libtomcrypt/src/pk/asn1/der_encode_setof.c b/src/libtomcrypt/src/pk/asn1/der_encode_setof.c
index ad7b0f6..b4e97b5 100644
--- a/src/libtomcrypt/src/pk/asn1/der_encode_setof.c
+++ b/src/libtomcrypt/src/pk/asn1/der_encode_setof.c
@@ -102,7 +102,7 @@ int der_encode_setof(ltc_asn1_list *list, unsigned long inlen,
}
/* get the size of the static header */
- hdrlen = ((unsigned long)ptr) - ((unsigned long)buf);
+ hdrlen = (unsigned long)((size_t)ptr - (size_t)buf);
/* scan for edges */
diff --git a/src/pklib/pklib.h b/src/pklib/pklib.h
index f43da15..9eb2915 100644
--- a/src/pklib/pklib.h
+++ b/src/pklib/pklib.h
@@ -11,8 +11,6 @@
#ifndef __PKLIB_H__
#define __PKLIB_H__
-#include "../StormPort.h"
-
//-----------------------------------------------------------------------------
// Defines
diff --git a/src/sparse/sparse.h b/src/sparse/sparse.h
index b1cd872..12f62b5 100644
--- a/src/sparse/sparse.h
+++ b/src/sparse/sparse.h
@@ -11,8 +11,6 @@
#ifndef __SPARSE_H__
#define __SPARSE_H__
-#include "../StormPort.h"
-
void CompressSparse(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer);
int DecompressSparse(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer);
diff --git a/storm_dll/Storm_dll.sln b/storm_dll/Storm_dll.sln
index 3b323fa..4f78087 100644
--- a/storm_dll/Storm_dll.sln
+++ b/storm_dll/Storm_dll.sln
@@ -1,9 +1,6 @@
-
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Storm_dll", "Storm_dll.vcproj", "{BD600973-C6FA-4CE3-8821-67F6418B7F9C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PhotoSort", "Storm_test.vcproj", "{5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "storm_dll", "storm_dll.vcproj", "{BD600973-C6FA-4CE3-8821-67F6418B7F9C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,14 +18,6 @@ Global
{BD600973-C6FA-4CE3-8821-67F6418B7F9C}.Release|Win32.Build.0 = Release|Win32
{BD600973-C6FA-4CE3-8821-67F6418B7F9C}.Release|x64.ActiveCfg = Release|x64
{BD600973-C6FA-4CE3-8821-67F6418B7F9C}.Release|x64.Build.0 = Release|x64
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Debug|Win32.ActiveCfg = Debug|Win32
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Debug|Win32.Build.0 = Debug|Win32
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Debug|x64.ActiveCfg = Debug|x64
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Debug|x64.Build.0 = Debug|x64
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Release|Win32.ActiveCfg = Release|Win32
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Release|Win32.Build.0 = Release|Win32
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Release|x64.ActiveCfg = Release|x64
- {5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/storm_dll/Storm_dll.vcproj b/storm_dll/Storm_dll.vcproj
index 394d367..6b123ff 100644
--- a/storm_dll/Storm_dll.vcproj
+++ b/storm_dll/Storm_dll.vcproj
@@ -2,9 +2,9 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
- Name="Storm_dll"
+ Name="storm_dll"
ProjectGUID="{BD600973-C6FA-4CE3-8821-67F6418B7F9C}"
- RootNamespace="Storm_dll"
+ RootNamespace="storm_dll"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
@@ -44,10 +44,10 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;Storm_dll_EXPORTS"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;storm_dll_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
- RuntimeLibrary="3"
+ RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
@@ -66,7 +66,7 @@
OutputFile="$(OutDir)\storm.dll"
LinkIncremental="2"
GenerateManifest="false"
- ModuleDefinitionFile=".\Storm_dll.def"
+ ModuleDefinitionFile=".\storm_dll.def"
GenerateDebugInformation="true"
SubSystem="2"
BaseAddress="0x15000000"
@@ -94,16 +94,14 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="Storm_dll.bat $(PlatformName) $(ConfigurationName)"
/>
</Configuration>
<Configuration
- Name="Release|Win32"
+ Name="Debug|x64"
OutputDirectory=".\bin\$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory=".\bin\$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
- WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -119,11 +117,15 @@
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;Storm_dll_EXPORTS"
- RuntimeLibrary="2"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;storm_dll_EXPORTS"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
@@ -140,17 +142,15 @@
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\storm.dll"
- LinkIncremental="1"
+ LinkIncremental="2"
GenerateManifest="false"
- ModuleDefinitionFile=".\Storm_dll.def"
+ ModuleDefinitionFile=".\storm_dll.def"
GenerateDebugInformation="true"
SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
BaseAddress="0x15000000"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
- TargetMachine="1"
+ TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
@@ -172,15 +172,15 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="Storm_dll.bat $(PlatformName) $(ConfigurationName)"
/>
</Configuration>
<Configuration
- Name="Debug|x64"
+ Name="Release|Win32"
OutputDirectory=".\bin\$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory=".\bin\$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
+ WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -196,15 +196,11 @@
/>
<Tool
Name="VCMIDLTool"
- TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;Storm_dll_EXPORTS"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;storm_dll_EXPORTS"
+ RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
@@ -221,15 +217,17 @@
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\storm.dll"
- LinkIncremental="2"
+ LinkIncremental="1"
GenerateManifest="false"
- ModuleDefinitionFile=".\Storm_dll.def"
+ ModuleDefinitionFile=".\storm_dll.def"
GenerateDebugInformation="true"
SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
BaseAddress="0x15000000"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
- TargetMachine="17"
+ TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
@@ -251,7 +249,6 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="Storm_dll.bat $(PlatformName) $(ConfigurationName)"
/>
</Configuration>
<Configuration
@@ -280,7 +277,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;Storm_dll_EXPORTS"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;storm_dll_EXPORTS"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
@@ -300,7 +297,7 @@
OutputFile="$(OutDir)\storm.dll"
LinkIncremental="1"
GenerateManifest="false"
- ModuleDefinitionFile=".\Storm_dll.def"
+ ModuleDefinitionFile=".\storm_dll.def"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
@@ -330,7 +327,6 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="Storm_dll.bat $(PlatformName) $(ConfigurationName)"
/>
</Configuration>
</Configurations>
diff --git a/storm_dll/storm.dll b/storm_dll/storm.dll
deleted file mode 100644
index d4daca0..0000000
--- a/storm_dll/storm.dll
+++ /dev/null
Binary files differ
diff --git a/storm_dll/storm.lib b/storm_dll/storm.lib
index 299a6d4..ce5f3f4 100644
--- a/storm_dll/storm.lib
+++ b/storm_dll/storm.lib
Binary files differ
diff --git a/storm_dll/storm_test.cpp b/storm_dll/storm_test.cpp
index e691776..b72d589 100644
--- a/storm_dll/storm_test.cpp
+++ b/storm_dll/storm_test.cpp
@@ -24,13 +24,21 @@
int main()
{
+ LPCSTR szArchiveName = "e:\\Multimedia\\MPQs\\1995 - Test MPQs\\MPQ_2016_v1_123.w3x";
HANDLE hMpq = NULL;
+ HANDLE hFile = NULL;
+ BYTE Buffer[0x100];
+ DWORD dwBytesRead = 0;
+
+ if(StormOpenArchive(szArchiveName, 0, 0, &hMpq))
+ {
+ if(StormOpenFileEx(hMpq, "war3map.j", 0, &hFile))
+ {
+ dwBytesRead = StormGetFileSize(hFile, NULL);
+ StormReadFile(hFile, Buffer, sizeof(Buffer), &dwBytesRead, NULL);
+ StormCloseFile(hFile);
+ }
- _asm int 3;
- StormOpenFileEx(NULL, NULL, 0, NULL);
-
- if(StormOpenArchive("E:\\Multimedia\\MPQs\\1995 - Test MPQs\\MPQ_2014_v1_ProtectedMap_Spazzler3.w3x", 0, 0, &hMpq))
- {
StormCloseArchive(hMpq);
}
diff --git a/storm_dll/storm_test.vcproj b/storm_dll/storm_test.vcproj
index 571ad8e..0af7b89 100644
--- a/storm_dll/storm_test.vcproj
+++ b/storm_dll/storm_test.vcproj
@@ -2,9 +2,9 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
- Name="Storm_test"
+ Name="storm_test"
ProjectGUID="{5B0E680A-EC4E-402E-AE0D-18ADD2DC6EBE}"
- RootNamespace="Storm_test"
+ RootNamespace="storm_test"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
@@ -65,11 +65,11 @@
/>
<Tool
Name="VCLinkerTool"
- OutputFile="$(OutDir)/Storm_test.exe"
+ OutputFile="$(OutDir)/storm_test.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="../aaa/lib32"
GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/Storm_test.pdb"
+ ProgramDatabaseFile="$(OutDir)/storm_test.pdb"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
@@ -144,11 +144,11 @@
/>
<Tool
Name="VCLinkerTool"
- OutputFile="$(OutDir)/Storm_test.exe"
+ OutputFile="$(OutDir)/storm_test.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="../aaa/lib64"
GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/Storm_test.pdb"
+ ProgramDatabaseFile="$(OutDir)/storm_test.pdb"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
@@ -219,7 +219,7 @@
/>
<Tool
Name="VCLinkerTool"
- OutputFile="$(OutDir)/Storm_test.exe"
+ OutputFile="$(OutDir)/storm_test.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../aaa/lib32"
GenerateDebugInformation="true"
@@ -297,7 +297,7 @@
/>
<Tool
Name="VCLinkerTool"
- OutputFile="$(OutDir)/Storm_test.exe"
+ OutputFile="$(OutDir)/storm_test.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../aaa/lib64"
GenerateDebugInformation="true"
@@ -341,7 +341,7 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
- RelativePath=".\Storm_test.cpp"
+ RelativePath=".\storm_test.cpp"
>
</File>
</Filter>
diff --git a/test/StormTest.cpp b/test/StormTest.cpp
index 685e7de..7909dfd 100644
--- a/test/StormTest.cpp
+++ b/test/StormTest.cpp
@@ -220,8 +220,16 @@ static const char * PatchList_SC2_36281_enGB[] =
"s2-update-enGB-24540.MPQ",
"s2-update-enGB-26147.MPQ",
"s2-update-enGB-28522.MPQ",
- "s2-update-enGB-30384.MPQ",
- "s2-update-enGB-32281.MPQ",
+ "s2-update-enGB-32384.MPQ",
+ "s2-update-enGB-34644.MPQ",
+ "s2-update-enGB-36281.MPQ",
+ NULL
+};
+
+static const char * PatchList_HS_3604_enGB[] =
+{
+ "MPQ_2014_v4_base-Win.MPQ",
+ "hs-0-3604-Win-final.MPQ",
NULL
};
@@ -300,6 +308,25 @@ static bool IsMpqExtension(const char * szFileName)
return false;
}
+static void BinaryFromString(const char * szBinary, LPBYTE pbBuffer, DWORD cbBuffer)
+{
+ LPBYTE pbBufferEnd = pbBuffer + cbBuffer;
+ char * szTemp;
+ char szHexaDigit[4];
+
+ while(szBinary[0] != 0 && pbBuffer < pbBufferEnd)
+ {
+ // Get the 2-byte chunk
+ szHexaDigit[0] = szBinary[0];
+ szHexaDigit[1] = szBinary[1];
+ szHexaDigit[2] = 0;
+
+ // Convert to integer
+ *pbBuffer++ = (BYTE)strtoul(szHexaDigit, &szTemp, 16);
+ szBinary += 2;
+ }
+}
+
static void AddStringBeforeExtension(char * szBuffer, const char * szFileName, const char * szExtraString)
{
const char * szExtension;
@@ -999,7 +1026,7 @@ static int VerifyFilePatchCount(TLogHelper * pLogger, HANDLE hMpq, const char *
// Check if there are any patches at all
if(nExpectedPatchCount != 0 && nPatchCount == 0)
{
- pLogger->PrintMessage("There are no patches beyond %s", szFileName);
+ pLogger->PrintMessage("There are no patches for %s", szFileName);
return ERROR_FILE_CORRUPT;
}
@@ -1517,7 +1544,7 @@ static int CompareTwoLocalFilesRR(
return nError;
}
-static TFileData * LoadMpqFile(TLogHelper * pLogger, HANDLE hMpq, const char * szFileName)
+static TFileData * LoadMpqFile(TLogHelper * pLogger, HANDLE hMpq, const char * szFileName, LCID lcLocale = 0)
{
TFileData * pFileData = NULL;
HANDLE hFile;
@@ -1534,6 +1561,9 @@ static TFileData * LoadMpqFile(TLogHelper * pLogger, HANDLE hMpq, const char * s
// DebugBreak();
#endif
+ // Make sure that we open the proper locale file
+ SFileSetLocale(lcLocale);
+
// Open the file from MPQ
if(!SFileOpenFileEx(hMpq, szFileName, 0, &hFile))
nError = pLogger->PrintError("Failed to open the file %s", szFileName);
@@ -1667,7 +1697,7 @@ static int SearchArchive(
// Increment number of files
dwFileCount++;
-// if(!_stricmp(sf.cFileName, "Interface\\Glues\\CREDITS\\1024px-Blade3_final2.blp"))
+// if(!_stricmp(sf.cFileName, "war3map.j"))
// DebugBreak();
if(dwTestFlags & TEST_FLAG_MOST_PATCHED)
@@ -1687,7 +1717,7 @@ static int SearchArchive(
if(dwTestFlags & TEST_FLAG_LOAD_FILES)
{
// Load the entire file to the MPQ
- pFileData = LoadMpqFile(pLogger, hMpq, sf.cFileName);
+ pFileData = LoadMpqFile(pLogger, hMpq, sf.cFileName, sf.lcLocale);
if(pFileData != NULL)
{
// Hash the file data, if needed
@@ -2071,9 +2101,71 @@ static int RemoveMpqFile(TLogHelper * pLogger, HANDLE hMpq, const char * szFileN
return ERROR_SUCCESS;
}
+static ULONGLONG SFileGetFilePointer(HANDLE hFile)
+{
+ LONG FilePosHi = 0;
+ DWORD FilePosLo;
+
+ FilePosLo = SFileSetFilePointer(hFile, 0, &FilePosHi, FILE_CURRENT);
+ return MAKE_OFFSET64(FilePosHi, FilePosLo);
+}
+
//-----------------------------------------------------------------------------
// Tests
+static int TestSetFilePointer(
+ HANDLE hFile,
+ LONGLONG DeltaPos,
+ ULONGLONG ExpectedPos,
+ DWORD dwMoveMethod,
+ bool bUseFilePosHigh,
+ int nError)
+{
+ ULONGLONG NewPos = 0;
+ LONG DeltaPosHi = (LONG)(DeltaPos >> 32);
+ LONG DeltaPosLo = (LONG)(DeltaPos);
+
+ // If there was an error before, do nothing
+ if(nError == ERROR_SUCCESS)
+ {
+ SFileSetFilePointer(hFile, DeltaPosLo, bUseFilePosHigh ? &DeltaPosHi : NULL, dwMoveMethod);
+ NewPos = SFileGetFilePointer(hFile);
+ if(NewPos != ExpectedPos)
+ nError = ERROR_HANDLE_EOF;
+ }
+
+ return nError;
+}
+
+static int TestSetFilePointers(HANDLE hFile, bool bUseFilePosHigh)
+{
+ LONGLONG FileSize;
+ int nError = ERROR_SUCCESS;
+
+ // We expect the file to be at least 2 pages long
+ FileSize = SFileGetFileSize(hFile, NULL);
+ if(FileSize < 0x2000)
+ return ERROR_NOT_SUPPORTED;
+
+ // Move 0x20 bytes from the beginning. Expected new pos is 0x20
+ nError = TestSetFilePointer(hFile, 0x20, 0x20, FILE_BEGIN, bUseFilePosHigh, nError);
+
+ // Move 0x20 bytes from the current position. Expected new pos is 0x20
+ nError = TestSetFilePointer(hFile, 0x20, 0x40, FILE_CURRENT, bUseFilePosHigh, nError);
+
+ // Move 0x40 bytes back. Because the offset can't be moved to negative position, it will be zero
+ nError = TestSetFilePointer(hFile, -64, 0x00, FILE_CURRENT, bUseFilePosHigh, nError);
+
+ // Move 0x40 bytes before the end of the file
+ nError = TestSetFilePointer(hFile, -64, FileSize-64, FILE_END, bUseFilePosHigh, nError);
+
+ // Move 0x80 bytes forward. Should be at end of file
+ nError = TestSetFilePointer(hFile, 0x80, FileSize, FILE_CURRENT, bUseFilePosHigh, nError);
+
+ return nError;
+}
+
+
static void TestGetFileInfo(
TLogHelper * pLogger,
HANDLE hMpqOrFile,
@@ -2412,6 +2504,54 @@ static int TestOpenFile_OpenById(const char * szPlainName)
return nError;
}
+static int TestOpenFile_OpenByName(const char * szPlainName, const char * szFileName)
+{
+ TLogHelper Logger("OpenFileById", szPlainName);
+ TFileData * pFileData = NULL;
+ HANDLE hFile;
+ HANDLE hMpq;
+ DWORD dwCrc32_1 = 0;
+ DWORD dwCrc32_2 = 0;
+ int nError;
+
+ // Copy the archive so we won't fuck up the original one
+ nError = OpenExistingArchiveWithCopy(&Logger, szPlainName, NULL, &hMpq);
+
+ // Now try to open the given file
+ if(nError == ERROR_SUCCESS)
+ {
+ // Retrieve the CRC32
+ if(SFileOpenFileEx(hMpq, szFileName, 0, &hFile))
+ {
+ SFileGetFileInfo(hFile, SFileInfoCRC32, &dwCrc32_1, sizeof(dwCrc32_1), NULL);
+ SFileCloseFile(hFile);
+ }
+
+ // Load the entire file
+ pFileData = LoadMpqFile(&Logger, hMpq, szFileName);
+ if(pFileData != NULL)
+ {
+ // Compare the CRC32, if available
+ dwCrc32_2 = crc32(0, (Bytef *)pFileData->FileData, (uInt)pFileData->dwFileSize);
+ STORM_FREE(pFileData);
+ }
+ else
+ nError = Logger.PrintError("Failed to load the file %s", szFileName);
+
+ // Compare the CRC32
+ if(nError == ERROR_SUCCESS && dwCrc32_1 && dwCrc32_2)
+ {
+ if(dwCrc32_1 != dwCrc32_2)
+ Logger.PrintError("Warning: CRC32 error on %s", szFileName);
+ }
+ }
+
+ // Close the archive
+ if(hMpq != NULL)
+ SFileCloseArchive(hMpq);
+ return nError;
+}
+
static int TestOpenArchive(const char * szPlainName, const char * szListFile = NULL, bool bDontCopyArchive = false)
{
TLogHelper Logger("OpenMpqTest", szPlainName);
@@ -2441,7 +2581,7 @@ static int TestOpenArchive(const char * szPlainName, const char * szListFile = N
Logger.PrintMessage("Failed to add the listfile to the MPQ");
}
- // Attempt to open the listfile and attributes
+ // Attempt to open the (listfile)
if(SFileHasFile(hMpq, LISTFILE_NAME))
{
pFileData = LoadMpqFile(&Logger, hMpq, LISTFILE_NAME);
@@ -2449,7 +2589,7 @@ static int TestOpenArchive(const char * szPlainName, const char * szListFile = N
STORM_FREE(pFileData);
}
- // Attempt to open the listfile and attributes
+ // Attempt to open the (attributes)
if(SFileHasFile(hMpq, ATTRIBUTES_NAME))
{
pFileData = LoadMpqFile(&Logger, hMpq, ATTRIBUTES_NAME);
@@ -2457,6 +2597,14 @@ static int TestOpenArchive(const char * szPlainName, const char * szListFile = N
STORM_FREE(pFileData);
}
+ // Attempt to open the (signature)
+ if(SFileHasFile(hMpq, SIGNATURE_NAME))
+ {
+ pFileData = LoadMpqFile(&Logger, hMpq, SIGNATURE_NAME);
+ if(pFileData != NULL)
+ STORM_FREE(pFileData);
+ }
+
// Search the archive and load every file
dwTestFlags = bIsPartialMpq ? 0 : TEST_FLAG_LOAD_FILES;
nError = SearchArchive(&Logger, hMpq, dwTestFlags, &dwFileCount);
@@ -2466,6 +2614,101 @@ static int TestOpenArchive(const char * szPlainName, const char * szListFile = N
return nError;
}
+static int TestOpenArchive_SetPos(const char * szPlainName, const char * szFileName)
+{
+ TLogHelper Logger("SetPosTest", szPlainName);
+ HANDLE hFile = NULL;
+ HANDLE hMpq = NULL;
+ TCHAR szMpqName[MAX_PATH];
+ char szFullPath[MAX_PATH];
+ int nError = ERROR_SUCCESS;
+
+ // Create the full path name for the archive
+ CreateFullPathName(szFullPath, szMpqSubDir, szPlainName);
+ CopyFileName(szMpqName, szFullPath, strlen(szFullPath));
+
+ // Try to open the archive. It is expected to fail
+ Logger.PrintProgress("Opening archive %s", szPlainName);
+ if(SFileOpenArchive(szMpqName, 0, MPQ_OPEN_READ_ONLY, &hMpq))
+ {
+ if(SFileOpenFileEx(hMpq, szFileName, 0, &hFile))
+ {
+ // First, use the SFileSetFilePointer WITHOUT the high-dword position
+ if(nError == ERROR_SUCCESS)
+ nError = TestSetFilePointers(hFile, false);
+
+ // First, use the SFileSetFilePointer WITH the high-dword position
+ if(nError == ERROR_SUCCESS)
+ nError = TestSetFilePointers(hFile, false);
+
+ // Close the file
+ SFileCloseFile(hFile);
+ }
+ else
+ nError = GetLastError();
+
+ // Close the archive
+ SFileCloseArchive(hMpq);
+ }
+ else
+ nError = GetLastError();
+
+ return nError;
+}
+
+static int TestOpenArchive_ProtectedMap(const char * szPlainName, const char * szListFile = NULL, DWORD dwExpectedFileCount = 0, const char * szExpectedMD5 = NULL)
+{
+ TLogHelper Logger("ProtectedMapTest", szPlainName);
+ HANDLE hMpq;
+ DWORD dwTestFlags = TEST_FLAG_LOAD_FILES | TEST_FLAG_HASH_FILES;
+ DWORD dwFileCount = 0;
+ BYTE ExpectedMD5[MD5_DIGEST_SIZE];
+ BYTE OverallMD5[MD5_DIGEST_SIZE];
+ char szListFileBuff[MAX_PATH];
+ int nError;
+
+ // Copy the archive so we won't fuck up the original one
+ nError = OpenExistingArchiveWithCopy(&Logger, szPlainName, szPlainName, &hMpq);
+ if(nError == ERROR_SUCCESS)
+ {
+ // If the listfile was given, add it to the MPQ
+ if(szListFile != NULL)
+ {
+ Logger.PrintProgress("Adding listfile %s ...", szListFile);
+ CreateFullPathName(szListFileBuff, szMpqSubDir, szListFile);
+ nError = SFileAddListFile(hMpq, szListFileBuff);
+ if(nError != ERROR_SUCCESS)
+ Logger.PrintMessage("Failed to add the listfile to the MPQ");
+ }
+
+ // Search the archive and load every file
+ nError = SearchArchive(&Logger, hMpq, dwTestFlags, &dwFileCount, OverallMD5);
+ SFileCloseArchive(hMpq);
+ }
+
+ // Check the file count and hash, if required
+ if(nError == ERROR_SUCCESS && dwExpectedFileCount != 0)
+ {
+ if(dwFileCount != dwExpectedFileCount)
+ {
+ Logger.PrintMessage("File count mismatch(expected: %u, found:%u)", dwExpectedFileCount, dwFileCount);
+ nError = ERROR_CAN_NOT_COMPLETE;
+ }
+ }
+
+ // Check the overall hash, if required
+ if(nError == ERROR_SUCCESS && szExpectedMD5 != NULL && szExpectedMD5[0] != 0)
+ {
+ BinaryFromString(szExpectedMD5, ExpectedMD5, MD5_DIGEST_SIZE);
+ if(memcmp(ExpectedMD5, OverallMD5, MD5_DIGEST_SIZE))
+ {
+ Logger.PrintMessage("Extracted files MD5 mismatch");
+ nError = ERROR_CAN_NOT_COMPLETE;
+ }
+ }
+
+ return nError;
+}
// Open an empty archive (found in WoW cache - it's just a header)
static int TestOpenArchive_WillFail(const char * szPlainName)
@@ -2880,10 +3123,12 @@ static int TestOpenArchive_SignExisting(const char * szPlainName)
}
// Open an empty archive (found in WoW cache - it's just a header)
-static int TestOpenArchive_CraftedUserData(const char * szPlainName, const char * szCopyName)
+static int TestOpenArchive_CompactArchive(const char * szPlainName, const char * szCopyName, bool bAddUserData)
{
- TLogHelper Logger("CraftedMpqTest", szPlainName);
- HANDLE hMpq;
+ TLogHelper Logger("CompactMpqTest", szPlainName);
+ ULONGLONG PreMpqDataSize = (bAddUserData) ? 0x400 : 0;
+ ULONGLONG UserDataSize = (bAddUserData) ? 0x531 : 0;
+ HANDLE hMpq;
DWORD dwFileCount1 = 0;
DWORD dwFileCount2 = 0;
BYTE FileHash1[MD5_DIGEST_SIZE];
@@ -2892,7 +3137,7 @@ static int TestOpenArchive_CraftedUserData(const char * szPlainName, const char
int nError;
// Create copy of the archive, with interleaving some user data
- nError = CreateFileCopy(&Logger, szPlainName, szCopyName, szFullPath, 0x400, 0x531);
+ nError = CreateFileCopy(&Logger, szPlainName, szCopyName, szFullPath, PreMpqDataSize, UserDataSize);
// Open the archive and load some files
if(nError == ERROR_SUCCESS)
@@ -4104,11 +4349,11 @@ int main(int argc, char * argv[])
// Not a test, but rather a tool for creating links to duplicated files
// if(nError == ERROR_SUCCESS)
// nError = FindFilePairs(ForEachFile_CreateArchiveLink, "2004 - WoW\\06080", "2004 - WoW\\06299");
-
- // Search all testing archives and verify their SHA1 hash
-// if(nError == ERROR_SUCCESS)
-// nError = FindFiles(ForEachFile_VerifyFileChecksum, szMpqSubDir);
/*
+ // Search all testing archives and verify their SHA1 hash
+ if(nError == ERROR_SUCCESS)
+ nError = FindFiles(ForEachFile_VerifyFileChecksum, szMpqSubDir);
+
// Test sparse compression
if(nError == ERROR_SUCCESS)
nError = TestSparseCompression();
@@ -4177,6 +4422,18 @@ int main(int argc, char * argv[])
if(nError == ERROR_SUCCESS)
nError = TestOpenFile_OpenById("MPQ_1997_v1_Diablo1_DIABDAT.MPQ");
+ // Open the update MPQ from Diablo II (patch 2016)
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenFile_OpenByName("MPQ_2016_v1_D2XP_IX86_1xx_114a.mpq", "waitingroombkgd.dc6");
+
+ // Open a file whose archive's (signature) file has flags = 0x90000000
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_1997_v1_Diablo1_STANDARD.SNP", "ListFile_Blizzard.txt");
+
+ // Test the SFileSetFilePointer operations
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive_SetPos("MPQ_1997_v1_Diablo1_DIABDAT.MPQ", "music\\dtowne.wav");
+
// Open an empty archive (found in WoW cache - it's just a header)
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive("MPQ_2012_v2_EmptyMpq.MPQ");
@@ -4224,10 +4481,10 @@ int main(int argc, char * argv[])
// Open a partial MPQ with compressed hash table
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive("part-file://MPQ_2010_v2_HashTableCompressed.MPQ.part");
-
- if(nError == ERROR_SUCCESS)
- nError = TestOpenArchive("MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x");
-
+*/
+// if(nError == ERROR_SUCCESS)
+// nError = TestOpenArchive_ProtectedMap("MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x", NULL, 114, "5250975ed917375fc6540d7be436d4de");
+/*
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive("MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x");
@@ -4260,10 +4517,46 @@ int main(int argc, char * argv[])
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive("MPQ_2015_v1_ProtectedMap_Spazy.w3x");
+ // Open an Warcraft III map locked by Spazy protector
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2015_v1_MessListFile.mpq");
+*/
// Open an protected map
+// if(nError == ERROR_SUCCESS)
+// nError = TestOpenArchive_ProtectedMap("MPQ_2015_v1_flem1.w3x", NULL, 20, "1c4c13e627658c473e84d94371e31f37");
+/*
+ // Open another protected map
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x");
+
+ // Open another protected map
if(nError == ERROR_SUCCESS)
- nError = TestOpenArchive("MPQ_2015_v1_flem1.w3x");
+ nError = TestOpenArchive("MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x");
+ // Something like Somj 2.0
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2016_v1_ProtectedMap_Somj2.w3x");
+
+ // Protector from China (2016-05-27)
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2016_v1_WME4_4.w3x");
+
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2016_v1_SP_(4)Adrenaline.w3x");
+
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2016_v1_ProtectedMap_1.4.w3x");
+
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive("MPQ_2016_v1_KoreanFile.w3m");
+*/
+// if(nError == ERROR_SUCCESS)
+// nError = TestOpenArchive_ProtectedMap("MPQ_2016_v1_ProtectedMap123.w3x", NULL, 17, "23b09ad3b8d89ec97df8860447abc7eb");
+
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive_ProtectedMap("MPQ_2016_v1_UnableToOpen.w3x", NULL, 17, "23b09ad3b8d89ec97df8860447abc7eb");
+
+/*
// Open the multi-file archive with wrong prefix to see how StormLib deals with it
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive_WillFail("flat-file://streaming/model.MPQ.0");
@@ -4303,17 +4596,21 @@ int main(int argc, char * argv[])
// Open a patched archive with new format of BSDIFF patch
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive_Patched(PatchList_SC2_34644_Maps, "Maps\\Campaign\\THorner03.SC2Map\\BankList.xml", 3);
-*/
+
// Open a patched archive
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive_Patched(PatchList_SC2_32283_enGB, "LocalizedData\\GameHotkeys.txt", 0, true);
-/*
- // Open a patched archive where the "StreamingBuckets.txt" is not a patch file
+
+ // Open a patched archive where the "StreamingBuckets.txt" in the patch doesn't contain MPQ_FILE_PATCH_FILE
if(nError == ERROR_SUCCESS)
nError = TestOpenArchive_Patched(PatchList_SC2_36281_enGB, "LocalizedData\\GameHotkeys.txt", 6);
// Open a patched archive
if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive_Patched(PatchList_HS_3604_enGB, "Hearthstone.exe", 1);
+
+ // Open a patched archive
+ if(nError == ERROR_SUCCESS)
nError = TestOpenArchive_Patched(PatchList_HS_6898_enGB, "Hearthstone_Data\\Managed\\Assembly-Csharp.dll", 10);
// Check the opening archive for read-only
@@ -4338,6 +4635,9 @@ int main(int argc, char * argv[])
// Check archive signature
if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive_VerifySignature("MPQ_1997_v1_Diablo1_STANDARD.SNP", "STANDARD.SNP");
+
+ if(nError == ERROR_SUCCESS)
nError = TestOpenArchive_VerifySignature("MPQ_1999_v1_WeakSignature.exe", "War2Patch_202.exe");
if(nError == ERROR_SUCCESS)
@@ -4349,15 +4649,19 @@ int main(int argc, char * argv[])
// Compact the archive
if(nError == ERROR_SUCCESS)
- nError = TestOpenArchive_CraftedUserData("MPQ_2010_v3_expansion-locale-frFR.MPQ", "StormLibTest_CraftedMpq1_v3.mpq");
+ nError = TestOpenArchive_CompactArchive("MPQ_2010_v3_expansion-locale-frFR.MPQ", "StormLibTest_CraftedMpq1_v3.mpq", true);
+
+ // Compact the archive
+ if(nError == ERROR_SUCCESS)
+ nError = TestOpenArchive_CompactArchive("MPQ_2016_v1_00000.pak", "MPQ_2016_v1_00000.pak", false);
// Open a MPQ (add custom user data to it)
if(nError == ERROR_SUCCESS)
- nError = TestOpenArchive_CraftedUserData("MPQ_2013_v4_SC2_EmptyMap.SC2Map", "StormLibTest_CraftedMpq2_v4.mpq");
+ nError = TestOpenArchive_CompactArchive("MPQ_2013_v4_SC2_EmptyMap.SC2Map", "StormLibTest_CraftedMpq2_v4.mpq", true);
// Open a MPQ (add custom user data to it)
if(nError == ERROR_SUCCESS)
- nError = TestOpenArchive_CraftedUserData("MPQ_2013_v4_expansion1.MPQ", "StormLibTest_CraftedMpq3_v4.mpq");
+ nError = TestOpenArchive_CompactArchive("MPQ_2013_v4_expansion1.MPQ", "StormLibTest_CraftedMpq3_v4.mpq", true);
if(nError == ERROR_SUCCESS)
nError = TestAddFile_FullTable("MPQ_2014_v1_out1.w3x");