diff options
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 Binary files differdeleted file mode 100644 index d4daca0..0000000 --- a/storm_dll/storm.dll +++ /dev/null diff --git a/storm_dll/storm.lib b/storm_dll/storm.lib Binary files differindex 299a6d4..ce5f3f4 100644 --- a/storm_dll/storm.lib +++ b/storm_dll/storm.lib 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");
|