mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-10-27 11:06:50 +01:00 
			
		
		
		
	added Zip to trunk
This commit is contained in:
		
							
								
								
									
										20
									
								
								Zip/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Zip/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | # | ||||||
|  | # Makefile | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/Makefile#2 $ | ||||||
|  | # | ||||||
|  | # Makefile for Poco Zip | ||||||
|  | # | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/global | ||||||
|  |  | ||||||
|  | objects = AutoDetectStream Compress Decompress ParseCallback PartialStream \ | ||||||
|  | 	SkipCallback ZipArchive ZipArchiveInfo ZipDataInfo \ | ||||||
|  | 	ZipFileInfo ZipLocalFileHeader ZipStream ZipUtil ZipCommon ZipException \ | ||||||
|  | 	Add Delete Keep Rename Replace ZipManipulator ZipOperation | ||||||
|  |  | ||||||
|  | target         = PocoZip | ||||||
|  | target_version = $(LIBVERSION) | ||||||
|  | target_libs    = PocoFoundation | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/lib | ||||||
							
								
								
									
										16
									
								
								Zip/Zip.vmsbuild
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Zip/Zip.vmsbuild
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | # | ||||||
|  | # Zip.vmsbuild | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/Zip.vmsbuild#1 $ | ||||||
|  | # | ||||||
|  | LIB=PocoZip | ||||||
|  | Decompress | ||||||
|  | ParseCallback | ||||||
|  | PartialStream | ||||||
|  | SkipCallback | ||||||
|  | ZipArchive | ||||||
|  | ZipArchiveInfo | ||||||
|  | ZipFileInfo | ||||||
|  | ZipLocalFileHeader | ||||||
|  | ZipStream | ||||||
|  | ZipUtil | ||||||
							
								
								
									
										30
									
								
								Zip/Zip_VS71.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Zip/Zip_VS71.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | Microsoft Visual Studio Solution File, Format Version 8.00 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Zip", "Zip_VS71.vcproj", "{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS71.vcproj", "{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61} = {4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61} | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfiguration) = preSolution | ||||||
|  | 		debug_shared = debug_shared | ||||||
|  | 		release_shared = release_shared | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfiguration) = postSolution | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.debug_shared.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.debug_shared.Build.0 = debug_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.release_shared.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.release_shared.Build.0 = release_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.debug_shared.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.debug_shared.Build.0 = debug_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.release_shared.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.release_shared.Build.0 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityAddIns) = postSolution | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										307
									
								
								Zip/Zip_VS71.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										307
									
								
								Zip/Zip_VS71.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,307 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="7.10" | ||||||
|  | 	Name="Zip" | ||||||
|  | 	ProjectGUID="{4ac75ead-bfcf-41e6-ab1f-0da203cc7c61}" | ||||||
|  | 	RootNamespace="Zip" | ||||||
|  | 	Keyword="Win32Proj"> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32"/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\Foundation\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_DLL;Zip_EXPORTS" | ||||||
|  | 				StringPooling="TRUE" | ||||||
|  | 				MinimalRebuild="TRUE" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="TRUE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 				CompileAs="0"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib" | ||||||
|  | 				OutputFile="..\bin\PocoZipd.dll" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				SuppressStartupBanner="TRUE" | ||||||
|  | 				AdditionalLibraryDirectories="..\lib" | ||||||
|  | 				GenerateDebugInformation="TRUE" | ||||||
|  | 				ProgramDatabaseFile="..\bin\PocoZipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeForWindows98="1" | ||||||
|  | 				ImportLibrary="..\lib\PocoZipd.lib" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="TRUE" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="TRUE" | ||||||
|  | 				OptimizeForProcessor="3" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\Foundation\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_DLL;Zip_EXPORTS" | ||||||
|  | 				GeneratePreprocessedFile="0" | ||||||
|  | 				KeepComments="FALSE" | ||||||
|  | 				StringPooling="TRUE" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="FALSE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="0" | ||||||
|  | 				CompileAs="0"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib" | ||||||
|  | 				OutputFile="..\bin\PocoZip.dll" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				SuppressStartupBanner="TRUE" | ||||||
|  | 				AdditionalLibraryDirectories="..\lib" | ||||||
|  | 				GenerateDebugInformation="FALSE" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				OptimizeForWindows98="1" | ||||||
|  | 				ImportLibrary="..\lib\PocoZip.lib" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Zip" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\AutoDetectStream.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Compress.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Decompress.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ParseCallback.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\PartialStream.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\SkipCallback.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Zip.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipArchive.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipArchiveInfo.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipCommon.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipDataInfo.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipException.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipFileInfo.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipLocalFileHeader.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipStream.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipUtil.h"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\AutoDetectStream.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Compress.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Decompress.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ParseCallback.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStream.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\SkipCallback.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipArchive.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipArchiveInfo.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipCommon.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipDataInfo.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipException.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipFileInfo.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipLocalFileHeader.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipStream.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipUtil.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Manipulation" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Add.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Delete.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Keep.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Rename.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Replace.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipManipulator.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipOperation.h"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Add.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Delete.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Keep.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Rename.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Replace.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipManipulator.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipOperation.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										28
									
								
								Zip/Zip_VS80.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Zip/Zip_VS80.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | Microsoft Visual Studio Solution File, Format Version 9.00 | ||||||
|  | # Visual Studio 2005 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Zip", "Zip_VS80.vcproj", "{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}" | ||||||
|  | EndProject | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS80.vcproj", "{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61} = {4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61} | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		debug_shared|Win32 = debug_shared|Win32 | ||||||
|  | 		release_shared|Win32 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										413
									
								
								Zip/Zip_VS80.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										413
									
								
								Zip/Zip_VS80.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,413 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="8,00" | ||||||
|  | 	Name="Zip" | ||||||
|  | 	ProjectGUID="{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}" | ||||||
|  | 	RootNamespace="Zip" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\Foundation\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_DLL;Zip_EXPORTS" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 				CompileAs="0" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib" | ||||||
|  | 				OutputFile="..\bin\PocoZipd.dll" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				SuppressStartupBanner="true" | ||||||
|  | 				AdditionalLibraryDirectories="..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="..\bin\PocoZipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeForWindows98="1" | ||||||
|  | 				ImportLibrary="..\lib\PocoZipd.lib" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\Foundation\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_DLL;Zip_EXPORTS" | ||||||
|  | 				GeneratePreprocessedFile="0" | ||||||
|  | 				KeepComments="false" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="0" | ||||||
|  | 				CompileAs="0" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib" | ||||||
|  | 				OutputFile="..\bin\PocoZip.dll" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				SuppressStartupBanner="true" | ||||||
|  | 				AdditionalLibraryDirectories="..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				OptimizeForWindows98="1" | ||||||
|  | 				ImportLibrary="..\lib\PocoZip.lib" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Zip" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\AutoDetectStream.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Compress.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Decompress.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ParseCallback.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\PartialStream.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\SkipCallback.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Zip.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipArchive.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipArchiveInfo.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipCommon.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipDataInfo.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipException.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipFileInfo.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipLocalFileHeader.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipStream.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipUtil.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\AutoDetectStream.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Compress.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Decompress.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ParseCallback.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStream.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\SkipCallback.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipArchive.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipArchiveInfo.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipCommon.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipDataInfo.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipException.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipFileInfo.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipLocalFileHeader.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipStream.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipUtil.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Manipulation" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Add.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Delete.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Keep.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Rename.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Replace.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipManipulator.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipOperation.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Add.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Delete.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Keep.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Rename.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Replace.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipManipulator.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipOperation.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										28
									
								
								Zip/Zip_vs90.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Zip/Zip_vs90.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | Microsoft Visual Studio Solution File, Format Version 10.00 | ||||||
|  | # Visual Studio 2008 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Zip", "Zip_vs90.vcproj", "{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}" | ||||||
|  | EndProject | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs90.vcproj", "{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61} = {4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61} | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		debug_shared|Win32 = debug_shared|Win32 | ||||||
|  | 		release_shared|Win32 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										413
									
								
								Zip/Zip_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										413
									
								
								Zip/Zip_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,413 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="9.00" | ||||||
|  | 	Name="Zip" | ||||||
|  | 	ProjectGUID="{4AC75EAD-BFCF-41E6-AB1F-0DA203CC7C61}" | ||||||
|  | 	RootNamespace="Zip" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\Foundation\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_DLL;Zip_EXPORTS" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 				CompileAs="0" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib" | ||||||
|  | 				OutputFile="..\bin\PocoZipd.dll" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				SuppressStartupBanner="true" | ||||||
|  | 				AdditionalLibraryDirectories="..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="..\bin\PocoZipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeForWindows98="0" | ||||||
|  | 				ImportLibrary="..\lib\PocoZipd.lib" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\Foundation\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_DLL;Zip_EXPORTS" | ||||||
|  | 				GeneratePreprocessedFile="0" | ||||||
|  | 				KeepComments="false" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="0" | ||||||
|  | 				CompileAs="0" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib" | ||||||
|  | 				OutputFile="..\bin\PocoZip.dll" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				SuppressStartupBanner="true" | ||||||
|  | 				AdditionalLibraryDirectories="..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				OptimizeForWindows98="0" | ||||||
|  | 				ImportLibrary="..\lib\PocoZip.lib" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Zip" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\AutoDetectStream.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Compress.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Decompress.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ParseCallback.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\PartialStream.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\SkipCallback.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Zip.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipArchive.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipArchiveInfo.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipCommon.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipDataInfo.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipException.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipFileInfo.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipLocalFileHeader.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipStream.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipUtil.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\AutoDetectStream.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Compress.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Decompress.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ParseCallback.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStream.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\SkipCallback.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipArchive.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipArchiveInfo.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipCommon.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipDataInfo.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipException.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipFileInfo.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipLocalFileHeader.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipStream.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipUtil.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Manipulation" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Add.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Delete.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Keep.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Rename.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\Replace.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipManipulator.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\include\Poco\Zip\ZipOperation.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Add.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Delete.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Keep.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Rename.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\Replace.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipManipulator.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipOperation.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										4
									
								
								Zip/dependencies
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Zip/dependencies
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | Foundation | ||||||
|  | Net | ||||||
|  | Util | ||||||
|  | XML | ||||||
							
								
								
									
										1636
									
								
								Zip/doc/ZIP Spec.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1636
									
								
								Zip/doc/ZIP Spec.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										161
									
								
								Zip/doc/ZipUserGuide.page
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								Zip/doc/ZipUserGuide.page
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | |||||||
|  | POCO Zip User Guide | ||||||
|  | Zip | ||||||
|  |  | ||||||
|  | !!!Introduction | ||||||
|  | POCO Zip adds support for parsing and creating Zip files. It offers the following features: | ||||||
|  |   * decompress from local files | ||||||
|  |   * decompress from network files while they are downloaded | ||||||
|  |   * compress to local files | ||||||
|  |   * compress directly to a network destination | ||||||
|  |  | ||||||
|  | !!Restrictions | ||||||
|  |   * POCO Zip does not support the DEFLATE64 algorithm. | ||||||
|  |   * encrypted files are not supported | ||||||
|  |    | ||||||
|  | !!!Main Classes | ||||||
|  | Most users will work with two common classes: <*Compress*> and <*Decompress*> | ||||||
|  |  | ||||||
|  | !!Compress | ||||||
|  | Compress is a helper class that simplifies creation of Zip files. | ||||||
|  | Creating a Zip file is a basically a three-step process: | ||||||
|  |   * Create the Compress object: Specify the output stream and define if it is seekable (set to true for local files, to false for network files) | ||||||
|  |  | ||||||
|  |      Compress(std::ostream& out, bool seekableOut); | ||||||
|  | ---- | ||||||
|  |   * Add entries: either add single files or directory entries | ||||||
|  |    | ||||||
|  |     void addFile(std::istream& input,  | ||||||
|  |                  const Poco::DateTime& lastModifiedAt,  | ||||||
|  |                  const Poco::Path& fileName,  | ||||||
|  |                  ZipCommon::CompressionMethod cm = ZipCommon::CM_DEFLATE,  | ||||||
|  |                  ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM); | ||||||
|  |         /// Adds a single file to the Zip File. fileName must not be a directory name. | ||||||
|  |  | ||||||
|  |     void addFile(const Poco::Path& file,  | ||||||
|  |                  const Poco::Path& fileName,  | ||||||
|  |                  ZipCommon::CompressionMethod cm = ZipCommon::CM_DEFLATE,  | ||||||
|  |                  ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM); | ||||||
|  |         /// Adds a single file to the Zip File. fileName must not be a directory name. The file must exist physically! | ||||||
|  |  | ||||||
|  |     void addDirectory(const Poco::Path& entryName, const Poco::DateTime& lastModifiedAt); | ||||||
|  |         /// Adds a directory entry excluding all children to the Zip file, entryName must not be empty. | ||||||
|  |  | ||||||
|  |     void addRecursive(const Poco::Path& entry,  | ||||||
|  |                       ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM,  | ||||||
|  |                       bool excludeRoot = true,  | ||||||
|  |                       const Poco::Path& name = Poco::Path()); | ||||||
|  |         /// Adds a directory entry recursively to the zip file, set excludeRoot to false to exclude the parent directory. | ||||||
|  |         /// The name specifies under which path the entries are added in the Zip file. | ||||||
|  | ---- | ||||||
|  | Note that one must always define a name when adding a file entry, otherwise the compresser can not decide if the file should be added with an absolute or a relative path.  | ||||||
|  | Assume you are adding the file <*c:\\data\\hello.txt*> twice to a Zip: | ||||||
|  |  | ||||||
|  |     // MUST use binary! | ||||||
|  |     std::ofstream out("test.zip", std::ios::binary); | ||||||
|  |     Compress c(out, true); | ||||||
|  |     Poco::Path aFile("c:\\data\\hello.txt"); | ||||||
|  |     c.addFile(theFile, "hello.txt"); | ||||||
|  |     c.addFile(theFile, theFile); | ||||||
|  |     c.close(); // MUST be done to finalize the Zip file | ||||||
|  | ---- | ||||||
|  | A Zip file stores entries internally in UNIX path style. The Zip file created above will contain the following entries: | ||||||
|  |  | ||||||
|  |     hello.txt | ||||||
|  |     data/ | ||||||
|  |     data/hello.txt | ||||||
|  | ---- | ||||||
|  | The directory entry <*data/*> was automatically added. | ||||||
|  |  | ||||||
|  | When adding directories recursively, the same principle applies. You specify the root directory that should be added and an optional path name where entries are added in the Zip file. | ||||||
|  | Assume you have the following directory structure: | ||||||
|  |  | ||||||
|  |      data/ | ||||||
|  |         run1/ | ||||||
|  |             result1.txt | ||||||
|  |         run2/ | ||||||
|  |             result2.txt | ||||||
|  | ---- | ||||||
|  | The following call will add all subdirectories and all files of data to the Zip but not the root entry <*data*>: | ||||||
|  |  | ||||||
|  |     Poco::Path data("data"); | ||||||
|  |     data.makeDirectory(); | ||||||
|  |     c.addRecursive(data); | ||||||
|  | ---- | ||||||
|  | Or if you want the files to be added under the directory name <*20070401*> (you basically <*rename*> data to 20070401): | ||||||
|  |  | ||||||
|  |     Poco::Path data("data"); | ||||||
|  |     Poco::Path name("20070401); | ||||||
|  |     data.makeDirectory(); | ||||||
|  |     name.makeDirectory(); | ||||||
|  |     c.addRecursive(data, ZipCommon::CL_NORMAL, false, name); | ||||||
|  | ---- | ||||||
|  | Note that <*makeDirectory*> does not create a directory, it simply assures that the Path is treated as a directory not as a file. | ||||||
|  | Also using NORMAL compression instead of MAXIMUM (which is the default) has the benefit of improved performance. | ||||||
|  | To get notified about the entries that are added during <*addRecursive*> register to the <!EDone!> event of the Compress object: | ||||||
|  |  | ||||||
|  |     Poco::FIFOEvent<const ZipLocalFileHeader> EDone; | ||||||
|  | ---- | ||||||
|  |   * Closing the Zip file: It is mandatory to manually close Compress objects. This guarantees that the Zip directory is written, thus creating a valid Zip file. It is safe to call <*close*> multiple times, only the first call takes effect. | ||||||
|  |    | ||||||
|  |     ZipArchive close(); | ||||||
|  | ---- | ||||||
|  | <*close*> returns a ZipArchive which describes all entries inside a Zip file. | ||||||
|  |  | ||||||
|  | !!Decompress | ||||||
|  | Decompress can be used to decompress all files from a Zip file or to decompress single files only. | ||||||
|  |  | ||||||
|  | !Decompress All | ||||||
|  | The following sample code shows how all entries can be extracted from a Zip file: | ||||||
|  |  | ||||||
|  |     std::ifstream inp("test.zip", std::ios::binary); | ||||||
|  |     poco_assert (inp); | ||||||
|  |     // decompress to current working dir | ||||||
|  |     Decompress dec(inp, Poco::Path());  | ||||||
|  |     // if an error happens invoke the ZipTest::onDecompressError method | ||||||
|  |     dec.EError += Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  |     dec.decompressAllFiles(); | ||||||
|  |     dec.EError -= Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | ---- | ||||||
|  | The onDecompressError method: | ||||||
|  |  | ||||||
|  |     void ZipTest::onDecompressError(const void* pSender, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string>& info) | ||||||
|  |     { | ||||||
|  |         // inform user about error | ||||||
|  |         [...] | ||||||
|  |     } | ||||||
|  | ---- | ||||||
|  | Decompressing directly from the net works similar: | ||||||
|  |  | ||||||
|  |     Poco::URI uri("http://www.appinf.com/test.zip"); | ||||||
|  |     HTTPClientSession session(uri.getHost(), uri.getPort()); | ||||||
|  |     HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1); | ||||||
|  |     session.sendRequest(req); | ||||||
|  |     HTTPResponse res; | ||||||
|  |     std::istream& rs = session.receiveResponse(res); | ||||||
|  |     Decompress dec(rs, Poco::Path()); | ||||||
|  |     // if an error happens invoke the ZipTest::onDecompressError method | ||||||
|  |     dec.EError += Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  |     dec.decompressAllFiles(); | ||||||
|  |     dec.EError -= Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | ---- | ||||||
|  | Furthermore, Decompress supports additional parameters: | ||||||
|  |  | ||||||
|  |     Decompress(std::istream& in, const Poco::Path& outputDir, bool flattenDirs = false, bool keepIncompleteFiles = false); | ||||||
|  | ---- | ||||||
|  | If <*flattenDirs*> is set to true no subdirs are extracted, if <*keepIncompleteFiles*> is set to true, corrupt files (i.e. wrong CRC, wrong size on disk) will not be deleted. | ||||||
|  |  | ||||||
|  | !Decompress Single Files | ||||||
|  | To decompress single files you must first parse a Zip file, and then decompress the file which happens transparently inside the <*ZipInputStream*>: | ||||||
|  |  | ||||||
|  |     std::ifstream inp("test.zip", std::ios::binary); | ||||||
|  |     poco_assert (inp); | ||||||
|  |     ZipArchive arch(inp); | ||||||
|  |     ZipArchive::FileHeaders::const_iterator it = arch.findHeader("data/hello.txt"); | ||||||
|  |     poco_assert (it != arch.headerEnd()); | ||||||
|  |     ZipInputStream zipin (inp, it->second); | ||||||
|  |     std::ostringstream out(std::ios::binary); | ||||||
|  |     Poco::StreamCopier::copyStream(zipin, out); | ||||||
|  | ---- | ||||||
|  | Note that this will only work with local files which allow us to seek inside the file. | ||||||
|  | Directly extracting single entries from a network file is currently not possible via the Decompress class. | ||||||
|  |  | ||||||
							
								
								
									
										73
									
								
								Zip/include/Poco/Zip/Add.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								Zip/include/Poco/Zip/Add.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | // | ||||||
|  | // Add.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Add.h#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Add | ||||||
|  | // | ||||||
|  | // Definition of the Add class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Add_INCLUDED | ||||||
|  | #define Zip_Add_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Add: public ZipOperation | ||||||
|  | 	/// Operation Add adds a new file entry to an existing Zip File | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Add(const std::string& zipPath, const std::string& localPath, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl); | ||||||
|  | 		/// Creates the Add. | ||||||
|  |  | ||||||
|  | 	void execute(Compress& c, std::istream& input); | ||||||
|  | 		/// Performs the add operation | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	const std::string _zipPath; | ||||||
|  | 	const std::string _localPath; | ||||||
|  | 	const ZipCommon::CompressionMethod _cm; | ||||||
|  | 	const ZipCommon::CompressionLevel _cl; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Add_INCLUDED | ||||||
							
								
								
									
										152
									
								
								Zip/include/Poco/Zip/AutoDetectStream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								Zip/include/Poco/Zip/AutoDetectStream.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,152 @@ | |||||||
|  | // | ||||||
|  | // AutoDetectStream.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/AutoDetectStream.h#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  AutoDetectStream | ||||||
|  | // | ||||||
|  | // Definition of the AutoDetectStream class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_AutoDetectStream_INCLUDED | ||||||
|  | #define Zip_AutoDetectStream_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/BufferedStreamBuf.h" | ||||||
|  | #include <istream> | ||||||
|  | #include <ostream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API AutoDetectStreamBuf: public Poco::BufferedStreamBuf | ||||||
|  | 	/// A AutoDetectStreamBuf is a class that limits one view on an inputstream to a selected view range | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	AutoDetectStreamBuf(std::istream& in, const std::string& prefix, const std::string& postfix, bool reposition, Poco::UInt32 start); | ||||||
|  | 		/// Creates the AutoDetectStream.  | ||||||
|  | 		 | ||||||
|  |  | ||||||
|  | 	AutoDetectStreamBuf(std::ostream& out); | ||||||
|  | 		/// Creates the AutoDetectStream.  | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access, and the stream will be repositioned | ||||||
|  | 		/// to position start | ||||||
|  |  | ||||||
|  | 	~AutoDetectStreamBuf(); | ||||||
|  | 		/// Destroys the AutoDetectStream. | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	int readFromDevice(char* buffer, std::streamsize length); | ||||||
|  |  | ||||||
|  | 	int writeToDevice(const char* buffer, std::streamsize length); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum  | ||||||
|  | 	{ | ||||||
|  | 		STREAM_BUFFER_SIZE  = 1024 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	std::istream*  _pIstr; | ||||||
|  | 	std::ostream*  _pOstr; | ||||||
|  | 	bool           _eofDetected; | ||||||
|  | 	int            _matchCnt; | ||||||
|  | 	std::string    _prefix; | ||||||
|  | 	std::string    _postfix; | ||||||
|  | 	bool           _reposition; | ||||||
|  | 	Poco::UInt32   _start; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API AutoDetectIOS: public virtual std::ios | ||||||
|  | 	/// The base class for AutoDetectInputStream and AutoDetectOutputStream. | ||||||
|  | 	/// | ||||||
|  | 	/// This class is needed to ensure the correct initialization | ||||||
|  | 	/// order of the stream buffer and base classes. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	AutoDetectIOS(std::istream& istr, const std::string& prefix, const std::string& postfix, bool reposition, Poco::UInt32 start); | ||||||
|  | 		/// Creates the basic stream and connects it | ||||||
|  | 		/// to the given input stream. | ||||||
|  |  | ||||||
|  | 	AutoDetectIOS(std::ostream& ostr); | ||||||
|  | 		/// Creates the basic stream and connects it | ||||||
|  | 		/// to the given output stream. | ||||||
|  |  | ||||||
|  | 	~AutoDetectIOS(); | ||||||
|  | 		/// Destroys the stream. | ||||||
|  |  | ||||||
|  | 	AutoDetectStreamBuf* rdbuf(); | ||||||
|  | 		/// Returns a pointer to the underlying streambuf. | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	AutoDetectStreamBuf _buf; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API AutoDetectInputStream: public AutoDetectIOS, public std::istream | ||||||
|  | 	/// This stream copies all characters read through it | ||||||
|  | 	/// to one or multiple output streams. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	AutoDetectInputStream(std::istream& istr, const std::string& prefix = std::string(), const std::string& postfix = std::string(), bool reposition = false, Poco::UInt32 start = 0); | ||||||
|  | 		/// Creates the AutoDetectInputStream and connects it | ||||||
|  | 		/// to the given input stream. Bytes read are guaranteed to be in the range [start, end-1] | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access, and the stream will be repositioned | ||||||
|  | 		/// to position start | ||||||
|  |  | ||||||
|  | 	~AutoDetectInputStream(); | ||||||
|  | 		/// Destroys the AutoDetectInputStream. | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API AutoDetectOutputStream: public AutoDetectIOS, public std::ostream | ||||||
|  | 	/// This stream copies all characters written to it | ||||||
|  | 	/// to one or multiple output streams. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	AutoDetectOutputStream(std::ostream& ostr); | ||||||
|  | 		/// Creates the AutoDetectOutputStream and connects it | ||||||
|  | 		/// to the given input stream. Bytes written are guaranteed to be in the range [start, end-1] | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access, and the stream will be repositioned | ||||||
|  | 		/// to position start | ||||||
|  |  | ||||||
|  | 	~AutoDetectOutputStream(); | ||||||
|  | 		/// Destroys the AutoDetectOutputStream. | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_AutoDetectStream_INCLUDED | ||||||
							
								
								
									
										112
									
								
								Zip/include/Poco/Zip/Compress.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								Zip/include/Poco/Zip/Compress.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | |||||||
|  | // | ||||||
|  | // Compress.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Compress.h#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  Compress | ||||||
|  | // | ||||||
|  | // Definition of the Compress class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Compress_INCLUDED | ||||||
|  | #define Zip_Compress_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/FIFOEvent.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Compress | ||||||
|  | 	/// Compresses a directory or files as zip. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Poco::FIFOEvent<const ZipLocalFileHeader> EDone; | ||||||
|  |  | ||||||
|  | 	Compress(std::ostream& out, bool seekableOut); | ||||||
|  | 		/// seekableOut determines how we write the zip, setting it to true is recommended for local files (smaller zip file), | ||||||
|  | 		/// if you are compressing directly to a network, you MUST set it to false | ||||||
|  |  | ||||||
|  | 	~Compress(); | ||||||
|  |  | ||||||
|  | 	void addFile(std::istream& input, const Poco::DateTime& lastModifiedAt, const Poco::Path& fileName, ZipCommon::CompressionMethod cm = ZipCommon::CM_DEFLATE, ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM); | ||||||
|  | 		/// Adds a single file to the Zip File. fileName must not be a directory name. | ||||||
|  |  | ||||||
|  | 	void addFile(const Poco::Path& file, const Poco::Path& fileName, ZipCommon::CompressionMethod cm = ZipCommon::CM_DEFLATE, ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM); | ||||||
|  | 		/// Adds a single file to the Zip File. fileName must not be a directory name. The file must exist physically! | ||||||
|  |  | ||||||
|  | 	void addDirectory(const Poco::Path& entryName, const Poco::DateTime& lastModifiedAt); | ||||||
|  | 		/// Adds a directory entry excluding all children to the Zip file, entryName must not be empty. | ||||||
|  |  | ||||||
|  | 	void addRecursive(const Poco::Path& entry, ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM, bool excludeRoot = true, const Poco::Path& name = Poco::Path()); | ||||||
|  | 		/// Adds a directory entry recursively to the zip file, set excludeRoot to false to exclude the parent directory. | ||||||
|  | 		/// If excludeRoot is true you can specify an empty name to add the files as relative files | ||||||
|  |  | ||||||
|  | 	ZipArchive close(); | ||||||
|  | 		/// Finalizes the ZipArchive, closes it. | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		COMPRESS_CHUNK_SIZE = 8192 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	Compress(const Compress&); | ||||||
|  | 	Compress& operator=(const Compress&); | ||||||
|  |  | ||||||
|  | 	void addEntry(std::istream& input, const Poco::DateTime& lastModifiedAt, const Poco::Path& fileName, ZipCommon::CompressionMethod cm = ZipCommon::CM_DEFLATE, ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM); | ||||||
|  | 		/// Either adds a file or a single directory entry (excluding subchildren) to the Zip file. the compression level will be ignored | ||||||
|  | 		/// for directories. | ||||||
|  |  | ||||||
|  | 	void addFileRaw(std::istream& in, const ZipLocalFileHeader& hdr, const Poco::Path& fileName); | ||||||
|  | 		/// copys an already compressed ZipEntry from in | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	std::ostream&              _out; | ||||||
|  | 	bool                       _seekableOut; | ||||||
|  | 	ZipArchive::FileHeaders    _files; | ||||||
|  | 	ZipArchive::FileInfos      _infos; | ||||||
|  | 	ZipArchive::DirectoryInfos _dirs; | ||||||
|  | 	Poco::UInt32               _offset; | ||||||
|  |  | ||||||
|  | 	friend class Keep; | ||||||
|  | 	friend class Rename; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Compress_INCLUDED | ||||||
							
								
								
									
										111
									
								
								Zip/include/Poco/Zip/Decompress.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								Zip/include/Poco/Zip/Decompress.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | // | ||||||
|  | // Decompress.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Decompress.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  Decompress | ||||||
|  | // | ||||||
|  | // Definition of the Decompress class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Decompress_INCLUDED | ||||||
|  | #define Zip_Decompress_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ParseCallback.h" | ||||||
|  | #include "Poco/Path.h" | ||||||
|  | #include "Poco/FIFOEvent.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipArchive; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Decompress: public ParseCallback | ||||||
|  | 	/// Decompress extracts files from zip files, can be used to extract single files or all files | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	typedef std::map<std::string, Poco::Path> ZipMapping; | ||||||
|  | 		/// Maps key of FileInfo entries to their local decompressed representation | ||||||
|  | 	Poco::FIFOEvent<std::pair<const ZipLocalFileHeader, const std::string> > EError; | ||||||
|  | 		/// Thrown whenever an error is detected when handling a ZipLocalFileHeader entry. The string contains an error message | ||||||
|  | 	Poco::FIFOEvent<std::pair<const ZipLocalFileHeader, const Poco::Path> > EOk; | ||||||
|  | 		/// Thrown whenever a file was successfully decompressed | ||||||
|  |  | ||||||
|  | 	Decompress(std::istream& in, const Poco::Path& outputDir, bool flattenDirs = false, bool keepIncompleteFiles = false); | ||||||
|  | 		/// Creates the Decompress. Note that istream must be good and at the very beginning of the file! | ||||||
|  | 		/// Calling decompressAllFiles will cause the stream to be in state failed once the zip file is processed. | ||||||
|  | 		/// outputDir must be a directory. If it doesn't exist yet, it will be automatically created. | ||||||
|  | 		/// If flattenDirs is set to true, the directory structure of the zip file is not recreated.  | ||||||
|  | 		/// Instead, all files are extracted into one single directory. | ||||||
|  |  | ||||||
|  | 	~Decompress(); | ||||||
|  | 		/// Destroys the Decompress. | ||||||
|  |  | ||||||
|  | 	ZipArchive decompressAllFiles(); | ||||||
|  | 		/// Decompresses all files stored in the zip File. Can only be called once per Decompress object. | ||||||
|  | 		/// Use mapping to retrieve the location of the decompressed files | ||||||
|  |  | ||||||
|  | 	bool handleZipEntry(std::istream& zipStream, const ZipLocalFileHeader& hdr); | ||||||
|  |  | ||||||
|  | 	const ZipMapping& mapping() const; | ||||||
|  | 		/// A ZipMapping stores as key the full name of the ZipFileInfo/ZipLocalFileHeader and as value the decompressed file | ||||||
|  | 		/// If for a ZipFileInfo no mapping exists, there was an error during decompression and the entry is considered to be corrupt | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	Decompress(const Decompress&); | ||||||
|  | 	Decompress& operator=(const Decompress&); | ||||||
|  |  | ||||||
|  | 	void onOk(const void*, std::pair<const ZipLocalFileHeader, const Poco::Path>& val); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	std::istream& _in; | ||||||
|  | 	Poco::Path    _outDir; | ||||||
|  | 	bool          _flattenDirs; | ||||||
|  | 	bool          _keepIncompleteFiles; | ||||||
|  | 	ZipMapping    _mapping; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const Decompress::ZipMapping& Decompress::mapping() const | ||||||
|  | { | ||||||
|  | 	return _mapping; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Decompress_INCLUDED | ||||||
							
								
								
									
										70
									
								
								Zip/include/Poco/Zip/Delete.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								Zip/include/Poco/Zip/Delete.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | // | ||||||
|  | // Delete.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Delete.h#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Delete | ||||||
|  | // | ||||||
|  | // Definition of the Delete class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Delete_INCLUDED | ||||||
|  | #define Zip_Delete_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Delete: public ZipOperation | ||||||
|  | 	/// Delete Operation removes an entry from a Zip | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Delete(const ZipLocalFileHeader& hdr); | ||||||
|  | 		/// Creates the Delete. | ||||||
|  |  | ||||||
|  | 	void execute(Compress& c, std::istream& input); | ||||||
|  | 		/// Throws away the ZipEntry | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	const ZipLocalFileHeader _hdr; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Delete_INCLUDED | ||||||
							
								
								
									
										71
									
								
								Zip/include/Poco/Zip/Keep.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								Zip/include/Poco/Zip/Keep.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | // | ||||||
|  | // Keep.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Keep.h#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Keep | ||||||
|  | // | ||||||
|  | // Definition of the Keep class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Keep_INCLUDED | ||||||
|  | #define Zip_Keep_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Keep: public ZipOperation | ||||||
|  | 	/// Keep simply forwards the compressed data stream from the input ZipArchive | ||||||
|  | 	/// to the output zip archive | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Keep(const ZipLocalFileHeader& hdr); | ||||||
|  | 		/// Creates the Keep object. | ||||||
|  |  | ||||||
|  | 	void execute(Compress& c, std::istream& input); | ||||||
|  | 		///Adds a copy of the compressed input file to the ZipArchive | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	const ZipLocalFileHeader _hdr; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Keep_INCLUDED | ||||||
							
								
								
									
										76
									
								
								Zip/include/Poco/Zip/ParseCallback.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								Zip/include/Poco/Zip/ParseCallback.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | |||||||
|  | // | ||||||
|  | // ParseCallback.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ParseCallback.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ParseCallback | ||||||
|  | // | ||||||
|  | // Definition of the ParseCallback class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ParseCallback_INCLUDED | ||||||
|  | #define Zip_ParseCallback_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include <istream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipLocalFileHeader; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ParseCallback | ||||||
|  | 	/// Interface for callbacks to handle ZipData | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ParseCallback(); | ||||||
|  | 		/// Creates the ParseCallback. | ||||||
|  |  | ||||||
|  | 	virtual ~ParseCallback(); | ||||||
|  | 		/// Destroys the ParseCallback. | ||||||
|  |  | ||||||
|  | 	virtual bool handleZipEntry(std::istream& zipStream, const ZipLocalFileHeader& hdr) = 0; | ||||||
|  | 		/// Handles parsing of the data of a single Zip Entry. zipStream is guaranteed to be at the very first data byte. | ||||||
|  | 		/// Note that a callback class SHOULD consume all data inside a zip file, ie. after | ||||||
|  | 		/// processing the next 4 bytes point the next ZipLocalFileHeader or the ZipDirectory. | ||||||
|  | 		/// If it fails to do so, it must return false, otherwise true. | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ParseCallback_INCLUDED | ||||||
							
								
								
									
										209
									
								
								Zip/include/Poco/Zip/PartialStream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								Zip/include/Poco/Zip/PartialStream.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | |||||||
|  | // | ||||||
|  | // PartialStream.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/PartialStream.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  PartialStream | ||||||
|  | // | ||||||
|  | // Definition of the PartialStream class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_PartialStream_INCLUDED | ||||||
|  | #define Zip_PartialStream_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/BufferedStreamBuf.h" | ||||||
|  | #include "Poco/Buffer.h" | ||||||
|  | #include <istream> | ||||||
|  | #include <ostream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API PartialStreamBuf: public Poco::BufferedStreamBuf | ||||||
|  | 	/// A PartialStreamBuf is a class that limits one view on an inputstream to a selected view range | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	PartialStreamBuf(std::istream& in, std::ios::pos_type start, std::ios::pos_type end, const std::string& prefix, const std::string& postfix, bool initStream); | ||||||
|  | 		/// Creates the PartialStream.  | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access, and the stream will be repositioned | ||||||
|  | 		/// to position start | ||||||
|  |  | ||||||
|  | 	PartialStreamBuf(std::ostream& out, std::size_t start, std::size_t end, bool initStream); | ||||||
|  | 		/// Creates the PartialStream.  | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access. | ||||||
|  | 		/// start and end acts as offset values for the written content. A start value greater than zero, | ||||||
|  | 		/// means that the first bytes are not written but discarded instead, | ||||||
|  | 		/// an end value not equal to zero means that the last end bytes are not written! | ||||||
|  | 		/// Examples: | ||||||
|  | 		///     start = 3; end = 1 | ||||||
|  | 		///     write("hello", 5) -> "l" | ||||||
|  |  | ||||||
|  | 	~PartialStreamBuf(); | ||||||
|  | 		/// Destroys the PartialStream. | ||||||
|  |  | ||||||
|  | 	void close(); | ||||||
|  | 		/// Flushes a writing streambuf | ||||||
|  |  | ||||||
|  | 	Poco::UInt64 bytesWritten() const; | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	int readFromDevice(char* buffer, std::streamsize length); | ||||||
|  |  | ||||||
|  | 	int writeToDevice(const char* buffer, std::streamsize length); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum  | ||||||
|  | 	{ | ||||||
|  | 		STREAM_BUFFER_SIZE  = 1024 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	bool           _initialized; | ||||||
|  | 	std::ios::pos_type  _start; | ||||||
|  | 	Poco::UInt64   _numBytes; | ||||||
|  | 	Poco::UInt64   _bytesWritten; | ||||||
|  | 	std::istream*  _pIstr; | ||||||
|  | 	std::ostream*  _pOstr; | ||||||
|  | 	std::string    _prefix; | ||||||
|  | 	std::string    _postfix; | ||||||
|  | 	std::size_t    _ignoreStart; | ||||||
|  | 	Poco::Buffer<char> _buffer; | ||||||
|  | 	Poco::UInt32   _bufferOffset; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt64 PartialStreamBuf::bytesWritten() const | ||||||
|  | { | ||||||
|  | 	return _bytesWritten; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API PartialIOS: public virtual std::ios | ||||||
|  | 	/// The base class for PartialInputStream and PartialOutputStream. | ||||||
|  | 	/// | ||||||
|  | 	/// This class is needed to ensure the correct initialization | ||||||
|  | 	/// order of the stream buffer and base classes. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	PartialIOS(std::istream& istr, std::ios::pos_type start, std::ios::pos_type end, const std::string& prefix, const std::string& postfix, bool initStream); | ||||||
|  | 		/// Creates the basic stream and connects it | ||||||
|  | 		/// to the given input stream. | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access, and the stream will be repositioned | ||||||
|  | 		/// to position start | ||||||
|  |  | ||||||
|  | 	PartialIOS(std::ostream& ostr, std::size_t start, std::size_t end, bool initStream); | ||||||
|  | 		/// Creates the basic stream and connects it | ||||||
|  | 		/// to the given output stream. | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access. | ||||||
|  | 		/// start and end acts as offset values for the written content. A start value greater than zero, | ||||||
|  | 		/// means that the first bytes are not written but discarded instead, | ||||||
|  | 		/// an end value not equal to zero means that the last end bytes are not written! | ||||||
|  | 		/// Examples: | ||||||
|  | 		///     start = 3; end = 1 | ||||||
|  | 		///     write("hello", 5) -> "l" | ||||||
|  |  | ||||||
|  | 	~PartialIOS(); | ||||||
|  | 		/// Destroys the stream. | ||||||
|  |  | ||||||
|  | 	PartialStreamBuf* rdbuf(); | ||||||
|  | 		/// Returns a pointer to the underlying streambuf. | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	PartialStreamBuf _buf; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API PartialInputStream: public PartialIOS, public std::istream | ||||||
|  | 	/// This stream copies all characters read through it | ||||||
|  | 	/// to one or multiple output streams. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	PartialInputStream(std::istream& istr, std::ios::pos_type start, std::ios::pos_type end, bool initStream = true, const std::string& prefix = std::string(), const std::string& postfix = std::string()); | ||||||
|  | 		/// Creates the PartialInputStream and connects it | ||||||
|  | 		/// to the given input stream. Bytes read are guaranteed to be in the range [start, end-1] | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access, and the stream will be repositioned | ||||||
|  | 		/// to position start | ||||||
|  |  | ||||||
|  | 	~PartialInputStream(); | ||||||
|  | 		/// Destroys the PartialInputStream. | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API PartialOutputStream: public PartialIOS, public std::ostream | ||||||
|  | 	/// This stream copies all characters written to it | ||||||
|  | 	/// to one or multiple output streams. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	PartialOutputStream(std::ostream& ostr, std::size_t start, std::size_t end, bool initStream = true); | ||||||
|  | 		/// Creates the PartialOutputStream and connects it | ||||||
|  | 		/// to the given output stream. Bytes written are guaranteed to be in the range [start, realEnd - end]. | ||||||
|  | 		/// If initStream is true the status of the stream will be cleared on the first access. | ||||||
|  | 		/// start and end acts as offset values for the written content. A start value greater than zero, | ||||||
|  | 		/// means that the first bytes are not written but discarded instead, | ||||||
|  | 		/// an end value not equal to zero means that the last end bytes are not written! | ||||||
|  | 		/// Examples: | ||||||
|  | 		///     start = 3; end = 1 | ||||||
|  | 		///     write("hello", 5) -> "l" | ||||||
|  | 		///      | ||||||
|  | 		///     start = 3; end = 0 | ||||||
|  | 		///     write("hello", 5) -> "lo" | ||||||
|  |  | ||||||
|  | 	~PartialOutputStream(); | ||||||
|  | 		/// Destroys the PartialOutputStream. | ||||||
|  |  | ||||||
|  | 	void close(); | ||||||
|  | 		/// must be called for the stream to properly terminate it | ||||||
|  |  | ||||||
|  | 	Poco::UInt64 bytesWritten() const; | ||||||
|  | 		/// Returns the number of bytes actually forwarded to the inner ostream | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void PartialOutputStream::close() | ||||||
|  | { | ||||||
|  | 	flush(); | ||||||
|  | 	_buf.close(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt64 PartialOutputStream::bytesWritten() const | ||||||
|  | { | ||||||
|  | 	return _buf.bytesWritten(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_PartialStream_INCLUDED | ||||||
							
								
								
									
										71
									
								
								Zip/include/Poco/Zip/Rename.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								Zip/include/Poco/Zip/Rename.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | // | ||||||
|  | // Rename.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Rename.h#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Rename | ||||||
|  | // | ||||||
|  | // Definition of the Rename class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Rename_INCLUDED | ||||||
|  | #define Zip_Rename_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Rename: public ZipOperation | ||||||
|  | 	/// Renames an existing Zip Entry | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Rename(const ZipLocalFileHeader& hdr, const std::string& newZipEntryName); | ||||||
|  | 		/// Creates the Rename. | ||||||
|  |  | ||||||
|  | 	void execute(Compress& c, std::istream& input); | ||||||
|  | 		/// Performs the rename operation | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	const ZipLocalFileHeader _hdr; | ||||||
|  | 	const std::string _newZipEntryName; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Rename_INCLUDED | ||||||
							
								
								
									
										72
									
								
								Zip/include/Poco/Zip/Replace.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								Zip/include/Poco/Zip/Replace.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | // | ||||||
|  | // Replace.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Replace.h#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Replace | ||||||
|  | // | ||||||
|  | // Definition of the Replace class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Replace_INCLUDED | ||||||
|  | #define Zip_Replace_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/Add.h" | ||||||
|  | #include "Poco/Zip/Delete.h" | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API Replace: public ZipOperation | ||||||
|  | 	/// Operation Replace replaces the content of an existing entry with a new one | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Replace(const ZipLocalFileHeader& hdr, const std::string& localPath); | ||||||
|  | 		/// Creates the Replace. | ||||||
|  |  | ||||||
|  | 	void execute(Compress& c, std::istream& input); | ||||||
|  | 		/// Performs the replace operation | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	Delete _del; | ||||||
|  | 	Add _add; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Replace_INCLUDED | ||||||
							
								
								
									
										68
									
								
								Zip/include/Poco/Zip/SkipCallback.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								Zip/include/Poco/Zip/SkipCallback.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | // | ||||||
|  | // SkipCallback.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/SkipCallback.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  SkipCallback | ||||||
|  | // | ||||||
|  | // Definition of the SkipCallback class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_SkipCallback_INCLUDED | ||||||
|  | #define Zip_SkipCallback_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ParseCallback.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API SkipCallback: public ParseCallback | ||||||
|  | 	/// A SkipCallback simply skips over the data | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	SkipCallback(); | ||||||
|  | 		/// Creates the SkipCallback. | ||||||
|  |  | ||||||
|  | 	virtual ~SkipCallback(); | ||||||
|  | 		/// Destroys the SkipCallback. | ||||||
|  |  | ||||||
|  | 	bool handleZipEntry(std::istream& zipStream, const ZipLocalFileHeader& hdr); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_SkipCallback_INCLUDED | ||||||
							
								
								
									
										92
									
								
								Zip/include/Poco/Zip/Zip.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								Zip/include/Poco/Zip/Zip.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | |||||||
|  | // | ||||||
|  | // Zip.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/Zip.h#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  Zip | ||||||
|  | // | ||||||
|  | // Basic definitions for the Poco Zip library. | ||||||
|  | // This file must be the first file included by every other Zip | ||||||
|  | // header file. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_Zip_INCLUDED | ||||||
|  | #define Zip_Zip_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Foundation.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // | ||||||
|  | // The following block is the standard way of creating macros which make exporting | ||||||
|  | // from a DLL simpler. All files within this DLL are compiled with the Zip_EXPORTS | ||||||
|  | // symbol defined on the command line. this symbol should not be defined on any project | ||||||
|  | // that uses this DLL. This way any other project whose source files include this file see | ||||||
|  | // Zip_API functions as being imported from a DLL, wheras this DLL sees symbols | ||||||
|  | // defined with this macro as being exported. | ||||||
|  | // | ||||||
|  | #if defined(_WIN32) && defined(POCO_DLL) | ||||||
|  | 	#if defined(Zip_EXPORTS) | ||||||
|  | 		#define Zip_API __declspec(dllexport) | ||||||
|  | 	#else | ||||||
|  | 		#define Zip_API __declspec(dllimport) | ||||||
|  | 	#endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #if !defined(Zip_API) | ||||||
|  | 	#define Zip_API | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // | ||||||
|  | // Automatically link Zip library. | ||||||
|  | // | ||||||
|  | #if defined(_MSC_VER) | ||||||
|  | 	#if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Zip_EXPORTS) | ||||||
|  | 		#if defined(POCO_DLL) | ||||||
|  | 			#if defined(_DEBUG) | ||||||
|  | 				#pragma comment(lib, "PocoZipd.lib") | ||||||
|  | 			#else | ||||||
|  | 				#pragma comment(lib, "PocoZip.lib") | ||||||
|  | 			#endif | ||||||
|  | 		#else | ||||||
|  | 			#if defined(_DEBUG) | ||||||
|  | 				#pragma comment(lib, "PocoZipmtd.lib") | ||||||
|  | 			#else | ||||||
|  | 				#pragma comment(lib, "PocoZipmt.lib") | ||||||
|  | 			#endif | ||||||
|  | 		#endif | ||||||
|  | 	#endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_Zip_INCLUDED | ||||||
							
								
								
									
										136
									
								
								Zip/include/Poco/Zip/ZipArchive.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								Zip/include/Poco/Zip/ZipArchive.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,136 @@ | |||||||
|  | // | ||||||
|  | // ZipArchive.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipArchive.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipArchive | ||||||
|  | // | ||||||
|  | // Definition of the ZipArchive class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipArchive_INCLUDED | ||||||
|  | #define Zip_ZipArchive_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipFileInfo.h" | ||||||
|  | #include "Poco/Zip/ZipArchiveInfo.h" | ||||||
|  | #include <iostream> | ||||||
|  | #include <map> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ParseCallback; | ||||||
|  | class Compress; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipArchive | ||||||
|  | 	/// A ZipArchive contains information on the content of a zip file | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	typedef std::map<std::string, ZipLocalFileHeader> FileHeaders; | ||||||
|  | 	typedef std::map<std::string, ZipFileInfo> FileInfos; | ||||||
|  | 	typedef std::map<Poco::UInt16, ZipArchiveInfo> DirectoryInfos; | ||||||
|  |  | ||||||
|  | 	ZipArchive(std::istream& in); | ||||||
|  | 		/// Creates the ZipArchive from a file. Note that the in stream will be in state failed after the constructor is finished | ||||||
|  |  | ||||||
|  | 	ZipArchive(std::istream& in, ParseCallback& callback); | ||||||
|  | 		/// Creates the ZipArchive from a file or network stream. Note that the in stream will be in state failed after the constructor is finished | ||||||
|  |  | ||||||
|  | 	~ZipArchive(); | ||||||
|  | 		/// Destroys the ZipArchive. | ||||||
|  |  | ||||||
|  | 	FileInfos::const_iterator fileInfoBegin() const; | ||||||
|  |  | ||||||
|  | 	FileInfos::const_iterator fileInfoEnd() const; | ||||||
|  |  | ||||||
|  | 	FileHeaders::const_iterator findHeader(const std::string& fileName) const; | ||||||
|  |  | ||||||
|  | 	FileHeaders::const_iterator headerBegin() const; | ||||||
|  |  | ||||||
|  | 	FileHeaders::const_iterator headerEnd() const; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	void parse(std::istream& in, ParseCallback& pc); | ||||||
|  |  | ||||||
|  | 	ZipArchive(const FileHeaders& entries, const FileInfos& infos, const DirectoryInfos& dirs	); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	FileHeaders    _entries; | ||||||
|  | 		/// Info generated by parsing the data block of the zip file | ||||||
|  | 	FileInfos      _infos; | ||||||
|  | 		/// Info generated by parsing the directory block of the zip file | ||||||
|  | 	DirectoryInfos _disks; | ||||||
|  | 		/// Stores directory info for all found disks | ||||||
|  |  | ||||||
|  | 	friend class Compress; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipArchive::FileInfos::const_iterator ZipArchive::fileInfoBegin() const | ||||||
|  | { | ||||||
|  | 	return _infos.begin(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipArchive::FileInfos::const_iterator ZipArchive::fileInfoEnd() const | ||||||
|  | { | ||||||
|  | 	return _infos.end(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipArchive::FileHeaders::const_iterator ZipArchive::findHeader(const std::string& fileName) const | ||||||
|  | { | ||||||
|  | 	return _entries.find(fileName); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipArchive::FileHeaders::const_iterator ZipArchive::headerBegin() const | ||||||
|  | { | ||||||
|  | 	return _entries.begin(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipArchive::FileHeaders::const_iterator ZipArchive::headerEnd() const | ||||||
|  | { | ||||||
|  | 	return _entries.end(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipArchive_INCLUDED | ||||||
							
								
								
									
										210
									
								
								Zip/include/Poco/Zip/ZipArchiveInfo.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										210
									
								
								Zip/include/Poco/Zip/ZipArchiveInfo.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,210 @@ | |||||||
|  | // | ||||||
|  | // ZipArchiveInfo.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipArchiveInfo.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipArchiveInfo | ||||||
|  | // | ||||||
|  | // Definition of the ZipArchiveInfo class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipArchiveInfo_INCLUDED | ||||||
|  | #define Zip_ZipArchiveInfo_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipArchiveInfo | ||||||
|  | 	/// A ZipArchiveInfo stores central directory info | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	static const char HEADER[ZipCommon::HEADER_SIZE]; | ||||||
|  |  | ||||||
|  | 	ZipArchiveInfo(); | ||||||
|  | 		/// Default constructor, everything set to zero or empty | ||||||
|  |  | ||||||
|  | 	ZipArchiveInfo(std::istream& in, bool assumeHeaderRead); | ||||||
|  | 		/// Creates the ZipArchiveInfo by parsing the input stream. | ||||||
|  | 		/// If assumeHeaderRead is true we assume that the first 4 bytes were already read outside. | ||||||
|  |  | ||||||
|  | 	~ZipArchiveInfo(); | ||||||
|  | 		/// Destroys the ZipArchiveInfo. | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getDiskNumber() const; | ||||||
|  | 		/// Get the number of the disk where this header can be found | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getFirstDiskForDirectoryHeader() const; | ||||||
|  | 		/// Returns the number of the disk that contains the start of the directory header | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getNumberOfEntries() const; | ||||||
|  | 		/// Returns the number of entries on this disk | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getTotalNumberOfEntries() const; | ||||||
|  | 		/// Returns the total number of entries on all disks | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCentralDirectorySize() const; | ||||||
|  | 		/// Returns the size of the central directory in bytes | ||||||
|  |  | ||||||
|  | 	std::streamoff getHeaderOffset() const; | ||||||
|  | 		/// Returns the offset of the header in relation to the begin of this disk | ||||||
|  |  | ||||||
|  | 	const std::string& getZipComment() const; | ||||||
|  | 		/// Returns the (optional) Zip Comment | ||||||
|  |  | ||||||
|  | 	void setNumberOfEntries(Poco::UInt16 val); | ||||||
|  | 		/// Returns the number of entries on this disk | ||||||
|  |  | ||||||
|  | 	void setTotalNumberOfEntries(Poco::UInt16 val); | ||||||
|  | 		/// Returns the total number of entries on all disks | ||||||
|  |  | ||||||
|  | 	void setCentralDirectorySize(Poco::UInt32 val); | ||||||
|  | 		/// Returns the size of the central directory in bytes | ||||||
|  |  | ||||||
|  | 	void setHeaderOffset(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	std::string createHeader() const; | ||||||
|  | 		/// Creates a header | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	void parse(std::istream& inp, bool assumeHeaderRead); | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getZipCommentSize() const; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		HEADER_POS = 0, | ||||||
|  | 		NUMBEROFTHISDISK_POS = HEADER_POS + ZipCommon::HEADER_SIZE, | ||||||
|  | 		NUMBEROFTHISDISK_SIZE = 2, | ||||||
|  | 		NUMBEROFCENTRALDIRDISK_POS = NUMBEROFTHISDISK_POS + NUMBEROFTHISDISK_SIZE, | ||||||
|  | 		NUMBEROFCENTRALDIRDISK_SIZE = 2, | ||||||
|  | 		NUMENTRIESTHISDISK_POS = NUMBEROFCENTRALDIRDISK_POS + NUMBEROFCENTRALDIRDISK_SIZE, | ||||||
|  | 		NUMENTRIESTHISDISK_SIZE = 2, | ||||||
|  | 		TOTALNUMENTRIES_POS = NUMENTRIESTHISDISK_POS + NUMENTRIESTHISDISK_SIZE, | ||||||
|  | 		TOTALNUMENTRIES_SIZE = 2, | ||||||
|  | 		CENTRALDIRSIZE_POS = TOTALNUMENTRIES_POS + TOTALNUMENTRIES_SIZE, | ||||||
|  | 		CENTRALDIRSIZE_SIZE = 4, | ||||||
|  | 		CENTRALDIRSTARTOFFSET_POS = CENTRALDIRSIZE_POS + CENTRALDIRSIZE_SIZE, | ||||||
|  | 		CENTRALDIRSTARTOFFSET_SIZE = 4, | ||||||
|  | 		ZIPCOMMENT_LENGTH_POS = CENTRALDIRSTARTOFFSET_POS + CENTRALDIRSTARTOFFSET_SIZE, | ||||||
|  | 		ZIPCOMMENT_LENGTH_SIZE = 2, | ||||||
|  | 		FULLHEADER_SIZE = 22 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	char           _rawInfo[FULLHEADER_SIZE]; | ||||||
|  | 	std::streamoff _startPos; | ||||||
|  | 	std::string    _comment; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipArchiveInfo::getDiskNumber() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, NUMBEROFTHISDISK_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipArchiveInfo::getFirstDiskForDirectoryHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, NUMBEROFCENTRALDIRDISK_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipArchiveInfo::getNumberOfEntries() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, NUMENTRIESTHISDISK_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipArchiveInfo::getTotalNumberOfEntries() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, TOTALNUMENTRIES_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipArchiveInfo::getCentralDirectorySize() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, CENTRALDIRSIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline std::streamoff ZipArchiveInfo::getHeaderOffset() const | ||||||
|  | { | ||||||
|  | 	return _startPos; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipArchiveInfo::getZipCommentSize() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, ZIPCOMMENT_LENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& ZipArchiveInfo::getZipComment() const | ||||||
|  | { | ||||||
|  | 	return _comment; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipArchiveInfo::setNumberOfEntries(Poco::UInt16 val) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(val, _rawInfo, NUMENTRIESTHISDISK_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipArchiveInfo::setTotalNumberOfEntries(Poco::UInt16 val) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(val, _rawInfo, TOTALNUMENTRIES_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipArchiveInfo::setCentralDirectorySize(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawInfo, CENTRALDIRSIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipArchiveInfo::setHeaderOffset(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawInfo, CENTRALDIRSTARTOFFSET_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipArchiveInfo_INCLUDED | ||||||
							
								
								
									
										119
									
								
								Zip/include/Poco/Zip/ZipCommon.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								Zip/include/Poco/Zip/ZipCommon.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | |||||||
|  | // | ||||||
|  | // ZipCommon.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipCommon.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipCommon | ||||||
|  | // | ||||||
|  | // Definition of the ZipCommon class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipCommon_INCLUDED | ||||||
|  | #define Zip_ZipCommon_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipCommon | ||||||
|  | 	/// Common enums used in the Zip project | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		HEADER_SIZE = 4 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	enum CompressionMethod | ||||||
|  | 	{ | ||||||
|  | 		CM_STORE   = 0, | ||||||
|  | 		CM_SHRUNK  = 1, | ||||||
|  | 		CM_FACTOR1 = 2, | ||||||
|  | 		CM_FACTOR2 = 3, | ||||||
|  | 		CM_FACTOR3 = 4, | ||||||
|  | 		CM_FACTOR4 = 5, | ||||||
|  | 		CM_IMPLODE = 6, | ||||||
|  | 		CM_TOKENIZE= 7, | ||||||
|  | 		CM_DEFLATE = 8, | ||||||
|  | 		CM_ENHANCEDDEFLATE = 9, | ||||||
|  | 		CM_DATECOMPRIMPLODING = 10, | ||||||
|  | 		CM_UNUSED = 11 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	enum CompressionLevel | ||||||
|  | 	{ | ||||||
|  | 		CL_NORMAL    = 0, | ||||||
|  | 		CL_MAXIMUM   = 1, | ||||||
|  | 		CL_FAST      = 2, | ||||||
|  | 		CL_SUPERFAST = 3 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	enum HostSystem | ||||||
|  | 	{ | ||||||
|  | 		HS_FAT = 0,  // + PKZIPW 2.50 VFAT, NTFS | ||||||
|  | 		HS_AMIGA = 1, | ||||||
|  | 		HS_VMS = 2, | ||||||
|  | 		HS_UNIX = 3, | ||||||
|  | 		HS_VM_CMS = 4, | ||||||
|  | 		HS_ATARI = 5, | ||||||
|  | 		HS_HPFS = 6, | ||||||
|  | 		HS_MACINTOSH = 7, | ||||||
|  | 		HS_ZSYSTEM = 8, | ||||||
|  | 		HS_CP_M = 9, | ||||||
|  | 		HS_TOPS20 = 10, // used by pkzip2.5 to indicate ntfs | ||||||
|  | 		HS_NTFS = 11, | ||||||
|  | 		HS_SMS_QDOS = 12, | ||||||
|  | 		HS_ACORN = 13, | ||||||
|  | 		HS_VFAT = 14, | ||||||
|  | 		HS_MVS = 15, | ||||||
|  | 		HS_BEOS = 16, | ||||||
|  | 		HS_TANDEM = 17, | ||||||
|  | 		HS_UNUSED = 18, | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	enum FileType | ||||||
|  | 	{ | ||||||
|  | 		FT_BINARY= 0, | ||||||
|  | 		FT_ASCII = 1 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	static const std::string ILLEGAL_PATH; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipCommon_INCLUDED | ||||||
							
								
								
									
										160
									
								
								Zip/include/Poco/Zip/ZipDataInfo.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								Zip/include/Poco/Zip/ZipDataInfo.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | |||||||
|  | // | ||||||
|  | // ZipDataInfo.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipDataInfo.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipDataInfo | ||||||
|  | // | ||||||
|  | // Definition of the ZipDataInfo class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipDataInfo_INCLUDED | ||||||
|  | #define Zip_ZipDataInfo_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipDataInfo | ||||||
|  | 	/// A ZipDataInfo stores a Zip data descriptor | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	static const char HEADER[ZipCommon::HEADER_SIZE]; | ||||||
|  |  | ||||||
|  | 	ZipDataInfo(); | ||||||
|  | 	/// Creates a header with all fields (except the header field) set to 0 | ||||||
|  |  | ||||||
|  | 	ZipDataInfo(std::istream& in, bool assumeHeaderRead); | ||||||
|  | 		/// Creates the ZipDataInfo. | ||||||
|  |  | ||||||
|  | 	~ZipDataInfo(); | ||||||
|  | 		/// Destroys the ZipDataInfo. | ||||||
|  |  | ||||||
|  | 	bool isValid() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCRC32() const; | ||||||
|  |  | ||||||
|  | 	void setCRC32(Poco::UInt32 crc); | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCompressedSize() const; | ||||||
|  |  | ||||||
|  | 	void setCompressedSize(Poco::UInt32 size); | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getUncompressedSize() const; | ||||||
|  |  | ||||||
|  | 	void setUncompressedSize(Poco::UInt32 size); | ||||||
|  |  | ||||||
|  | 	static Poco::UInt32 getFullHeaderSize(); | ||||||
|  |  | ||||||
|  | 	const char* getRawHeader() const; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		HEADER_POS = 0, | ||||||
|  | 		CRC32_POS  = HEADER_POS + ZipCommon::HEADER_SIZE, | ||||||
|  | 		CRC32_SIZE = 4, | ||||||
|  | 		COMPRESSED_POS = CRC32_POS + CRC32_SIZE, | ||||||
|  | 		COMPRESSED_SIZE = 4, | ||||||
|  | 		UNCOMPRESSED_POS = COMPRESSED_POS + COMPRESSED_SIZE, | ||||||
|  | 		UNCOMPRESSED_SIZE = 4, | ||||||
|  | 		FULLHEADER_SIZE = UNCOMPRESSED_POS + UNCOMPRESSED_SIZE | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	char _rawInfo[FULLHEADER_SIZE]; | ||||||
|  | 	bool _valid; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const char* ZipDataInfo::getRawHeader() const | ||||||
|  | { | ||||||
|  | 	return _rawInfo; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipDataInfo::isValid() const | ||||||
|  | { | ||||||
|  | 	return _valid; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipDataInfo::getCRC32() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, CRC32_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipDataInfo::setCRC32(Poco::UInt32 crc) | ||||||
|  | { | ||||||
|  | 	return ZipUtil::set32BitValue(crc, _rawInfo, CRC32_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipDataInfo::getCompressedSize() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, COMPRESSED_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipDataInfo::setCompressedSize(Poco::UInt32 size) | ||||||
|  | { | ||||||
|  | 	return ZipUtil::set32BitValue(size, _rawInfo, COMPRESSED_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipDataInfo::getUncompressedSize() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, UNCOMPRESSED_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipDataInfo::setUncompressedSize(Poco::UInt32 size) | ||||||
|  | { | ||||||
|  | 	return ZipUtil::set32BitValue(size, _rawInfo, UNCOMPRESSED_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipDataInfo::getFullHeaderSize() | ||||||
|  | { | ||||||
|  | 	return FULLHEADER_SIZE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipDataInfo_INCLUDED | ||||||
							
								
								
									
										58
									
								
								Zip/include/Poco/Zip/ZipException.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Zip/include/Poco/Zip/ZipException.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | // | ||||||
|  | // ZipException.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipException.h#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipException | ||||||
|  | // | ||||||
|  | // Definition of the ZipException class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipException_INCLUDED | ||||||
|  | #define Zip_ZipException_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | POCO_DECLARE_EXCEPTION(Zip_API, ZipException, Poco::RuntimeException) | ||||||
|  | POCO_DECLARE_EXCEPTION(Zip_API, ZipManipulationException, ZipException) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipException_INCLUDED | ||||||
							
								
								
									
										468
									
								
								Zip/include/Poco/Zip/ZipFileInfo.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										468
									
								
								Zip/include/Poco/Zip/ZipFileInfo.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,468 @@ | |||||||
|  | // | ||||||
|  | // ZipFileInfo.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipFileInfo.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipFileInfo | ||||||
|  | // | ||||||
|  | // Definition of the ZipFileInfo class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipFileInfo_INCLUDED | ||||||
|  | #define Zip_ZipFileInfo_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipLocalFileHeader; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipFileInfo | ||||||
|  | 	/// Stores a Zip directory entry of a file | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	static const char HEADER[ZipCommon::HEADER_SIZE]; | ||||||
|  |  | ||||||
|  | 	ZipFileInfo(const ZipLocalFileHeader& header); | ||||||
|  | 		/// Creates a ZipFileInfo from a ZipLocalFileHeader | ||||||
|  |  | ||||||
|  | 	ZipFileInfo(std::istream& in, bool assumeHeaderRead); | ||||||
|  | 		/// Creates the ZipFileInfo by parsing the input stream. | ||||||
|  | 		/// If assumeHeaderRead is true we assume that the first 4 bytes were already read outside. | ||||||
|  |  | ||||||
|  | 	~ZipFileInfo(); | ||||||
|  | 		/// Destroys the ZipFileInfo. | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getRelativeOffsetOfLocalHeader() const; | ||||||
|  | 		/// Where on the disk starts the localheader. Combined with the disk number gives the exact location of the header | ||||||
|  |  | ||||||
|  | 	ZipCommon::CompressionMethod getCompressionMethod() const; | ||||||
|  |  | ||||||
|  | 	bool isEncrypted() const; | ||||||
|  |  | ||||||
|  | 	const Poco::DateTime& lastModifiedAt() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCRC() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getHeaderSize() const; | ||||||
|  | 		/// Returns the total size of the header including filename + other additional fields | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCompressedSize() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getUncompressedSize() const; | ||||||
|  |  | ||||||
|  | 	const std::string& getFileName() const; | ||||||
|  |  | ||||||
|  | 	bool isFile() const; | ||||||
|  |  | ||||||
|  | 	bool isDirectory() const; | ||||||
|  |  | ||||||
|  | 	bool hasExtraField() const; | ||||||
|  |  | ||||||
|  | 	const std::string& getExtraField() const; | ||||||
|  |  | ||||||
|  | 	const std::string& getFileComment() const; | ||||||
|  |  | ||||||
|  | 	void getVersionMadeBy(int& major, int& minor); | ||||||
|  | 		/// The ZIP version used to create the file | ||||||
|  |  | ||||||
|  | 	void getRequiredVersion(int& major, int& minor); | ||||||
|  | 		/// The minimum version required to extract the data | ||||||
|  |  | ||||||
|  | 	ZipCommon::HostSystem getHostSystem() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getDiskNumberStart() const; | ||||||
|  | 		/// The number of the disk on which this file begins (multidisk archives) | ||||||
|  |  | ||||||
|  | 	ZipCommon::FileType getFileType() const; | ||||||
|  | 		/// Binary or ASCII file? | ||||||
|  |  | ||||||
|  | 	std::string createHeader() const; | ||||||
|  |  | ||||||
|  | 	void setOffset(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	void setCRC(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	void setCompressedSize(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	void setUncompressedSize(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	void setCompressionMethod(ZipCommon::CompressionMethod cm); | ||||||
|  |  | ||||||
|  | 	void setCompressionLevel(ZipCommon::CompressionLevel cl); | ||||||
|  |  | ||||||
|  | 	void setRequiredVersion(int major, int minor); | ||||||
|  |  | ||||||
|  | 	void setHostSystem(ZipCommon::HostSystem hs); | ||||||
|  |  | ||||||
|  | 	void setLastModifiedAt(const Poco::DateTime& dt); | ||||||
|  |  | ||||||
|  | 	void setEncryption(bool val); | ||||||
|  |  | ||||||
|  | 	void setFileNameLength(Poco::UInt16 size); | ||||||
|  |  | ||||||
|  | 	void setFileName(const std::string& str); | ||||||
|  |  | ||||||
|  | 	void parse(std::istream& in, bool assumeHeaderRead); | ||||||
|  |  | ||||||
|  | 	void parseDateTime(); | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCRCFromHeader() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCompressedSizeFromHeader() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getUncompressedSizeFromHeader() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getFileNameLength() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getExtraFieldLength() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getFileCommentLength() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getExternalFileAttributes() const; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		HEADER_POS = 0, | ||||||
|  | 		VERSIONMADEBY_POS = HEADER_POS + ZipCommon::HEADER_SIZE, | ||||||
|  | 		VERSIONMADEBY_SIZE = 2, | ||||||
|  | 		VERSION_NEEDED_POS = VERSIONMADEBY_POS + VERSIONMADEBY_SIZE, | ||||||
|  | 		VERSION_NEEDED_SIZE = 2, | ||||||
|  | 		GENERAL_PURPOSE_POS = VERSION_NEEDED_POS + VERSION_NEEDED_SIZE, | ||||||
|  | 		GENERAL_PURPOSE_SIZE = 2, | ||||||
|  | 		COMPR_METHOD_POS = GENERAL_PURPOSE_POS + GENERAL_PURPOSE_SIZE, | ||||||
|  | 		COMPR_METHOD_SIZE = 2, | ||||||
|  | 		LASTMODFILETIME_POS = COMPR_METHOD_POS + COMPR_METHOD_SIZE, | ||||||
|  | 		LASTMODFILETIME_SIZE = 2, | ||||||
|  | 		LASTMODFILEDATE_POS = LASTMODFILETIME_POS + LASTMODFILETIME_SIZE, | ||||||
|  | 		LASTMODFILEDATE_SIZE = 2, | ||||||
|  | 		CRC32_POS = LASTMODFILEDATE_POS + LASTMODFILEDATE_SIZE, | ||||||
|  | 		CRC32_SIZE = 4, | ||||||
|  | 		COMPRESSED_SIZE_POS = CRC32_POS + CRC32_SIZE, | ||||||
|  | 		COMPRESSED_SIZE_SIZE = 4, | ||||||
|  | 		UNCOMPRESSED_SIZE_POS = COMPRESSED_SIZE_POS + COMPRESSED_SIZE_SIZE, | ||||||
|  | 		UNCOMPRESSED_SIZE_SIZE = 4, | ||||||
|  | 		FILENAME_LENGTH_POS = UNCOMPRESSED_SIZE_POS + UNCOMPRESSED_SIZE_SIZE, | ||||||
|  | 		FILENAME_LENGTH_SIZE = 2, | ||||||
|  | 		EXTRAFIELD_LENGTH_POS = FILENAME_LENGTH_POS + FILENAME_LENGTH_SIZE, | ||||||
|  | 		EXTRAFIELD_LENGTH_SIZE = 2, | ||||||
|  | 		FILECOMMENT_LENGTH_POS = EXTRAFIELD_LENGTH_POS + EXTRAFIELD_LENGTH_SIZE, | ||||||
|  | 		FILECOMMENT_LENGTH_SIZE = 2, | ||||||
|  | 		DISKNUMBERSTART_POS = FILECOMMENT_LENGTH_POS + FILECOMMENT_LENGTH_SIZE, | ||||||
|  | 		DISKNUMBERSTART_SIZE = 2, | ||||||
|  | 		INTERNALFILE_ATTR_POS = DISKNUMBERSTART_POS + DISKNUMBERSTART_SIZE, | ||||||
|  | 		INTERNALFILE_ATTR_SIZE = 2, | ||||||
|  | 		EXTERNALFILE_ATTR_POS = INTERNALFILE_ATTR_POS + INTERNALFILE_ATTR_SIZE, | ||||||
|  | 		EXTERNALFILE_ATTR_SIZE = 4, | ||||||
|  | 		RELATIVEOFFSETLOCALHEADER_POS = EXTERNALFILE_ATTR_POS + EXTERNALFILE_ATTR_SIZE, | ||||||
|  | 		RELATIVEOFFSETLOCALHEADER_SIZE = 4, | ||||||
|  | 		FULLHEADER_SIZE = 46 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	char           _rawInfo[FULLHEADER_SIZE]; | ||||||
|  | 	Poco::UInt32   _crc32; | ||||||
|  | 	Poco::UInt32   _compressedSize; | ||||||
|  | 	Poco::UInt32   _uncompressedSize; | ||||||
|  | 	std::string    _fileName; | ||||||
|  | 	Poco::DateTime _lastModifiedAt; | ||||||
|  | 	std::string    _extraField; | ||||||
|  | 	std::string    _fileComment; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getRelativeOffsetOfLocalHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, RELATIVEOFFSETLOCALHEADER_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getCRCFromHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, CRC32_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getCompressedSizeFromHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, COMPRESSED_SIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getUncompressedSizeFromHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, UNCOMPRESSED_SIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::parseDateTime() | ||||||
|  | { | ||||||
|  | 	_lastModifiedAt = ZipUtil::parseDateTime(_rawInfo, LASTMODFILETIME_POS, LASTMODFILEDATE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipCommon::CompressionMethod ZipFileInfo::getCompressionMethod() const | ||||||
|  | { | ||||||
|  | 	return static_cast<ZipCommon::CompressionMethod>(ZipUtil::get16BitValue(_rawInfo, COMPR_METHOD_POS)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipFileInfo::isEncrypted() const | ||||||
|  | { | ||||||
|  | 	// bit 0 indicates encryption | ||||||
|  | 	return ((ZipUtil::get16BitValue(_rawInfo, GENERAL_PURPOSE_POS) & 0x0001) != 0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const Poco::DateTime& ZipFileInfo::lastModifiedAt() const | ||||||
|  | { | ||||||
|  | 	return _lastModifiedAt; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getCRC() const | ||||||
|  | { | ||||||
|  | 	return _crc32; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getCompressedSize() const | ||||||
|  | { | ||||||
|  | 	return _compressedSize; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getUncompressedSize() const | ||||||
|  | { | ||||||
|  | 	return _uncompressedSize; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& ZipFileInfo::getFileName() const | ||||||
|  | { | ||||||
|  | 	return _fileName; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipFileInfo::isFile() const | ||||||
|  | { | ||||||
|  | 	return !isDirectory(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipFileInfo::isDirectory() const | ||||||
|  | { | ||||||
|  | 	poco_assert_dbg(!_fileName.empty()); | ||||||
|  | 	return getUncompressedSize() == 0 && getCompressionMethod() == ZipCommon::CM_STORE && _fileName[_fileName.length()-1] == '/'; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipFileInfo::getFileNameLength() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, FILENAME_LENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipFileInfo::getExtraFieldLength() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, EXTRAFIELD_LENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipFileInfo::hasExtraField() const | ||||||
|  | { | ||||||
|  | 	return getExtraFieldLength() > 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& ZipFileInfo::getExtraField() const | ||||||
|  | { | ||||||
|  | 	return _extraField; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& ZipFileInfo::getFileComment() const | ||||||
|  | { | ||||||
|  | 	return _fileComment; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipFileInfo::getFileCommentLength() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, FILECOMMENT_LENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::getVersionMadeBy(int& major, int& minor) | ||||||
|  | { | ||||||
|  | 	major = (_rawInfo[VERSIONMADEBY_POS]/10); | ||||||
|  | 	minor = (_rawInfo[VERSIONMADEBY_POS]%10); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::getRequiredVersion(int& major, int& minor) | ||||||
|  | { | ||||||
|  | 	major = (_rawInfo[VERSION_NEEDED_POS]/10); | ||||||
|  | 	minor = (_rawInfo[VERSION_NEEDED_POS]%10); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipCommon::HostSystem ZipFileInfo::getHostSystem() const | ||||||
|  | { | ||||||
|  | 	return static_cast<ZipCommon::HostSystem>(_rawInfo[VERSION_NEEDED_POS + 1]); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipFileInfo::getDiskNumberStart() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawInfo, DISKNUMBERSTART_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipCommon::FileType ZipFileInfo::getFileType() const | ||||||
|  | { | ||||||
|  | 	return static_cast<ZipCommon::FileType>(_rawInfo[INTERNALFILE_ATTR_POS] & 0x01); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getExternalFileAttributes() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawInfo, EXTERNALFILE_ATTR_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipFileInfo::getHeaderSize() const | ||||||
|  | { | ||||||
|  | 	return FULLHEADER_SIZE + getFileNameLength() + getExtraFieldLength() + getFileCommentLength(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setCRC(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	_crc32 = val; | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawInfo, CRC32_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setOffset(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawInfo, RELATIVEOFFSETLOCALHEADER_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setCompressedSize(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	_compressedSize = val; | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawInfo, COMPRESSED_SIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setUncompressedSize(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	_uncompressedSize = val; | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawInfo, UNCOMPRESSED_SIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setCompressionMethod(ZipCommon::CompressionMethod cm) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(static_cast<Poco::UInt16>(cm), _rawInfo, COMPR_METHOD_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setCompressionLevel(ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	// bit 1 and 2 indicate the level | ||||||
|  | 	Poco::UInt16 val = static_cast<Poco::UInt16>(cl); | ||||||
|  | 	val <<= 1;  | ||||||
|  | 	Poco::UInt16 mask = 0xfff9; | ||||||
|  | 	_rawInfo[GENERAL_PURPOSE_POS] = ((_rawInfo[GENERAL_PURPOSE_POS] & mask) | val); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setFileNameLength(Poco::UInt16 size) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(size, _rawInfo, FILENAME_LENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setHostSystem(ZipCommon::HostSystem hs) | ||||||
|  | { | ||||||
|  | 	_rawInfo[VERSIONMADEBY_POS + 1] = static_cast<char>(hs); | ||||||
|  | 	_rawInfo[VERSION_NEEDED_POS + 1] = static_cast<char>(hs); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setRequiredVersion(int major, int minor) | ||||||
|  | { | ||||||
|  | 	poco_assert (minor < 10); | ||||||
|  | 	poco_assert (major < 24); | ||||||
|  | 	Poco::UInt8 val = static_cast<unsigned char>(major)*10+static_cast<unsigned char>(minor); | ||||||
|  | 	_rawInfo[VERSIONMADEBY_POS] = static_cast<char>(val); | ||||||
|  | 	_rawInfo[VERSION_NEEDED_POS] = static_cast<char>(val); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setLastModifiedAt(const Poco::DateTime& dt) | ||||||
|  | { | ||||||
|  | 	_lastModifiedAt = dt; | ||||||
|  | 	ZipUtil::setDateTime(dt, _rawInfo, LASTMODFILETIME_POS, LASTMODFILEDATE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setEncryption(bool val) | ||||||
|  | { | ||||||
|  | 	if (val) | ||||||
|  | 		_rawInfo[GENERAL_PURPOSE_POS] |= 0x01; | ||||||
|  | 	else | ||||||
|  | 		_rawInfo[GENERAL_PURPOSE_POS] &= 0xfe; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipFileInfo::setFileName(const std::string& str) | ||||||
|  | { | ||||||
|  | 	_fileName = str; | ||||||
|  | 	setFileNameLength(static_cast<Poco::UInt16>(str.size())); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipFileInfo_INCLUDED | ||||||
							
								
								
									
										486
									
								
								Zip/include/Poco/Zip/ZipLocalFileHeader.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										486
									
								
								Zip/include/Poco/Zip/ZipLocalFileHeader.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,486 @@ | |||||||
|  | // | ||||||
|  | // ZipLocalFileHeader.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipLocalFileHeader.h#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipLocalFileHeader | ||||||
|  | // | ||||||
|  | // Definition of the ZipLocalFileHeader class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipLocalFileHeader_INCLUDED | ||||||
|  | #define Zip_ZipLocalFileHeader_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  | #include "Poco/DateTime.h" | ||||||
|  | #include "Poco/Path.h" | ||||||
|  | #include <iostream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ParseCallback; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipLocalFileHeader | ||||||
|  | 	/// Stores a Zip local file header | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	static const char HEADER[ZipCommon::HEADER_SIZE]; | ||||||
|  |  | ||||||
|  | 	ZipLocalFileHeader(const Poco::Path& fileName, const Poco::DateTime& lastModifiedAt, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl); | ||||||
|  | 		/// Creates a zip file header from an absoluteFile. fileName is the name of the file in the zip, outputIsSeekable determines if we write | ||||||
|  | 		/// CRC and file sizes to the LocalFileHeader or after data compression into a ZipDataInfo | ||||||
|  |  | ||||||
|  | 	ZipLocalFileHeader(std::istream& inp, bool assumeHeaderRead, ParseCallback& callback); | ||||||
|  | 		/// Creates the ZipLocalFileHeader by parsing the input stream. | ||||||
|  | 		/// If assumeHeaderRead is true we assume that the first 4 bytes were already read outside. | ||||||
|  | 		/// If skipOverDataBlock is true we position the stream after the data block (either at the next FileHeader or the Directory Entry) | ||||||
|  |  | ||||||
|  | 	virtual ~ZipLocalFileHeader(); | ||||||
|  | 		/// Destroys the ZipLocalFileHeader. | ||||||
|  |  | ||||||
|  | 	ZipCommon::HostSystem getHostSystem() const; | ||||||
|  |  | ||||||
|  | 	int getMajorVersionNumber() const; | ||||||
|  |  | ||||||
|  | 	int getMinorVersionNumber() const; | ||||||
|  |  | ||||||
|  | 	void getRequiredVersion(int& major, int& minor); | ||||||
|  | 		/// The minimum version required to extract the data | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getHeaderSize() const; | ||||||
|  | 		/// Returns the total size of the header including filename + extra field size | ||||||
|  |  | ||||||
|  | 	void setStartPos(std::streamoff start); | ||||||
|  | 		/// Sets the start position to start and the end position to start+compressedSize | ||||||
|  |  | ||||||
|  | 	std::streamoff getStartPos() const; | ||||||
|  | 		/// Returns the position of the first byte of the header in the file stream | ||||||
|  |  | ||||||
|  | 	std::streamoff getEndPos() const; | ||||||
|  | 		/// Points past the last byte of the file entry (ie. either the first byte of the next header, or the directory) | ||||||
|  |  | ||||||
|  | 	std::streamoff getDataStartPos() const; | ||||||
|  | 		/// Returns the streamoffset for the very first byte of data. Will be equal to DataEndPos if no data present | ||||||
|  |  | ||||||
|  | 	std::streamoff getDataEndPos() const; | ||||||
|  |  | ||||||
|  | 	ZipCommon::CompressionMethod getCompressionMethod() const; | ||||||
|  |  | ||||||
|  | 	ZipCommon::CompressionLevel getCompressionLevel() const; | ||||||
|  | 	/// Returns the compression level used. Only valid when the compression method is CM_DEFLATE | ||||||
|  |  | ||||||
|  | 	bool isEncrypted() const; | ||||||
|  |  | ||||||
|  | 	const Poco::DateTime& lastModifiedAt() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCRC() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCompressedSize() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getUncompressedSize() const; | ||||||
|  |  | ||||||
|  | 	void setCRC(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	void setCompressedSize(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	void setUncompressedSize(Poco::UInt32 val); | ||||||
|  |  | ||||||
|  | 	const std::string& getFileName() const; | ||||||
|  |  | ||||||
|  | 	bool isFile() const; | ||||||
|  |  | ||||||
|  | 	bool isDirectory() const; | ||||||
|  |  | ||||||
|  | 	bool hasExtraField() const; | ||||||
|  |  | ||||||
|  | 	const std::string& getExtraField() const; | ||||||
|  |  | ||||||
|  | 	bool hasData() const; | ||||||
|  |  | ||||||
|  | 	bool searchCRCAndSizesAfterData() const; | ||||||
|  |  | ||||||
|  | 	void setSearchCRCAndSizesAfterData(bool val); | ||||||
|  |  | ||||||
|  | 	void setFileName(const std::string& fileName, bool isDirectory); | ||||||
|  |  | ||||||
|  | 	std::string createHeader() const; | ||||||
|  | 		/// Creates a header | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	void parse(std::istream& inp, bool assumeHeaderRead); | ||||||
|  |  | ||||||
|  | 	void parseDateTime(); | ||||||
|  |  | ||||||
|  | 	void init(const Poco::Path& fileName, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl); | ||||||
|  |  | ||||||
|  | 	Poco::UInt16 getFileNameLength() const; | ||||||
|  | 	 | ||||||
|  | 	Poco::UInt16 getExtraFieldLength() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCRCFromHeader() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getCompressedSizeFromHeader() const; | ||||||
|  |  | ||||||
|  | 	Poco::UInt32 getUncompressedSizeFromHeader() const; | ||||||
|  |  | ||||||
|  | 	void setRequiredVersion(int major, int minor); | ||||||
|  |  | ||||||
|  | 	void setHostSystem(ZipCommon::HostSystem hs); | ||||||
|  |  | ||||||
|  | 	void setLastModifiedAt(const Poco::DateTime& dt); | ||||||
|  |  | ||||||
|  | 	void setEncryption(bool val); | ||||||
|  |  | ||||||
|  | 	void setFileNameLength(Poco::UInt16 size); | ||||||
|  |  | ||||||
|  | 	void setExtraFieldSize(Poco::UInt16 size); | ||||||
|  |  | ||||||
|  | 	void setCompressionMethod(ZipCommon::CompressionMethod cm); | ||||||
|  |  | ||||||
|  | 	void setCompressionLevel(ZipCommon::CompressionLevel cl); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		HEADER_POS = 0, | ||||||
|  | 		VERSION_SIZE = 2, | ||||||
|  | 		VERSION_POS = HEADER_POS+ZipCommon::HEADER_SIZE, | ||||||
|  | 		GENERAL_PURPOSE_SIZE = 2, | ||||||
|  | 		GENERAL_PURPOSE_POS = VERSION_POS + VERSION_SIZE, | ||||||
|  | 		COMPR_METHOD_SIZE = 2, | ||||||
|  | 		COMPR_METHOD_POS = GENERAL_PURPOSE_POS + GENERAL_PURPOSE_SIZE, | ||||||
|  | 		LASTMODEFILETIME_SIZE = 2, | ||||||
|  | 		LASTMODEFILETIME_POS = COMPR_METHOD_POS + COMPR_METHOD_SIZE, | ||||||
|  | 		LASTMODEFILEDATE_SIZE = 2, | ||||||
|  | 		LASTMODEFILEDATE_POS = LASTMODEFILETIME_POS + LASTMODEFILETIME_SIZE, | ||||||
|  | 		CRC32_SIZE = 4, | ||||||
|  | 		CRC32_POS = LASTMODEFILEDATE_POS + LASTMODEFILEDATE_SIZE, | ||||||
|  | 		COMPRESSEDSIZE_SIZE = 4, | ||||||
|  | 		COMPRESSEDSIZE_POS = CRC32_POS + CRC32_SIZE, | ||||||
|  | 		UNCOMPRESSEDSIZE_SIZE = 4, | ||||||
|  | 		UNCOMPRESSEDSIZE_POS = COMPRESSEDSIZE_POS + COMPRESSEDSIZE_SIZE, | ||||||
|  | 		FILELENGTH_SIZE = 2, | ||||||
|  | 		FILELENGTH_POS = UNCOMPRESSEDSIZE_POS + UNCOMPRESSEDSIZE_SIZE, | ||||||
|  | 		EXTRAFIELD_LENGTH = 2, | ||||||
|  | 		EXTRAFIELD_POS = FILELENGTH_POS + FILELENGTH_SIZE, | ||||||
|  | 		FULLHEADER_SIZE = 30 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	char           _rawHeader[FULLHEADER_SIZE]; | ||||||
|  | 	std::streamoff _startPos; | ||||||
|  | 	std::streamoff _endPos; | ||||||
|  | 	std::string    _fileName; | ||||||
|  | 	Poco::DateTime _lastModifiedAt; | ||||||
|  | 	std::string    _extraField; | ||||||
|  | 	Poco::UInt32   _crc32; | ||||||
|  | 	Poco::UInt32   _compressedSize; | ||||||
|  | 	Poco::UInt32   _uncompressedSize; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setFileNameLength(Poco::UInt16 size) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(size, _rawHeader, FILELENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setExtraFieldSize(Poco::UInt16 size) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(size, _rawHeader, EXTRAFIELD_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipCommon::HostSystem ZipLocalFileHeader::getHostSystem() const | ||||||
|  | { | ||||||
|  | 	return static_cast<ZipCommon::HostSystem>(_rawHeader[VERSION_POS + 1]); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setHostSystem(ZipCommon::HostSystem hs) | ||||||
|  | { | ||||||
|  | 	_rawHeader[VERSION_POS + 1] = static_cast<char>(hs); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline int ZipLocalFileHeader::getMajorVersionNumber() const | ||||||
|  | { | ||||||
|  | 	return (_rawHeader[VERSION_POS]/10); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline int ZipLocalFileHeader::getMinorVersionNumber() const | ||||||
|  | { | ||||||
|  | 	return (_rawHeader[VERSION_POS]%10); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::getRequiredVersion(int& major, int& minor) | ||||||
|  | { | ||||||
|  | 	major = getMajorVersionNumber(); | ||||||
|  | 	minor = getMinorVersionNumber(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setRequiredVersion(int major, int minor) | ||||||
|  | { | ||||||
|  | 	poco_assert (minor < 10); | ||||||
|  | 	poco_assert (major < 24); | ||||||
|  | 	_rawHeader[VERSION_POS] = static_cast<char>(static_cast<unsigned char>(major)*10+static_cast<unsigned char>(minor)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipLocalFileHeader::getFileNameLength() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawHeader, FILELENGTH_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipLocalFileHeader::getExtraFieldLength() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get16BitValue(_rawHeader, EXTRAFIELD_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getHeaderSize() const | ||||||
|  | { | ||||||
|  | 	return FULLHEADER_SIZE+getExtraFieldLength()+getFileNameLength(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline std::streamoff ZipLocalFileHeader::getStartPos() const | ||||||
|  | { | ||||||
|  | 	return _startPos; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setStartPos(std::streamoff start) | ||||||
|  | { | ||||||
|  | 	_startPos = start; | ||||||
|  | 	_endPos = start + getHeaderSize()+getCompressedSize(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline std::streamoff ZipLocalFileHeader::getEndPos() const | ||||||
|  | { | ||||||
|  | 	return _endPos; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::parseDateTime() | ||||||
|  | { | ||||||
|  | 	_lastModifiedAt = ZipUtil::parseDateTime(_rawHeader, LASTMODEFILETIME_POS, LASTMODEFILEDATE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setLastModifiedAt(const Poco::DateTime& dt) | ||||||
|  | { | ||||||
|  | 	_lastModifiedAt = dt; | ||||||
|  | 	ZipUtil::setDateTime(dt, _rawHeader, LASTMODEFILETIME_POS, LASTMODEFILEDATE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipCommon::CompressionMethod ZipLocalFileHeader::getCompressionMethod() const | ||||||
|  | { | ||||||
|  | 	return static_cast<ZipCommon::CompressionMethod>(ZipUtil::get16BitValue(_rawHeader, COMPR_METHOD_POS)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline ZipCommon::CompressionLevel ZipLocalFileHeader::getCompressionLevel() const | ||||||
|  | { | ||||||
|  | 	// bit 1 and 2 indicate the level | ||||||
|  | 	return static_cast<ZipCommon::CompressionLevel>((ZipUtil::get16BitValue(_rawHeader, GENERAL_PURPOSE_POS)>>1) & 0x0003); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setCompressionMethod(ZipCommon::CompressionMethod cm) | ||||||
|  | { | ||||||
|  | 	ZipUtil::set16BitValue(static_cast<Poco::UInt16>(cm), _rawHeader, COMPR_METHOD_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setCompressionLevel(ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	// bit 1 and 2 indicate the level | ||||||
|  | 	Poco::UInt16 val = static_cast<Poco::UInt16>(cl); | ||||||
|  | 	val <<= 1;  | ||||||
|  | 	Poco::UInt16 mask = 0xfff9; | ||||||
|  | 	_rawHeader[GENERAL_PURPOSE_POS] = ((_rawHeader[GENERAL_PURPOSE_POS] & mask) | val); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipLocalFileHeader::isEncrypted() const | ||||||
|  | { | ||||||
|  | 	// bit 0 indicates encryption | ||||||
|  | 	return ((ZipUtil::get16BitValue(_rawHeader, GENERAL_PURPOSE_POS) & 0x0001) != 0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setEncryption(bool val) | ||||||
|  | { | ||||||
|  | 	if (val) | ||||||
|  | 		_rawHeader[GENERAL_PURPOSE_POS] |= 0x01; | ||||||
|  | 	else | ||||||
|  | 		_rawHeader[GENERAL_PURPOSE_POS] &= 0xfe; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setSearchCRCAndSizesAfterData(bool val) | ||||||
|  | { | ||||||
|  | 	//set bit 3 of general purpose reg | ||||||
|  | 	if (val) | ||||||
|  | 		_rawHeader[GENERAL_PURPOSE_POS] |= 0x08; | ||||||
|  | 	else | ||||||
|  | 		_rawHeader[GENERAL_PURPOSE_POS] &= 0xf7; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const Poco::DateTime& ZipLocalFileHeader::lastModifiedAt() const | ||||||
|  | { | ||||||
|  | 	return _lastModifiedAt; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getCRC() const | ||||||
|  | { | ||||||
|  | 	return _crc32; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getCompressedSize() const | ||||||
|  | { | ||||||
|  | 	return _compressedSize; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getUncompressedSize() const | ||||||
|  | { | ||||||
|  | 	return _uncompressedSize; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setCRC(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	_crc32 = val; | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawHeader, CRC32_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setCompressedSize(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	_compressedSize = val; | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawHeader, COMPRESSEDSIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipLocalFileHeader::setUncompressedSize(Poco::UInt32 val) | ||||||
|  | { | ||||||
|  | 	_uncompressedSize = val; | ||||||
|  | 	ZipUtil::set32BitValue(val, _rawHeader, UNCOMPRESSEDSIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getCRCFromHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawHeader, CRC32_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getCompressedSizeFromHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawHeader, COMPRESSEDSIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipLocalFileHeader::getUncompressedSizeFromHeader() const | ||||||
|  | { | ||||||
|  | 	return ZipUtil::get32BitValue(_rawHeader, UNCOMPRESSEDSIZE_POS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& ZipLocalFileHeader::getFileName() const | ||||||
|  | { | ||||||
|  | 	return _fileName; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipLocalFileHeader::isFile() const | ||||||
|  | { | ||||||
|  | 	return !isDirectory(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipLocalFileHeader::isDirectory() const | ||||||
|  | { | ||||||
|  | 	poco_assert_dbg(!_fileName.empty()); | ||||||
|  | 	return getUncompressedSize() == 0 && getCompressionMethod() == ZipCommon::CM_STORE && _fileName[_fileName.length()-1] == '/'; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipLocalFileHeader::hasExtraField() const | ||||||
|  | { | ||||||
|  | 	return getExtraFieldLength() > 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& ZipLocalFileHeader::getExtraField() const | ||||||
|  | { | ||||||
|  | 	return _extraField; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline bool ZipLocalFileHeader::hasData() const | ||||||
|  | { | ||||||
|  | 	return (getCompressedSize() > 0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline std::streamoff ZipLocalFileHeader::getDataStartPos() const | ||||||
|  | { | ||||||
|  | 	return getStartPos() + getHeaderSize(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline std::streamoff ZipLocalFileHeader::getDataEndPos() const | ||||||
|  | { | ||||||
|  | 	return getDataStartPos()+getCompressedSize(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipLocalFileHeader_INCLUDED | ||||||
							
								
								
									
										131
									
								
								Zip/include/Poco/Zip/ZipManipulator.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								Zip/include/Poco/Zip/ZipManipulator.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,131 @@ | |||||||
|  | // | ||||||
|  | // ZipManipulator.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipManipulator.h#2 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  ZipManipulator | ||||||
|  | // | ||||||
|  | // Definition of the ZipManipulator class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipManipulator_INCLUDED | ||||||
|  | #define Zip_ZipManipulator_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  | #include "Poco/FIFOEvent.h" | ||||||
|  | #include "Poco/SharedPtr.h" | ||||||
|  | #include <map> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipArchive; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipManipulator | ||||||
|  | 	/// ZipManipulator allows to add/remove/update files inside zip files | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	Poco::FIFOEvent<const ZipLocalFileHeader> EDone; | ||||||
|  | 		// Fired for each entry once commit is invoked | ||||||
|  |  | ||||||
|  | 	ZipManipulator(const std::string& zipFile, bool backupOriginalFile); | ||||||
|  | 		/// Creates the ZipManipulator. | ||||||
|  |  | ||||||
|  | 	virtual ~ZipManipulator(); | ||||||
|  | 		/// Destroys the ZipManipulator. | ||||||
|  |  | ||||||
|  | 	void deleteFile(const std::string& zipPath); | ||||||
|  | 		/// Removes the given file from the Zip archive. | ||||||
|  |  | ||||||
|  | 	void replaceFile(const std::string& zipPath, const std::string& localPath); | ||||||
|  | 		/// Replaces the contents of the file in the archive with the contents | ||||||
|  | 		/// from the file given by localPath. | ||||||
|  |  | ||||||
|  | 	void renameFile(const std::string& zipPath, const std::string& newZipPath); | ||||||
|  | 		/// Renames the file in the archive to newZipPath | ||||||
|  |  | ||||||
|  | 	void addFile(const std::string& zipPath, const std::string& localPath, ZipCommon::CompressionMethod cm = ZipCommon::CM_DEFLATE, ZipCommon::CompressionLevel cl = ZipCommon::CL_MAXIMUM); | ||||||
|  | 		/// Adds a file to the zip file. | ||||||
|  |  | ||||||
|  | 	ZipArchive commit(); | ||||||
|  | 		/// Commits all changes and re-creates the Zip File with the changes applied.  | ||||||
|  | 		/// Returns the ZipArchive for the newly created archive | ||||||
|  | 		/// | ||||||
|  | 		/// Changes will be first written to a temporary file,  | ||||||
|  | 		/// then the originalfile will be either deleted or renamed to .bak, | ||||||
|  | 		/// then, the temp file will be renamed to the original zip file name. | ||||||
|  |  | ||||||
|  | 	const ZipArchive& originalArchive() const; | ||||||
|  | 		/// Returns the original archive information | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	const ZipLocalFileHeader& getForChange(const std::string& zipPath) const; | ||||||
|  | 		/// Searches for the entry given by the zipPath. | ||||||
|  | 		/// Throws an exception if the entry does not exist | ||||||
|  | 		/// or if an entry already exists in the Changeslist | ||||||
|  |  | ||||||
|  | 	void addOperation(const std::string& zipPath, ZipOperation::Ptr ptrOp); | ||||||
|  | 		/// Adds the operation to the changes list. Throws an exception if an | ||||||
|  | 		/// entry for the zipPath already exists | ||||||
|  |  | ||||||
|  | 	void onEDone(const void* pSender, const ZipLocalFileHeader& hdr); | ||||||
|  | 		/// Forwards the event to the EDone event | ||||||
|  |  | ||||||
|  | 	ZipArchive compress(const std::string& outFile); | ||||||
|  | 		/// Compresses the new file to outFile | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	typedef std::map<std::string, ZipOperation::Ptr> Changes; | ||||||
|  |  | ||||||
|  | 	const std::string _zipFile; | ||||||
|  | 	bool              _backupOriginalFile; | ||||||
|  | 	Changes           _changes; | ||||||
|  | 	Poco::SharedPtr<ZipArchive>        _in; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const ZipArchive& ZipManipulator::originalArchive() const | ||||||
|  | { | ||||||
|  | 	return *_in; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipManipulator_INCLUDED | ||||||
							
								
								
									
										78
									
								
								Zip/include/Poco/Zip/ZipOperation.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								Zip/include/Poco/Zip/ZipOperation.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | |||||||
|  | // | ||||||
|  | // ZipOperation.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipOperation.h#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  ZipOperation | ||||||
|  | // | ||||||
|  | // Definition of the ZipOperation class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipOperation_INCLUDED | ||||||
|  | #define Zip_ZipOperation_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/RefCountedObject.h" | ||||||
|  | #include "Poco/AutoPtr.h" | ||||||
|  | #include <ostream> | ||||||
|  | #include <istream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Compress; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipOperation: public Poco::RefCountedObject | ||||||
|  | 	/// Abstract super class for operations on individual zip entries | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	typedef Poco::AutoPtr<ZipOperation> Ptr; | ||||||
|  |  | ||||||
|  | 	ZipOperation(); | ||||||
|  | 		/// Creates the ZipOperation. | ||||||
|  |  | ||||||
|  | 	virtual void execute(Compress& c, std::istream& input) = 0; | ||||||
|  | 		/// Executes the operation | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	virtual ~ZipOperation(); | ||||||
|  | 		/// Destroys the ZipOperation. | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipOperation_INCLUDED | ||||||
							
								
								
									
										171
									
								
								Zip/include/Poco/Zip/ZipStream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										171
									
								
								Zip/include/Poco/Zip/ZipStream.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,171 @@ | |||||||
|  | // | ||||||
|  | // ZipStream.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipStream.h#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipStream | ||||||
|  | // | ||||||
|  | // Definition of the ZipStream class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipStream_INCLUDED | ||||||
|  | #define Zip_ZipStream_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/PartialStream.h" | ||||||
|  | #include "Poco/SharedPtr.h" | ||||||
|  | #include "Poco/BufferedStreamBuf.h" | ||||||
|  | #include "Poco/Checksum.h" | ||||||
|  | #include <istream> | ||||||
|  | #include <ostream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipArchive; | ||||||
|  | class ZipLocalFileHeader; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipStreamBuf: public Poco::BufferedStreamBuf | ||||||
|  | 	/// ZipStreamBuf is used to decompress single files from a Zip file. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ZipStreamBuf(std::istream& istr, const ZipLocalFileHeader& fileEntry, bool reposition); | ||||||
|  | 		/// Creates the ZipStreamBuf. Set reposition to false, if you do on-the-fly decompression. | ||||||
|  | 	 | ||||||
|  | 	ZipStreamBuf(std::ostream& ostr, ZipLocalFileHeader& fileEntry, bool reposition); | ||||||
|  | 		/// Creates the ZipStreamBuf. Set reposition to false, if you do on-the-fly compression. | ||||||
|  |  | ||||||
|  | 	virtual ~ZipStreamBuf(); | ||||||
|  | 		/// Destroys the ZipStreamBuf. | ||||||
|  |  | ||||||
|  | 	void close(); | ||||||
|  | 		/// Informs a writing outputstream that writing is done for this stream | ||||||
|  |  | ||||||
|  | 	bool crcValid() const; | ||||||
|  | 		/// Call this method once all bytes were read from the input stream to determine if the CRC is valid | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	int readFromDevice(char* buffer, std::streamsize length); | ||||||
|  |  | ||||||
|  | 	int writeToDevice(const char* buffer, std::streamsize length); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		STREAM_BUFFER_SIZE = 1024 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	typedef Poco::SharedPtr<std::istream> PtrIStream; | ||||||
|  | 	typedef Poco::SharedPtr<std::ostream> PtrOStream; | ||||||
|  | 	std::istream*  _pIstr; | ||||||
|  | 	std::ostream*  _pOstr; | ||||||
|  | 	PtrIStream     _ptrBuf; | ||||||
|  | 	PtrOStream     _ptrOBuf; | ||||||
|  | 	PtrIStream     _ptrHelper; | ||||||
|  | 	Poco::SharedPtr<PartialOutputStream> _ptrOHelper; | ||||||
|  | 	Poco::Checksum _crc32; | ||||||
|  | 	Poco::UInt32   _expectedCrc32; | ||||||
|  | 	bool           _checkCRC; | ||||||
|  | 		/// Note: we do not check crc if we decompress a streaming zip file and the crc is stored in the directory header | ||||||
|  | 	Poco::UInt32   _bytesWritten; | ||||||
|  | 	ZipLocalFileHeader* _pHeader; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipIOS: public virtual std::ios | ||||||
|  | 	/// The base class for ZipInputStream and ZipOutputStream. | ||||||
|  | 	/// | ||||||
|  | 	/// This class is needed to ensure the correct initialization | ||||||
|  | 	/// order of the stream buffer and base classes. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ZipIOS(std::istream& istr, const ZipLocalFileHeader& fileEntry, bool reposition); | ||||||
|  | 		/// Creates the basic stream and connects it | ||||||
|  | 		/// to the given input stream. | ||||||
|  |  | ||||||
|  | 	ZipIOS(std::ostream& ostr, ZipLocalFileHeader& fileEntry, bool reposition); | ||||||
|  | 		/// Creates the basic stream and connects it | ||||||
|  | 		/// to the given output stream. | ||||||
|  |  | ||||||
|  | 	~ZipIOS(); | ||||||
|  | 		/// Destroys the stream. | ||||||
|  |  | ||||||
|  | 	ZipStreamBuf* rdbuf(); | ||||||
|  | 		/// Returns a pointer to the underlying streambuf. | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	ZipStreamBuf _buf; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipInputStream: public ZipIOS, public std::istream | ||||||
|  | 	/// This stream copies all characters read through it | ||||||
|  | 	/// to one or multiple output streams. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ZipInputStream(std::istream& istr, const ZipLocalFileHeader& fileEntry, bool reposition = true); | ||||||
|  | 		/// Creates the ZipInputStream and connects it | ||||||
|  | 		/// to the given input stream. | ||||||
|  |  | ||||||
|  | 	~ZipInputStream(); | ||||||
|  | 		/// Destroys the ZipInputStream. | ||||||
|  |  | ||||||
|  | 	bool crcValid() const; | ||||||
|  | 		/// Call this method once all bytes were read from the input stream to determine if the CRC is valid | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zip_API ZipOutputStream: public ZipIOS, public std::ostream | ||||||
|  | 	/// This stream compresses all characters written through it | ||||||
|  | 	/// to one output stream. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ZipOutputStream(std::ostream& ostr, ZipLocalFileHeader& fileEntry, bool seekableOutput); | ||||||
|  | 		/// Creates the ZipOutputStream and connects it | ||||||
|  | 		/// to the given output stream. | ||||||
|  |  | ||||||
|  | 	~ZipOutputStream(); | ||||||
|  | 		/// Destroys the ZipOutputStream. | ||||||
|  |  | ||||||
|  | 	void close(); | ||||||
|  | 		/// Must be called for ZipOutputStreams! | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipStream_INCLUDED | ||||||
							
								
								
									
										119
									
								
								Zip/include/Poco/Zip/ZipUtil.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								Zip/include/Poco/Zip/ZipUtil.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | |||||||
|  | // | ||||||
|  | // ZipUtil.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/include/Poco/Zip/ZipUtil.h#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipUtil | ||||||
|  | // | ||||||
|  | // Definition of the ZipUtil class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef Zip_ZipUtil_INCLUDED | ||||||
|  | #define Zip_ZipUtil_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  | #include "Poco/DateTime.h" | ||||||
|  | #include "Poco/Path.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipUtil | ||||||
|  | 	/// A utility class used for parsing header information inside of zip files | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	static Poco::UInt16 get16BitValue(const char* pVal, const Poco::UInt32 pos); | ||||||
|  |  | ||||||
|  | 	static Poco::UInt32 get32BitValue(const char* pVal, const Poco::UInt32 pos); | ||||||
|  |  | ||||||
|  | 	static void set16BitValue(const Poco::UInt16 val, char* pVal, const Poco::UInt32 pos); | ||||||
|  |  | ||||||
|  | 	static void set32BitValue(const Poco::UInt32 val, char* pVal, const Poco::UInt32 pos); | ||||||
|  |  | ||||||
|  | 	static Poco::DateTime parseDateTime(const char* pVal, const Poco::UInt32 timePos, const Poco::UInt32 datePos); | ||||||
|  |  | ||||||
|  | 	static void setDateTime(const Poco::DateTime& dt, char* pVal, const Poco::UInt32 timePos, const Poco::UInt32 datePos); | ||||||
|  |  | ||||||
|  | 	static std::string fakeZLibInitString(ZipCommon::CompressionLevel cl); | ||||||
|  |  | ||||||
|  | 	static void sync(std::istream& in); | ||||||
|  | 		/// Searches the next valid header in the input stream, stops right before it | ||||||
|  |  | ||||||
|  | 	static void verifyZipEntryFileName(const std::string& zipPath); | ||||||
|  | 		/// Verifies that the name of the ZipEntry is a valid path | ||||||
|  |  | ||||||
|  | 	static std::string validZipEntryFileName(const Poco::Path& entry); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	ZipUtil(); | ||||||
|  | 	~ZipUtil(); | ||||||
|  | 	ZipUtil(const ZipUtil&); | ||||||
|  | 	ZipUtil& operator=(const ZipUtil&); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt16 ZipUtil::get16BitValue(const char* pVal, const Poco::UInt32 pos) | ||||||
|  | { | ||||||
|  | 	return static_cast<Poco::UInt16>((unsigned char)pVal[pos])+ (static_cast<Poco::UInt16>((unsigned char)pVal[pos+1]) << 8); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline Poco::UInt32 ZipUtil::get32BitValue(const char* pVal, const Poco::UInt32 pos) | ||||||
|  | { | ||||||
|  | 	return static_cast<Poco::UInt32>((unsigned char)pVal[pos])+ (static_cast<Poco::UInt32>((unsigned char)pVal[pos+1]) << 8)+ | ||||||
|  | 		(static_cast<Poco::UInt32>((unsigned char)pVal[pos+2]) << 16) + (static_cast<Poco::UInt32>((unsigned char)pVal[pos+3]) << 24); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipUtil::set16BitValue(const Poco::UInt16 val, char* pVal, const Poco::UInt32 pos) | ||||||
|  | { | ||||||
|  | 	pVal[pos] = static_cast<char>(val); | ||||||
|  | 	pVal[pos+1] = static_cast<char>(val>>8); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void ZipUtil::set32BitValue(const Poco::UInt32 val, char* pVal, const Poco::UInt32 pos) | ||||||
|  | { | ||||||
|  | 	pVal[pos] = static_cast<char>(val); | ||||||
|  | 	pVal[pos+1] = static_cast<char>(val>>8); | ||||||
|  | 	pVal[pos+2] = static_cast<char>(val>>16); | ||||||
|  | 	pVal[pos+3] = static_cast<char>(val>>24); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // Zip_ZipUtil_INCLUDED | ||||||
							
								
								
									
										13
									
								
								Zip/samples/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Zip/samples/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | # | ||||||
|  | # Makefile | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/samples/Makefile#1 $ | ||||||
|  | # | ||||||
|  | # Makefile for Poco Util Samples | ||||||
|  | # | ||||||
|  |  | ||||||
|  | .PHONY: projects | ||||||
|  | clean all: projects | ||||||
|  | projects: | ||||||
|  | 	$(MAKE) -C unzip $(MAKECMDGOALS) | ||||||
|  | 	$(MAKE) -C zip $(MAKECMDGOALS) | ||||||
							
								
								
									
										39
									
								
								Zip/samples/samples_vs71.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Zip/samples/samples_vs71.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | Microsoft Visual Studio Solution File, Format Version 8.00 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unzip", "unzip\unzip_vs71.vcproj", "{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip", "zip\zip_vs71.vcproj", "{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfiguration) = preSolution | ||||||
|  | 		debug_shared = debug_shared | ||||||
|  | 		debug_static = debug_static | ||||||
|  | 		release_shared = release_shared | ||||||
|  | 		release_static = release_static | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfiguration) = postSolution | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_shared.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_shared.Build.0 = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_static.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_static.Build.0 = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_shared.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_shared.Build.0 = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_static.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_static.Build.0 = release_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_shared.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_shared.Build.0 = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_static.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_static.Build.0 = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_shared.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_shared.Build.0 = release_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_static.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_static.Build.0 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityAddIns) = postSolution | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										25
									
								
								Zip/samples/samples_vs80.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Zip/samples/samples_vs80.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | Microsoft Visual Studio Solution File, Format Version 9.00 | ||||||
|  | # Visual Studio 2005 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip", "zip\zip_vs80.vcproj", "{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}" | ||||||
|  | EndProject | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unzip", "unzip\unzip_vs80.vcproj", "{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		debug_shared|Win32 = debug_shared|Win32 | ||||||
|  | 		release_shared|Win32 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										25
									
								
								Zip/samples/samples_vs90.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Zip/samples/samples_vs90.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | Microsoft Visual Studio Solution File, Format Version 10.00 | ||||||
|  | # Visual Studio 2008 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip", "zip\zip_vs90.vcproj", "{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}" | ||||||
|  | EndProject | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unzip", "unzip\unzip_vs90.vcproj", "{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		debug_shared|Win32 = debug_shared|Win32 | ||||||
|  | 		release_shared|Win32 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.debug_shared|Win32.Build.0 = debug_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_shared|Win32.ActiveCfg = release_shared|Win32 | ||||||
|  | 		{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}.release_shared|Win32.Build.0 = release_shared|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										17
									
								
								Zip/samples/unzip/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Zip/samples/unzip/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | # | ||||||
|  | # Makefile | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/samples/unzip/Makefile#1 $ | ||||||
|  | # | ||||||
|  | # Makefile for Poco SampleServer | ||||||
|  | # | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/global | ||||||
|  |  | ||||||
|  | objects = unzip | ||||||
|  |  | ||||||
|  | target         = unzip | ||||||
|  | target_version = 1 | ||||||
|  | target_libs    = PocoZip PocoUtil PocoXML PocoFoundation | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/exec | ||||||
							
								
								
									
										182
									
								
								Zip/samples/unzip/src/unzip.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								Zip/samples/unzip/src/unzip.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,182 @@ | |||||||
|  | // | ||||||
|  | // unzip.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/samples/unzip/src/unzip.cpp#3 $ | ||||||
|  | // | ||||||
|  | // This sample demonstrates the Decompress class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Util/Application.h" | ||||||
|  | #include "Poco/Util/Option.h" | ||||||
|  | #include "Poco/Util/OptionSet.h" | ||||||
|  | #include "Poco/Util/HelpFormatter.h" | ||||||
|  | #include "Poco/Util/AbstractConfiguration.h" | ||||||
|  | #include "Poco/AutoPtr.h" | ||||||
|  | #include "Poco/Zip/Decompress.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/Path.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include "Poco/Delegate.h" | ||||||
|  | #include <iostream> | ||||||
|  | #include <fstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | using Poco::Util::Application; | ||||||
|  | using Poco::Util::Option; | ||||||
|  | using Poco::Util::OptionSet; | ||||||
|  | using Poco::Util::HelpFormatter; | ||||||
|  | using Poco::Util::AbstractConfiguration; | ||||||
|  | using Poco::Util::OptionCallback; | ||||||
|  | using Poco::Zip::ZipLocalFileHeader; | ||||||
|  | using Poco::AutoPtr; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class DecompressHandler | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	DecompressHandler() | ||||||
|  | 	{ | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	~DecompressHandler() | ||||||
|  | 	{ | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void onError(const void*, std::pair<const ZipLocalFileHeader, const std::string>& info) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Util::Application::instance().logger().error("ERR: " + info.second); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void onOk(const void*, std::pair<const ZipLocalFileHeader, const Poco::Path>& info) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Util::Application::instance().logger().information("OK: " + info.second.toString(Poco::Path::PATH_UNIX)); | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class UnzipApp: public Application | ||||||
|  | 	/// This sample demonstrates some of the features of the Util::Application class, | ||||||
|  | 	/// such as configuration file handling and command line arguments processing. | ||||||
|  | 	/// | ||||||
|  | 	/// Try zip --help (on Unix platforms) or zip /help (elsewhere) for | ||||||
|  | 	/// more information. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	UnzipApp(): _helpRequested(false) | ||||||
|  | 	{ | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | protected:	 | ||||||
|  | 	void initialize(Application& self) | ||||||
|  | 	{ | ||||||
|  | 		loadConfiguration(); // load default configuration files, if present | ||||||
|  | 		Application::initialize(self); | ||||||
|  | 		// add your own initialization code here | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void uninitialize() | ||||||
|  | 	{ | ||||||
|  | 		// add your own uninitialization code here | ||||||
|  | 		Application::uninitialize(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void reinitialize(Application& self) | ||||||
|  | 	{ | ||||||
|  | 		Application::reinitialize(self); | ||||||
|  | 		// add your own reinitialization code here | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void defineOptions(OptionSet& options) | ||||||
|  | 	{ | ||||||
|  | 		Application::defineOptions(options); | ||||||
|  |  | ||||||
|  | 		options.addOption( | ||||||
|  | 			Option("help", "h", "display help information on command line arguments") | ||||||
|  | 				.required(false) | ||||||
|  | 				.repeatable(false) | ||||||
|  | 				.callback(OptionCallback<UnzipApp>(this, &UnzipApp::handleHelp))); | ||||||
|  |  | ||||||
|  | 		options.addOption( | ||||||
|  | 			Option("file", "f", "specifies the input zip file") | ||||||
|  | 				.required(true) | ||||||
|  | 				.repeatable(false) | ||||||
|  | 				.argument("filename") | ||||||
|  | 				.callback(OptionCallback<UnzipApp>(this, &UnzipApp::handleFile))); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void handleHelp(const std::string& name, const std::string& value) | ||||||
|  | 	{ | ||||||
|  | 		_helpRequested = true; | ||||||
|  | 		displayHelp(); | ||||||
|  | 		stopOptionsProcessing(); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void handleFile(const std::string& name, const std::string& value) | ||||||
|  | 	{ | ||||||
|  | 		_zipFile = value; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void displayHelp() | ||||||
|  | 	{ | ||||||
|  | 		HelpFormatter helpFormatter(options()); | ||||||
|  | 		helpFormatter.setCommand(commandName()); | ||||||
|  | 		helpFormatter.setUsage("OPTIONS outdir"); | ||||||
|  | 		helpFormatter.setHeader("A application that demonstrates usage of Poco::Zip::Decompress class."); | ||||||
|  | 		helpFormatter.format(std::cout); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  |  | ||||||
|  | 	int main(const std::vector<std::string>& args) | ||||||
|  | 	{ | ||||||
|  | 		if (!_helpRequested) | ||||||
|  | 		{ | ||||||
|  | 			Poco::Path outputDir; | ||||||
|  | 			if (!args.empty()) | ||||||
|  | 				outputDir.parseDirectory(args[0]); | ||||||
|  |  | ||||||
|  | 			std::ifstream in(_zipFile.c_str(), std::ios::binary); | ||||||
|  | 			Poco::Zip::Decompress c(in, outputDir); | ||||||
|  | 			DecompressHandler handler; | ||||||
|  | 			c.EError += Poco::Delegate<DecompressHandler, std::pair<const ZipLocalFileHeader, const std::string> >(&handler, &DecompressHandler::onError); | ||||||
|  | 			c.EOk +=Poco::Delegate<DecompressHandler, std::pair<const ZipLocalFileHeader, const Poco::Path> >(&handler, &DecompressHandler::onOk); | ||||||
|  | 			c.decompressAllFiles(); | ||||||
|  | 			c.EError -= Poco::Delegate<DecompressHandler, std::pair<const ZipLocalFileHeader, const std::string> >(&handler, &DecompressHandler::onError); | ||||||
|  | 			c.EOk -=Poco::Delegate<DecompressHandler, std::pair<const ZipLocalFileHeader, const Poco::Path> >(&handler, &DecompressHandler::onOk); | ||||||
|  | 		} | ||||||
|  | 		return Application::EXIT_OK; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | private: | ||||||
|  | 	bool _helpRequested; | ||||||
|  | 	std::string _zipFile; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | POCO_APP_MAIN(UnzipApp) | ||||||
							
								
								
									
										149
									
								
								Zip/samples/unzip/unzip_vs71.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								Zip/samples/unzip/unzip_vs71.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,149 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="7.10" | ||||||
|  | 	Name="unzip" | ||||||
|  | 	ProjectGUID="{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}" | ||||||
|  | 	Keyword="Win32Proj"> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32"/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Zip\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="TRUE" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="TRUE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="4"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib PocoXMLd.lib PocoUtild.lib PocoZipd.lib" | ||||||
|  | 				OutputFile="bin/unzipd.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="TRUE" | ||||||
|  | 				ProgramDatabaseFile="bin/unzipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="TRUE" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="TRUE" | ||||||
|  | 				OptimizeForWindowsApplication="TRUE" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Zip\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="TRUE" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="FALSE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="3"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib PocoXML.lib PocoUtil.lib PocoZip.lib" | ||||||
|  | 				OutputFile="bin/unzip.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="FALSE" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Header Files" | ||||||
|  | 			Filter=""> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Source Files" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<File | ||||||
|  | 				RelativePath=".\src\unzip.cpp"> | ||||||
|  | 			</File> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										213
									
								
								Zip/samples/unzip/unzip_vs80.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								Zip/samples/unzip/unzip_vs80.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,213 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="8,00" | ||||||
|  | 	Name="unzip" | ||||||
|  | 	ProjectGUID="{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib PocoXMLd.lib PocoUtild.lib PocoZipd.lib" | ||||||
|  | 				OutputFile="bin/unzipd.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="bin/unzipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="3" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib PocoXML.lib PocoUtil.lib PocoZip.lib" | ||||||
|  | 				OutputFile="bin/unzip.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Header Files" | ||||||
|  | 			> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Source Files" | ||||||
|  | 			> | ||||||
|  | 			<File | ||||||
|  | 				RelativePath=".\src\unzip.cpp" | ||||||
|  | 				> | ||||||
|  | 			</File> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										213
									
								
								Zip/samples/unzip/unzip_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								Zip/samples/unzip/unzip_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,213 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="9.00" | ||||||
|  | 	Name="unzip" | ||||||
|  | 	ProjectGUID="{0CFFC7B0-04F4-4A60-B6E4-84D78EDA2C73}" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib PocoXMLd.lib PocoUtild.lib PocoZipd.lib" | ||||||
|  | 				OutputFile="bin/unzipd.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="bin/unzipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="3" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib PocoXML.lib PocoUtil.lib PocoZip.lib" | ||||||
|  | 				OutputFile="bin/unzip.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Header Files" | ||||||
|  | 			> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Source Files" | ||||||
|  | 			> | ||||||
|  | 			<File | ||||||
|  | 				RelativePath=".\src\unzip.cpp" | ||||||
|  | 				> | ||||||
|  | 			</File> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										17
									
								
								Zip/samples/zip/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Zip/samples/zip/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | # | ||||||
|  | # Makefile | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/samples/zip/Makefile#1 $ | ||||||
|  | # | ||||||
|  | # Makefile for Poco SampleApp | ||||||
|  | # | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/global | ||||||
|  |  | ||||||
|  | objects = zip | ||||||
|  |  | ||||||
|  | target         = zip | ||||||
|  | target_version = 1 | ||||||
|  | target_libs    = PocoZip PocoUtil PocoXML PocoFoundation | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/exec | ||||||
							
								
								
									
										183
									
								
								Zip/samples/zip/src/zip.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								Zip/samples/zip/src/zip.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,183 @@ | |||||||
|  | // | ||||||
|  | // zip.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/samples/zip/src/zip.cpp#3 $ | ||||||
|  | // | ||||||
|  | // This sample demonstrates the Compress class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Util/Application.h" | ||||||
|  | #include "Poco/Util/Option.h" | ||||||
|  | #include "Poco/Util/OptionSet.h" | ||||||
|  | #include "Poco/Util/HelpFormatter.h" | ||||||
|  | #include "Poco/Util/AbstractConfiguration.h" | ||||||
|  | #include "Poco/AutoPtr.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  | #include "Poco/Path.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include "Poco/Delegate.h" | ||||||
|  | #include <iostream> | ||||||
|  | #include <fstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | using Poco::Util::Application; | ||||||
|  | using Poco::Util::Option; | ||||||
|  | using Poco::Util::OptionSet; | ||||||
|  | using Poco::Util::HelpFormatter; | ||||||
|  | using Poco::Util::AbstractConfiguration; | ||||||
|  | using Poco::Util::OptionCallback; | ||||||
|  | using Poco::AutoPtr; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipApp: public Application | ||||||
|  | 	/// This sample demonstrates some of the features of the Util::Application class, | ||||||
|  | 	/// such as configuration file handling and command line arguments processing. | ||||||
|  | 	/// | ||||||
|  | 	/// Try zip --help (on Unix platforms) or zip /help (elsewhere) for | ||||||
|  | 	/// more information. | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ZipApp(): _helpRequested(false) | ||||||
|  | 	{ | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | protected:	 | ||||||
|  | 	void initialize(Application& self) | ||||||
|  | 	{ | ||||||
|  | 		loadConfiguration(); // load default configuration files, if present | ||||||
|  | 		Application::initialize(self); | ||||||
|  | 		// add your own initialization code here | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void uninitialize() | ||||||
|  | 	{ | ||||||
|  | 		// add your own uninitialization code here | ||||||
|  | 		Application::uninitialize(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void reinitialize(Application& self) | ||||||
|  | 	{ | ||||||
|  | 		Application::reinitialize(self); | ||||||
|  | 		// add your own reinitialization code here | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void defineOptions(OptionSet& options) | ||||||
|  | 	{ | ||||||
|  | 		Application::defineOptions(options); | ||||||
|  |  | ||||||
|  | 		options.addOption( | ||||||
|  | 			Option("help", "h", "display help information on command line arguments") | ||||||
|  | 				.required(false) | ||||||
|  | 				.repeatable(false) | ||||||
|  | 				.callback(OptionCallback<ZipApp>(this, &ZipApp::handleHelp))); | ||||||
|  |  | ||||||
|  | 		options.addOption( | ||||||
|  | 			Option("file", "f", "specifies the output zip file") | ||||||
|  | 				.required(true) | ||||||
|  | 				.repeatable(false) | ||||||
|  | 				.argument("filename") | ||||||
|  | 				.callback(OptionCallback<ZipApp>(this, &ZipApp::handleFile))); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void handleHelp(const std::string& name, const std::string& value) | ||||||
|  | 	{ | ||||||
|  | 		_helpRequested = true; | ||||||
|  | 		displayHelp(); | ||||||
|  | 		stopOptionsProcessing(); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void handleFile(const std::string& name, const std::string& value) | ||||||
|  | 	{ | ||||||
|  | 		_outFile = value; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void displayHelp() | ||||||
|  | 	{ | ||||||
|  | 		HelpFormatter helpFormatter(options()); | ||||||
|  | 		helpFormatter.setCommand(commandName()); | ||||||
|  | 		helpFormatter.setUsage("OPTIONS <set of input files>"); | ||||||
|  | 		helpFormatter.setHeader("A application that demonstrates usage of Poco::Zip::Compress class."); | ||||||
|  | 		helpFormatter.format(std::cout); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	void onDone(const void*, const Poco::Zip::ZipLocalFileHeader& hdr) | ||||||
|  | 	{ | ||||||
|  | 		logger().information("DONE: " + hdr.getFileName()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	int main(const std::vector<std::string>& args) | ||||||
|  | 	{ | ||||||
|  | 		if (!_helpRequested) | ||||||
|  | 		{ | ||||||
|  | 			if (args.empty()) | ||||||
|  | 			{ | ||||||
|  | 				logger().warning("No input files specified for compression"); | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				std::ofstream out(_outFile.c_str(), std::ios::binary); | ||||||
|  | 				Poco::Zip::Compress c(out, true); | ||||||
|  | 				c.EDone += Poco::Delegate<ZipApp, const Poco::Zip::ZipLocalFileHeader>(this, &ZipApp::onDone); | ||||||
|  | 				for (std::vector<std::string>::const_iterator it = args.begin(); it != args.end(); ++it) | ||||||
|  | 				{ | ||||||
|  | 					// no WILDCARD support! | ||||||
|  | 					Poco::File aFile(*it); | ||||||
|  | 					if (!aFile.exists()) | ||||||
|  | 					{ | ||||||
|  | 						logger().error("File not found: " + *it); | ||||||
|  | 					} | ||||||
|  | 					else | ||||||
|  | 					{ | ||||||
|  | 						Poco::Path anEntry(*it); | ||||||
|  | 						if (aFile.isDirectory()) | ||||||
|  | 						{ | ||||||
|  | 							anEntry.makeDirectory(); | ||||||
|  | 							c.addRecursive(anEntry, Poco::Zip::ZipCommon::CL_MAXIMUM, (args.size() != 1)); // add root if we have more than one entry | ||||||
|  | 						} | ||||||
|  | 						else | ||||||
|  | 						{ | ||||||
|  | 							anEntry.makeFile(); | ||||||
|  | 							c.addFile(anEntry, anEntry); | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 				c.close(); | ||||||
|  | 				c.EDone -= Poco::Delegate<ZipApp, const Poco::Zip::ZipLocalFileHeader>(this, &ZipApp::onDone); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		return Application::EXIT_OK; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | private: | ||||||
|  | 	bool _helpRequested; | ||||||
|  | 	std::string _outFile; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | POCO_APP_MAIN(ZipApp) | ||||||
							
								
								
									
										145
									
								
								Zip/samples/zip/zip_vs71.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								Zip/samples/zip/zip_vs71.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,145 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="7.10" | ||||||
|  | 	Name="zip" | ||||||
|  | 	ProjectGUID="{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}" | ||||||
|  | 	Keyword="Win32Proj"> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32"/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Zip\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="TRUE" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="TRUE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="4"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib PocoXMLd.lib PocoUtild.lib PocoZipd.lib" | ||||||
|  | 				OutputFile="bin/zipd.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="TRUE" | ||||||
|  | 				ProgramDatabaseFile="bin/zipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="TRUE" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="TRUE" | ||||||
|  | 				OptimizeForWindowsApplication="TRUE" | ||||||
|  | 				AdditionalIncludeDirectories=".\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Zip\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="TRUE" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="FALSE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="3"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib PocoXML.lib PocoUtil.lib PocoZip.lib" | ||||||
|  | 				OutputFile="bin/zip.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="FALSE" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Source Files" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<File | ||||||
|  | 				RelativePath=".\src\zip.cpp"> | ||||||
|  | 			</File> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										209
									
								
								Zip/samples/zip/zip_vs80.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								Zip/samples/zip/zip_vs80.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="8,00" | ||||||
|  | 	Name="zip" | ||||||
|  | 	ProjectGUID="{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib PocoXMLd.lib PocoUtild.lib PocoZipd.lib" | ||||||
|  | 				OutputFile="bin/zipd.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="bin/zipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="3" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib PocoXML.lib PocoUtil.lib PocoZip.lib" | ||||||
|  | 				OutputFile="bin/zip.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Source Files" | ||||||
|  | 			> | ||||||
|  | 			<File | ||||||
|  | 				RelativePath=".\src\zip.cpp" | ||||||
|  | 				> | ||||||
|  | 			</File> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										209
									
								
								Zip/samples/zip/zip_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								Zip/samples/zip/zip_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="9.00" | ||||||
|  | 	Name="zip" | ||||||
|  | 	ProjectGUID="{73408DCF-2E65-47AF-BF38-7466DAB8D5CB}" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundationd.lib PocoXMLd.lib PocoUtild.lib PocoZipd.lib" | ||||||
|  | 				OutputFile="bin/zipd.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="bin/zipd.pdb" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories="..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="3" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="PocoFoundation.lib PocoXML.lib PocoUtil.lib PocoZip.lib" | ||||||
|  | 				OutputFile="bin/zip.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="1" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Source Files" | ||||||
|  | 			> | ||||||
|  | 			<File | ||||||
|  | 				RelativePath=".\src\zip.cpp" | ||||||
|  | 				> | ||||||
|  | 			</File> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										60
									
								
								Zip/src/Add.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								Zip/src/Add.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | // | ||||||
|  | // Add.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Add.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Add | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Add.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Add::Add(const std::string& zipPath, const std::string& localPath, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl): | ||||||
|  | 	_zipPath(zipPath), | ||||||
|  | 	_localPath(localPath), | ||||||
|  | 	_cm(cm), | ||||||
|  | 	_cl(cl) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Add::execute(Compress& c, std::istream& input) | ||||||
|  | { | ||||||
|  | 	c.addFile(Poco::Path(_localPath), Poco::Path(_zipPath), _cm, _cl); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										252
									
								
								Zip/src/AutoDetectStream.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										252
									
								
								Zip/src/AutoDetectStream.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,252 @@ | |||||||
|  | // | ||||||
|  | // AutoDetectStream.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/AutoDetectStream.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  AutoDetectStream | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/AutoDetectStream.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipArchiveInfo.h" | ||||||
|  | #include "Poco/Zip/ZipDataInfo.h" | ||||||
|  | #include "Poco/Zip/ZipFileInfo.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectStreamBuf::AutoDetectStreamBuf(std::istream& in, const std::string& pre, const std::string& post, bool reposition, Poco::UInt32 start): | ||||||
|  | 	Poco::BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::in), | ||||||
|  | 	_pIstr(&in), | ||||||
|  | 	_pOstr(0), | ||||||
|  | 	_eofDetected(false), | ||||||
|  | 	_matchCnt(0), | ||||||
|  | 	_prefix(pre), | ||||||
|  | 	_postfix(post), | ||||||
|  | 	_reposition(reposition), | ||||||
|  | 	_start(start) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectStreamBuf::AutoDetectStreamBuf(std::ostream& out): | ||||||
|  | 	Poco::BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::out), | ||||||
|  | 	_pIstr(0), | ||||||
|  | 	_pOstr(&out), | ||||||
|  | 	_eofDetected(false), | ||||||
|  | 	_matchCnt(0), | ||||||
|  | 	_prefix(), | ||||||
|  | 	_postfix(), | ||||||
|  | 	_reposition(false), | ||||||
|  | 	_start(0u) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectStreamBuf::~AutoDetectStreamBuf() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int AutoDetectStreamBuf::readFromDevice(char* buffer, std::streamsize length) | ||||||
|  | { | ||||||
|  | 	poco_assert_dbg(length >= 8); | ||||||
|  | 	if (_pIstr == 0 ||length == 0) return -1; | ||||||
|  |  | ||||||
|  | 	if (_reposition) | ||||||
|  | 	{ | ||||||
|  | 		_pIstr->seekg(_start, std::ios_base::beg); | ||||||
|  | 		_reposition = false; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (!_prefix.empty()) | ||||||
|  | 	{ | ||||||
|  | 		std::streamsize tmp = (_prefix.size() > length)? length: static_cast<std::streamsize>(_prefix.size()); | ||||||
|  | 		std::memcpy(buffer, _prefix.c_str(), tmp); | ||||||
|  | 		_prefix = _prefix.substr(tmp); | ||||||
|  | 		return tmp; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (_eofDetected) | ||||||
|  | 	{ | ||||||
|  | 		if (!_postfix.empty()) | ||||||
|  | 		{ | ||||||
|  | 			std::streamsize tmp = (_postfix.size() > length)? length: static_cast<std::streamsize>(_postfix.size()); | ||||||
|  | 			std::memcpy(buffer, _postfix.c_str(), tmp); | ||||||
|  | 			_postfix = _postfix.substr(tmp); | ||||||
|  | 			return tmp; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 			return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (!_pIstr->good()) | ||||||
|  | 		return -1; | ||||||
|  |  | ||||||
|  | 	char byte3('\x00'); | ||||||
|  | 	std::streamsize tempPos = 0; | ||||||
|  | 	static std::istream::int_type eof = std::istream::traits_type::eof(); | ||||||
|  | 	while (_pIstr->good() && !_pIstr->eof() && (tempPos+4) < length) | ||||||
|  | 	{  | ||||||
|  | 		std::istream::int_type c = _pIstr->get(); | ||||||
|  | 		if (c != eof) | ||||||
|  | 		{ | ||||||
|  | 			// all zip headers start with the same 2byte prefix | ||||||
|  | 			if (_matchCnt<2) | ||||||
|  | 			{ | ||||||
|  | 				if (c == ZipLocalFileHeader::HEADER[_matchCnt]) | ||||||
|  | 					++_matchCnt; | ||||||
|  | 				else | ||||||
|  | 				{ | ||||||
|  | 					// matchcnt was either 0 or 1 the headers have all unique chars -> safe to set to 0 | ||||||
|  | 					if (_matchCnt == 1) | ||||||
|  | 					{ | ||||||
|  | 						buffer[tempPos++] = ZipLocalFileHeader::HEADER[0]; | ||||||
|  | 					} | ||||||
|  | 					_matchCnt = 0; | ||||||
|  |  | ||||||
|  | 					buffer[tempPos++] = static_cast<char>(c); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				//the upper 2 bytes differ: the lower one must be in range 1,3,5,7, the upper must be one larger: 2,4,6,8 | ||||||
|  | 				if (_matchCnt == 2) | ||||||
|  | 				{ | ||||||
|  | 					if (ZipLocalFileHeader::HEADER[2] == c ||  | ||||||
|  | 						ZipArchiveInfo::HEADER[2] == c ||  | ||||||
|  | 						ZipFileInfo::HEADER[2] == c ||  | ||||||
|  | 						ZipDataInfo::HEADER[2] == c) | ||||||
|  | 					{ | ||||||
|  | 						byte3 = static_cast<char>(c);; | ||||||
|  | 						_matchCnt++;  | ||||||
|  | 					} | ||||||
|  | 					else | ||||||
|  | 					{ | ||||||
|  | 						buffer[tempPos++] = ZipLocalFileHeader::HEADER[0]; | ||||||
|  | 						buffer[tempPos++] = ZipLocalFileHeader::HEADER[1]; | ||||||
|  | 						buffer[tempPos++] = static_cast<char>(c); | ||||||
|  | 						_matchCnt = 0; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 				else if (_matchCnt == 3) | ||||||
|  | 				{ | ||||||
|  | 					if (c-1 == byte3) | ||||||
|  | 					{ | ||||||
|  | 						// a match, pushback | ||||||
|  | 						_pIstr->putback(c); | ||||||
|  | 						_pIstr->putback(byte3); | ||||||
|  | 						_pIstr->putback(ZipLocalFileHeader::HEADER[1]); | ||||||
|  | 						_pIstr->putback(ZipLocalFileHeader::HEADER[0]); | ||||||
|  | 						_eofDetected = true; | ||||||
|  | 						return tempPos; | ||||||
|  | 					} | ||||||
|  | 					else | ||||||
|  | 					{ | ||||||
|  | 						buffer[tempPos++] = ZipLocalFileHeader::HEADER[0]; | ||||||
|  | 						buffer[tempPos++] = ZipLocalFileHeader::HEADER[1]; | ||||||
|  | 						buffer[tempPos++] = byte3; | ||||||
|  | 						buffer[tempPos++] = c; | ||||||
|  | 						_matchCnt = 0; //the headers have all unique chars -> safe to set to 0 | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return tempPos; | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int AutoDetectStreamBuf::writeToDevice(const char* buffer, std::streamsize length) | ||||||
|  | { | ||||||
|  | 	if (_pOstr == 0 || length == 0) return -1; | ||||||
|  | 	_pOstr->write(buffer, length); | ||||||
|  | 	if (_pOstr->good()) | ||||||
|  | 		return length; | ||||||
|  | 	throw Poco::IOException("Failed to write to output stream"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectIOS::AutoDetectIOS(std::istream& istr, const std::string& pre, const std::string& post, bool reposition, Poco::UInt32 start): | ||||||
|  | 	_buf(istr, pre, post, reposition, start) | ||||||
|  | { | ||||||
|  | 	poco_ios_init(&_buf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectIOS::AutoDetectIOS(std::ostream& ostr): _buf(ostr) | ||||||
|  | { | ||||||
|  | 	poco_ios_init(&_buf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectIOS::~AutoDetectIOS() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectStreamBuf* AutoDetectIOS::rdbuf() | ||||||
|  | { | ||||||
|  | 	return &_buf; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectInputStream::AutoDetectInputStream(std::istream& istr, const std::string& pre, const std::string& post, bool reposition, Poco::UInt32 start): | ||||||
|  | 	AutoDetectIOS(istr, pre, post, reposition, start), | ||||||
|  | 	std::istream(&_buf) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectInputStream::~AutoDetectInputStream() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectOutputStream::AutoDetectOutputStream(std::ostream& ostr): | ||||||
|  | 	AutoDetectIOS(ostr),  | ||||||
|  | 	std::ostream(&_buf) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | AutoDetectOutputStream::~AutoDetectOutputStream() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										322
									
								
								Zip/src/Compress.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								Zip/src/Compress.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,322 @@ | |||||||
|  | // | ||||||
|  | // Compress.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Compress.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  Compress | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipStream.h" | ||||||
|  | #include "Poco/Zip/ZipArchiveInfo.h" | ||||||
|  | #include "Poco/Zip/ZipDataInfo.h" | ||||||
|  | #include "Poco/Zip/ZipException.h" | ||||||
|  | #include "Poco/StreamCopier.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include <fstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Compress::Compress(std::ostream& out, bool seekableOut): | ||||||
|  | 	_out(out), | ||||||
|  | 	_seekableOut(seekableOut), | ||||||
|  | 	_files(), | ||||||
|  | 	_infos(), | ||||||
|  | 	_dirs(), | ||||||
|  | 	_offset(0) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Compress::~Compress() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Compress::addEntry(std::istream& in, const Poco::DateTime& lastModifiedAt, const Poco::Path& fileName, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	std::string fn = ZipUtil::validZipEntryFileName(fileName); | ||||||
|  |  | ||||||
|  | 	if (_files.size() >= 65535) | ||||||
|  | 		throw ZipException("Maximum number of entries for a ZIP file reached: 65535"); | ||||||
|  | 	if (!in.good()) | ||||||
|  | 		throw ZipException("Invalid input stream"); | ||||||
|  |  | ||||||
|  | 	std::streamoff localHeaderOffset = _offset; | ||||||
|  | 	ZipLocalFileHeader hdr(fileName, lastModifiedAt, cm, cl); | ||||||
|  | 	hdr.setStartPos(localHeaderOffset); | ||||||
|  |  | ||||||
|  | 	ZipOutputStream zipOut(_out, hdr, _seekableOut); | ||||||
|  | 	Poco::StreamCopier::copyStream(in, zipOut); | ||||||
|  | 	zipOut.close(); | ||||||
|  | 	hdr.setStartPos(localHeaderOffset); // reset again now that compressed Size is known | ||||||
|  | 	_offset = hdr.getEndPos(); | ||||||
|  | 	if (hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 		_offset += ZipDataInfo::getFullHeaderSize(); | ||||||
|  | 	_files.insert(std::make_pair(fileName.toString(Poco::Path::PATH_UNIX), hdr)); | ||||||
|  | 	poco_assert (_out); | ||||||
|  | 	ZipFileInfo nfo(hdr); | ||||||
|  | 	nfo.setOffset(localHeaderOffset); | ||||||
|  | 	_infos.insert(std::make_pair(fileName.toString(Poco::Path::PATH_UNIX), nfo)); | ||||||
|  | 	EDone.notify(this, hdr); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Compress::addFileRaw(std::istream& in, const ZipLocalFileHeader& h, const Poco::Path& fileName) | ||||||
|  | { | ||||||
|  | 	std::string fn = ZipUtil::validZipEntryFileName(fileName); | ||||||
|  | 	//bypass the header of the input stream and point to the first byte of the data payload | ||||||
|  | 	in.seekg(h.getDataStartPos(), std::ios_base::beg); | ||||||
|  |  | ||||||
|  | 	if (_files.size() >= 65535) | ||||||
|  | 		throw ZipException("Maximum number of entries for a ZIP file reached: 65535"); | ||||||
|  | 	if (!in.good()) | ||||||
|  | 		throw ZipException("Invalid input stream"); | ||||||
|  |  | ||||||
|  | 	std::streamoff localHeaderOffset = _offset; | ||||||
|  | 	ZipLocalFileHeader hdr(h); | ||||||
|  | 	hdr.setFileName(fn, h.isDirectory()); | ||||||
|  | 	hdr.setStartPos(localHeaderOffset); | ||||||
|  | 	//bypass zipoutputstream | ||||||
|  | 	//write the header directly | ||||||
|  | 	std::string header = hdr.createHeader(); | ||||||
|  | 	_out.write(header.c_str(), static_cast<std::streamsize>(header.size())); | ||||||
|  | 	// now fwd the payload to _out in chunks of size CHUNKSIZE | ||||||
|  | 	Poco::UInt32 totalSize = hdr.getCompressedSize(); | ||||||
|  | 	if (totalSize > 0) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Buffer<char> buffer(COMPRESS_CHUNK_SIZE); | ||||||
|  | 		Poco::UInt32 remaining = totalSize; | ||||||
|  | 		while(remaining > 0) | ||||||
|  | 		{ | ||||||
|  | 			if (remaining > COMPRESS_CHUNK_SIZE) | ||||||
|  | 			{ | ||||||
|  | 				in.read(buffer.begin(), COMPRESS_CHUNK_SIZE); | ||||||
|  | 				std::streamsize n = in.gcount(); | ||||||
|  | 				poco_assert_dbg (n == COMPRESS_CHUNK_SIZE); | ||||||
|  | 				_out.write(buffer.begin(), n); | ||||||
|  | 				remaining -= COMPRESS_CHUNK_SIZE; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				in.read(buffer.begin(), remaining); | ||||||
|  | 				std::streamsize n = in.gcount(); | ||||||
|  | 				poco_assert_dbg (n == remaining); | ||||||
|  | 				_out.write(buffer.begin(), n); | ||||||
|  | 				remaining = 0; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	//write optional block afterwards | ||||||
|  | 	if (hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 	{ | ||||||
|  | 		ZipDataInfo info(in, false); | ||||||
|  | 		_out.write(info.getRawHeader(), static_cast<std::streamsize>(info.getFullHeaderSize())); | ||||||
|  | 	} | ||||||
|  | 	hdr.setStartPos(localHeaderOffset); // reset again now that compressed Size is known | ||||||
|  | 	_offset = hdr.getEndPos(); | ||||||
|  | 	if (hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 		_offset += ZipDataInfo::getFullHeaderSize(); | ||||||
|  | 	_files.insert(std::make_pair(fileName.toString(Poco::Path::PATH_UNIX), hdr)); | ||||||
|  | 	poco_assert (_out); | ||||||
|  | 	ZipFileInfo nfo(hdr); | ||||||
|  | 	nfo.setOffset(localHeaderOffset); | ||||||
|  | 	_infos.insert(std::make_pair(fileName.toString(Poco::Path::PATH_UNIX), nfo)); | ||||||
|  | 	EDone.notify(this, hdr); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Compress::addFile(std::istream& in, const Poco::DateTime& lastModifiedAt, const Poco::Path& fileName, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	if (!fileName.isFile()) | ||||||
|  | 		throw ZipException("Not a file: "+ fileName.toString()); | ||||||
|  |  | ||||||
|  | 	if (fileName.depth() > 1) | ||||||
|  | 	{ | ||||||
|  | 		addDirectory(fileName.parent(), lastModifiedAt); | ||||||
|  | 	} | ||||||
|  | 	addEntry(in, lastModifiedAt, fileName, cm, cl); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Compress::addFile(const Poco::Path& file, const Poco::Path& fileName, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	Poco::File aFile(file); | ||||||
|  | 	Poco::File::FileSize size = aFile.getSize(); | ||||||
|  | 	if (size < 16) | ||||||
|  | 	{ | ||||||
|  | 		cm = ZipCommon::CM_STORE; | ||||||
|  | 		cl = ZipCommon::CL_NORMAL; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	std::ifstream in(file.toString().c_str(), std::ios::binary); | ||||||
|  | 	if (!in.good()) | ||||||
|  | 		throw ZipException("Invalid input stream for " + aFile.path()); | ||||||
|  | 	if (fileName.depth() > 1) | ||||||
|  | 	{ | ||||||
|  | 		Poco::File aParent(file.parent()); | ||||||
|  | 		addDirectory(fileName.parent(), aParent.getLastModified()); | ||||||
|  | 	} | ||||||
|  | 	addFile(in, aFile.getLastModified(), fileName, cm, cl); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Compress::addDirectory(const Poco::Path& entryName, const Poco::DateTime& lastModifiedAt) | ||||||
|  | { | ||||||
|  | 	if (!entryName.isDirectory()) | ||||||
|  | 		throw ZipException("Not a directory: "+ entryName.toString()); | ||||||
|  |  | ||||||
|  | 	std::string fileStr = entryName.toString(Poco::Path::PATH_UNIX); | ||||||
|  | 	if (_files.find(fileStr) != _files.end()) | ||||||
|  | 		return; // ignore duplicate add | ||||||
|  | 	if (_files.size() >= 65535) | ||||||
|  | 		throw ZipException("Maximum number of entries for a ZIP file reached: 65535"); | ||||||
|  | 	if (fileStr == "/") | ||||||
|  | 		throw ZipException("Illegal entry name /"); | ||||||
|  | 	if (fileStr.empty()) | ||||||
|  | 		throw ZipException("Illegal empty entry name"); | ||||||
|  | 	if (fileStr.find(ZipCommon::ILLEGAL_PATH) != std::string::npos) | ||||||
|  | 		throw ZipException("Illegal entry name " + fileStr + " containing " + ZipCommon::ILLEGAL_PATH); | ||||||
|  |  | ||||||
|  | 	if (entryName.depth() > 1) | ||||||
|  | 	{ | ||||||
|  | 		addDirectory(entryName.parent(), lastModifiedAt); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	std::streamoff localHeaderOffset = _offset; | ||||||
|  | 	ZipCommon::CompressionMethod cm = ZipCommon::CM_STORE; | ||||||
|  | 	ZipCommon::CompressionLevel cl = ZipCommon::CL_NORMAL; | ||||||
|  | 	ZipLocalFileHeader hdr(entryName, lastModifiedAt, cm, cl); | ||||||
|  | 	hdr.setStartPos(localHeaderOffset); | ||||||
|  | 	ZipOutputStream zipOut(_out, hdr, _seekableOut); | ||||||
|  | 	zipOut.close(); | ||||||
|  | 	hdr.setStartPos(localHeaderOffset); // reset again now that compressed Size is known | ||||||
|  | 	_offset = hdr.getEndPos(); | ||||||
|  | 	if (hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 		_offset += ZipDataInfo::getFullHeaderSize(); | ||||||
|  | 	_files.insert(std::make_pair(entryName.toString(Poco::Path::PATH_UNIX), hdr)); | ||||||
|  | 	poco_assert (_out); | ||||||
|  | 	ZipFileInfo nfo(hdr); | ||||||
|  | 	nfo.setOffset(localHeaderOffset); | ||||||
|  | 	_infos.insert(std::make_pair(entryName.toString(Poco::Path::PATH_UNIX), nfo)); | ||||||
|  | 	EDone.notify(this, hdr); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Compress::addRecursive(const Poco::Path& entry, ZipCommon::CompressionLevel cl, bool excludeRoot, const Poco::Path& name) | ||||||
|  | { | ||||||
|  | 	Poco::File aFile(entry); | ||||||
|  | 	if (!aFile.isDirectory()) | ||||||
|  | 		throw ZipException("Not a directory: "+ entry.toString()); | ||||||
|  | 	Poco::Path aName(name); | ||||||
|  | 	aName.makeDirectory(); | ||||||
|  | 	if (!excludeRoot) | ||||||
|  | 	{ | ||||||
|  | 		if (aName.depth() == 0) | ||||||
|  | 		{ | ||||||
|  | 			Poco::Path tmp(entry); | ||||||
|  | 			tmp.makeAbsolute(); // eliminate ../ | ||||||
|  | 			aName = Poco::Path(tmp[tmp.depth()-1]); | ||||||
|  | 			aName.makeDirectory(); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		addDirectory(aName, aFile.getLastModified()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// iterate over children | ||||||
|  | 	std::vector<std::string> children; | ||||||
|  | 	aFile.list(children); | ||||||
|  | 	std::vector<std::string>::const_iterator it = children.begin(); | ||||||
|  | 	std::vector<std::string>::const_iterator itEnd = children.end(); | ||||||
|  | 	for (; it != itEnd; ++it) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Path realFile(entry, *it); | ||||||
|  | 		Poco::Path renamedFile(aName, *it); | ||||||
|  | 		Poco::File aFile(realFile); | ||||||
|  | 		if (aFile.isDirectory()) | ||||||
|  | 		{ | ||||||
|  | 			realFile.makeDirectory(); | ||||||
|  | 			renamedFile.makeDirectory(); | ||||||
|  | 			addRecursive(realFile, cl, false, renamedFile); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			realFile.makeFile(); | ||||||
|  | 			renamedFile.makeFile(); | ||||||
|  | 			addFile(realFile, renamedFile, ZipCommon::CM_DEFLATE, cl); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive Compress::close() | ||||||
|  | { | ||||||
|  | 	if (!_dirs.empty()) | ||||||
|  | 		return ZipArchive(_files, _infos, _dirs); | ||||||
|  |  | ||||||
|  | 	poco_assert (_infos.size() == _files.size()); | ||||||
|  | 	poco_assert (_files.size() < 65536); | ||||||
|  | 	Poco::UInt32 centralDirStart = _offset; | ||||||
|  | 	Poco::UInt32 centralDirSize = 0; | ||||||
|  | 	// write all infos | ||||||
|  | 	ZipArchive::FileInfos::const_iterator it = _infos.begin(); | ||||||
|  | 	ZipArchive::FileInfos::const_iterator itEnd = _infos.end(); | ||||||
|  | 	for (; it != itEnd; ++it) | ||||||
|  | 	{ | ||||||
|  | 		const ZipFileInfo& nfo = it->second; | ||||||
|  | 		std::string info(nfo.createHeader()); | ||||||
|  | 		_out.write(info.c_str(), static_cast<std::streamsize>(info.size())); | ||||||
|  | 		Poco::UInt32 entrySize = static_cast<Poco::UInt32>(info.size()); | ||||||
|  | 		centralDirSize += entrySize; | ||||||
|  | 		_offset += entrySize; | ||||||
|  | 	} | ||||||
|  | 	poco_assert (_out); | ||||||
|  |  | ||||||
|  | 	 | ||||||
|  | 	Poco::UInt16 numEntries = static_cast<Poco::UInt16>(_infos.size()); | ||||||
|  | 	ZipArchiveInfo central; | ||||||
|  | 	central.setCentralDirectorySize(centralDirSize); | ||||||
|  | 	central.setNumberOfEntries(numEntries); | ||||||
|  | 	central.setTotalNumberOfEntries(numEntries); | ||||||
|  | 	central.setHeaderOffset(centralDirStart); | ||||||
|  | 	std::string centr(central.createHeader()); | ||||||
|  | 	_out.write(centr.c_str(), static_cast<std::streamsize>(centr.size())); | ||||||
|  | 	_out.flush(); | ||||||
|  | 	_dirs.insert(std::make_pair(0, central)); | ||||||
|  | 	return ZipArchive(_files, _infos, _dirs); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										192
									
								
								Zip/src/Decompress.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								Zip/src/Decompress.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | |||||||
|  | // | ||||||
|  | // Decompress.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Decompress.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  Decompress | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Decompress.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/Zip/ZipStream.h" | ||||||
|  | #include "Poco/Zip/ZipException.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  | #include "Poco/StreamCopier.h" | ||||||
|  | #include "Poco/Delegate.h" | ||||||
|  | #include <fstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Decompress::Decompress(std::istream& in, const Poco::Path& outputDir, bool flattenDirs, bool keepIncompleteFiles): | ||||||
|  | 	_in(in), | ||||||
|  | 	_outDir(outputDir), | ||||||
|  | 	_flattenDirs(flattenDirs), | ||||||
|  | 	_keepIncompleteFiles(keepIncompleteFiles), | ||||||
|  | 	_mapping() | ||||||
|  | { | ||||||
|  | 	_outDir.makeAbsolute(); | ||||||
|  | 	poco_assert (_in.good()); | ||||||
|  | 	Poco::File tmp(_outDir); | ||||||
|  | 	if (!tmp.exists()) | ||||||
|  | 	{ | ||||||
|  | 		tmp.createDirectories(); | ||||||
|  | 	} | ||||||
|  | 	if (!tmp.isDirectory()) | ||||||
|  | 		throw Poco::IOException("Failed to create/open directory: " + _outDir.toString()); | ||||||
|  | 	EOk += Poco::Delegate<Decompress, std::pair<const ZipLocalFileHeader, const Poco::Path> >(this, &Decompress::onOk); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Decompress::~Decompress() | ||||||
|  | { | ||||||
|  | 	EOk -= Poco::Delegate<Decompress, std::pair<const ZipLocalFileHeader, const Poco::Path> >(this, &Decompress::onOk); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive Decompress::decompressAllFiles() | ||||||
|  | { | ||||||
|  | 	poco_assert (_mapping.empty()); | ||||||
|  | 	ZipArchive arch(_in, *this); | ||||||
|  | 	return arch; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bool Decompress::handleZipEntry(std::istream& zipStream, const ZipLocalFileHeader& hdr) | ||||||
|  | { | ||||||
|  | 	if (hdr.isDirectory()) | ||||||
|  | 	{ | ||||||
|  | 		// directory have 0 size, nth to read | ||||||
|  | 		if (!_flattenDirs) | ||||||
|  | 		{ | ||||||
|  | 			std::string dirName = hdr.getFileName(); | ||||||
|  | 			if (dirName.find(ZipCommon::ILLEGAL_PATH) != std::string::npos) | ||||||
|  | 				throw ZipException("Illegal entry name " + dirName + " containing " + ZipCommon::ILLEGAL_PATH); | ||||||
|  | 			Poco::Path dir(dirName); | ||||||
|  | 			dir.makeDirectory(); | ||||||
|  | 			Poco::File aFile(dir); | ||||||
|  | 			aFile.createDirectories(); | ||||||
|  | 		} | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		std::string fileName = hdr.getFileName(); | ||||||
|  | 		if (_flattenDirs) | ||||||
|  | 		{ | ||||||
|  | 			// remove path info | ||||||
|  | 			Poco::Path p(fileName); | ||||||
|  | 			p.makeFile(); | ||||||
|  | 			fileName = p.getFileName(); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if (fileName.find(ZipCommon::ILLEGAL_PATH) != std::string::npos) | ||||||
|  | 			throw ZipException("Illegal entry name " + fileName + " containing " + ZipCommon::ILLEGAL_PATH); | ||||||
|  |  | ||||||
|  | 		Poco::Path file(fileName); | ||||||
|  | 		file.makeFile(); | ||||||
|  | 		Poco::Path dest(_outDir, file); | ||||||
|  | 		dest.makeFile(); | ||||||
|  | 		if (dest.depth() > 0) | ||||||
|  | 		{ | ||||||
|  | 			Poco::File aFile(dest.parent()); | ||||||
|  | 			aFile.createDirectories(); | ||||||
|  | 		} | ||||||
|  | 		std::ofstream out(dest.toString().c_str(), std::ios::binary); | ||||||
|  | 		if (!out) | ||||||
|  | 		{ | ||||||
|  | 			std::pair<const ZipLocalFileHeader, const std::string> tmp = std::make_pair(hdr, "Failed to open output stream " + dest.toString()); | ||||||
|  | 			EError.notify(this, tmp); | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 		ZipInputStream inp(zipStream, hdr, false); | ||||||
|  | 		Poco::StreamCopier::copyStream(inp, out); | ||||||
|  | 		out.close(); | ||||||
|  | 		Poco::File aFile(file); | ||||||
|  | 		if (!aFile.exists() || !aFile.isFile()) | ||||||
|  | 		{ | ||||||
|  | 			std::pair<const ZipLocalFileHeader, const std::string> tmp = std::make_pair(hdr, "Failed to create output stream " + dest.toString()); | ||||||
|  | 			EError.notify(this, tmp); | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if (!inp.crcValid()) | ||||||
|  | 		{ | ||||||
|  | 			if (!_keepIncompleteFiles) | ||||||
|  | 				aFile.remove(); | ||||||
|  | 			std::pair<const ZipLocalFileHeader, const std::string> tmp = std::make_pair(hdr, "CRC mismatch. Corrupt file: " + dest.toString()); | ||||||
|  | 			EError.notify(this, tmp); | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// cannot check against hdr.getUnCompressedSize if CRC and size are not set in hdr but in a ZipDataInfo | ||||||
|  | 		// crc is typically enough to detect errors | ||||||
|  | 		if (aFile.getSize() != hdr.getUncompressedSize() && !hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 		{ | ||||||
|  | 			if (!_keepIncompleteFiles) | ||||||
|  | 				aFile.remove(); | ||||||
|  | 			std::pair<const ZipLocalFileHeader, const std::string> tmp = std::make_pair(hdr, "Filesizes do not match. Corrupt file: " + dest.toString()); | ||||||
|  | 			EError.notify(this, tmp); | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		std::pair<const ZipLocalFileHeader, const Poco::Path> tmp = std::make_pair(hdr, file); | ||||||
|  | 		EOk.notify(this, tmp); | ||||||
|  | 	} | ||||||
|  | 	catch (Poco::Exception& e) | ||||||
|  | 	{ | ||||||
|  | 		std::pair<const ZipLocalFileHeader, const std::string> tmp = std::make_pair(hdr, "Exception: " + e.displayText()); | ||||||
|  | 		EError.notify(this, tmp); | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	catch (...) | ||||||
|  | 	{ | ||||||
|  | 		std::pair<const ZipLocalFileHeader, const std::string> tmp = std::make_pair(hdr, "Unknown Exception"); | ||||||
|  | 		EError.notify(this, tmp); | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Decompress::onOk(const void*, std::pair<const ZipLocalFileHeader, const Poco::Path>& val) | ||||||
|  | { | ||||||
|  | 	_mapping.insert(std::make_pair(val.first.getFileName(), val.second)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										63
									
								
								Zip/src/Delete.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								Zip/src/Delete.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | // | ||||||
|  | // Delete.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Delete.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Delete | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Delete.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Delete::Delete(const ZipLocalFileHeader& hdr): | ||||||
|  | 	_hdr(hdr) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Delete::execute(Compress& c, std::istream& input) | ||||||
|  | { | ||||||
|  | 	// due to absolute positioning in compress we don't need to do this | ||||||
|  | 	/* | ||||||
|  | 	input.seekg(_hdr.getEndPos(), std::ios_base::beg); | ||||||
|  | 	if (_hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 	{ | ||||||
|  | 		ZipDataInfo info(in, false); | ||||||
|  | 	} | ||||||
|  | 	*/ | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										59
									
								
								Zip/src/Keep.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								Zip/src/Keep.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | // | ||||||
|  | // Keep.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Keep.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Keep | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Keep.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  | #include "Poco/Buffer.h" | ||||||
|  | #include "Poco/StreamCopier.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Keep::Keep(const ZipLocalFileHeader& hdr): | ||||||
|  | 	_hdr(hdr) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Keep::execute(Compress& c, std::istream& input) | ||||||
|  | { | ||||||
|  | 	c.addFileRaw(input, _hdr, _hdr.getFileName()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										54
									
								
								Zip/src/ParseCallback.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								Zip/src/ParseCallback.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | // | ||||||
|  | // ParseCallback.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ParseCallback.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ParseCallback | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ParseCallback.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ParseCallback::ParseCallback() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ParseCallback::~ParseCallback() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										269
									
								
								Zip/src/PartialStream.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								Zip/src/PartialStream.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,269 @@ | |||||||
|  | // | ||||||
|  | // PartialStream.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/PartialStream.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  PartialStream | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/PartialStream.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialStreamBuf::PartialStreamBuf(std::istream& in, std::ios::pos_type start, std::ios::pos_type end, const std::string& pre, const std::string& post, bool initStream): | ||||||
|  | 	Poco::BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::in), | ||||||
|  | 	_initialized(!initStream), | ||||||
|  | 	_start(start), | ||||||
|  | 	_numBytes(end-start), | ||||||
|  | 	_bytesWritten(0), | ||||||
|  | 	_pIstr(&in), | ||||||
|  | 	_pOstr(0), | ||||||
|  | 	_prefix(pre), | ||||||
|  | 	_postfix(post), | ||||||
|  | 	_ignoreStart(0), | ||||||
|  | 	_buffer(0), | ||||||
|  | 	_bufferOffset(0) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialStreamBuf::PartialStreamBuf(std::ostream& out, std::size_t start, std::size_t end, bool initStream): | ||||||
|  | 	Poco::BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::out), | ||||||
|  | 	_initialized(!initStream), | ||||||
|  | 	_start(0), | ||||||
|  | 	_numBytes(0), | ||||||
|  | 	_bytesWritten(0), | ||||||
|  | 	_pIstr(0), | ||||||
|  | 	_pOstr(&out), | ||||||
|  | 	_ignoreStart(start), | ||||||
|  | 	_buffer(end), | ||||||
|  | 	_bufferOffset(0) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialStreamBuf::~PartialStreamBuf() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int PartialStreamBuf::readFromDevice(char* buffer, std::streamsize length) | ||||||
|  | { | ||||||
|  | 	if (_pIstr == 0 ||length == 0) return -1; | ||||||
|  | 	if (!_initialized) | ||||||
|  | 	{ | ||||||
|  | 		_initialized = true; | ||||||
|  | 		_pIstr->clear(); | ||||||
|  | 		_pIstr->seekg(_start, std::ios_base::beg); | ||||||
|  | 		if (_pIstr->fail()) | ||||||
|  | 			throw Poco::IOException("Failed to reposition in stream"); | ||||||
|  | 	} | ||||||
|  | 	if (!_prefix.empty()) | ||||||
|  | 	{ | ||||||
|  | 		std::streamsize tmp = (_prefix.size() > length)? length: static_cast<std::streamsize>(_prefix.size()); | ||||||
|  | 		std::memcpy(buffer, _prefix.c_str(), tmp); | ||||||
|  | 		_prefix = _prefix.substr(tmp); | ||||||
|  | 		return tmp; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (_numBytes == 0) | ||||||
|  | 	{ | ||||||
|  | 		if (!_postfix.empty()) | ||||||
|  | 		{ | ||||||
|  | 			std::streamsize tmp = (_postfix.size() > length)? length: static_cast<std::streamsize>(_postfix.size()); | ||||||
|  | 			std::memcpy(buffer, _postfix.c_str(), tmp); | ||||||
|  | 			_postfix = _postfix.substr(tmp); | ||||||
|  | 			return tmp; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 			return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (!_pIstr->good()) | ||||||
|  | 		return -1; | ||||||
|  |  | ||||||
|  | 	if (_numBytes < length) | ||||||
|  | 		length = static_cast<std::streamsize>(_numBytes); | ||||||
|  |  | ||||||
|  | 	_pIstr->read(buffer, length); | ||||||
|  | 	std::streamsize bytesRead = _pIstr->gcount(); | ||||||
|  | 	_numBytes -= bytesRead; | ||||||
|  | 	return bytesRead; | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int PartialStreamBuf::writeToDevice(const char* buffer, std::streamsize length) | ||||||
|  | { | ||||||
|  | 	if (_pOstr == 0 || length == 0) return -1; | ||||||
|  | 	if (!_initialized) | ||||||
|  | 	{ | ||||||
|  | 		_initialized = true; | ||||||
|  | 		_pOstr->clear(); | ||||||
|  | 		if (_pOstr->fail()) | ||||||
|  | 			throw Poco::IOException("Failed to clear stream status"); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (_ignoreStart > 0) | ||||||
|  | 	{ | ||||||
|  | 		if (_ignoreStart > length) | ||||||
|  | 		{ | ||||||
|  | 			_ignoreStart -= length; | ||||||
|  | 			// fake return values | ||||||
|  | 			return length; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			std::streamsize cnt = static_cast<std::streamsize>(length - _ignoreStart - _buffer.size()); | ||||||
|  | 			if (cnt > 0) | ||||||
|  | 			{ | ||||||
|  | 				_pOstr->write(buffer+_ignoreStart, cnt); | ||||||
|  | 				_bytesWritten += cnt; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			// copy the rest into buffer | ||||||
|  | 			cnt += static_cast<std::streamsize>(_ignoreStart); | ||||||
|  | 			_ignoreStart = 0; | ||||||
|  | 			poco_assert (cnt < length); | ||||||
|  | 			_bufferOffset = length - cnt; | ||||||
|  | 			std::memcpy(_buffer.begin(), buffer + cnt, _bufferOffset); | ||||||
|  |  | ||||||
|  | 			return length; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if (_buffer.size() > 0) | ||||||
|  | 	{ | ||||||
|  | 		// always treat each write as the potential last one | ||||||
|  | 		// thus first fill the buffer with the last n bytes of the msg | ||||||
|  |  | ||||||
|  | 		// how much of the already cached data do we need to write? | ||||||
|  | 		Poco::Int32 cache = _bufferOffset + length - _buffer.size(); | ||||||
|  | 		if (cache > 0) | ||||||
|  | 		{ | ||||||
|  | 			if (cache > _bufferOffset) | ||||||
|  | 				cache = _bufferOffset; | ||||||
|  | 			_pOstr->write(_buffer.begin(), cache); | ||||||
|  | 			_bytesWritten += cache; | ||||||
|  | 			_bufferOffset -= cache; | ||||||
|  | 			if (_bufferOffset > 0) | ||||||
|  | 				std::memmove(_buffer.begin(), _buffer.begin()+cache, _bufferOffset); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// now fill up _buffer with the last bytes from buffer | ||||||
|  | 		Poco::Int32 pos = static_cast<Poco::Int32>(length - static_cast<Poco::Int32>(_buffer.size()) + _bufferOffset); | ||||||
|  | 		if (pos <= 0) | ||||||
|  | 		{ | ||||||
|  | 			// all of the message goes to _buffer | ||||||
|  | 			std::memcpy(_buffer.begin() + _bufferOffset, buffer, length); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			poco_assert (_bufferOffset == 0); | ||||||
|  | 			std::memcpy(_buffer.begin(), buffer+pos, _buffer.size()); | ||||||
|  | 			_bufferOffset = static_cast<Poco::UInt32>(_buffer.size()); | ||||||
|  | 			// the rest is written | ||||||
|  | 			_pOstr->write(buffer, static_cast<std::streamsize>(length - _buffer.size())); | ||||||
|  | 			_bytesWritten += (length - _buffer.size()); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		_pOstr->write(buffer, length); | ||||||
|  | 		_bytesWritten += length; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (_pOstr->good()) | ||||||
|  | 		return length; | ||||||
|  |  | ||||||
|  | 	throw Poco::IOException("Failed to write to output stream"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamBuf::close() | ||||||
|  | { | ||||||
|  | 	// DONT write data from _buffer! | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialIOS::PartialIOS(std::istream& istr, std::ios::pos_type start, std::ios::pos_type end, const std::string& pre, const std::string& post, bool initStream): _buf(istr, start, end, pre, post, initStream) | ||||||
|  | { | ||||||
|  | 	poco_ios_init(&_buf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialIOS::PartialIOS(std::ostream& ostr, std::size_t start, std::size_t end, bool initStream): _buf(ostr, start, end, initStream) | ||||||
|  | { | ||||||
|  | 	poco_ios_init(&_buf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialIOS::~PartialIOS() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialStreamBuf* PartialIOS::rdbuf() | ||||||
|  | { | ||||||
|  | 	return &_buf; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialInputStream::PartialInputStream(std::istream& istr, std::ios::pos_type start, std::ios::pos_type end, bool initStream, const std::string& pre, const std::string& post):  | ||||||
|  | 	PartialIOS(istr, start, end, pre, post, initStream),  | ||||||
|  | 	std::istream(&_buf) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialInputStream::~PartialInputStream() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialOutputStream::PartialOutputStream(std::ostream& ostr, std::size_t start, std::size_t end, bool initStream): | ||||||
|  | 	PartialIOS(ostr, start, end, initStream),  | ||||||
|  | 	std::ostream(&_buf) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialOutputStream::~PartialOutputStream() | ||||||
|  | { | ||||||
|  | 	close(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										58
									
								
								Zip/src/Rename.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Zip/src/Rename.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | // | ||||||
|  | // Rename.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Rename.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Rename | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Rename.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Rename::Rename(const ZipLocalFileHeader& hdr, const std::string& newZipEntryName): | ||||||
|  | 	_hdr(hdr), | ||||||
|  | 	_newZipEntryName(newZipEntryName) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Rename::execute(Compress& c, std::istream& input) | ||||||
|  | { | ||||||
|  | 	c.addFileRaw(input, _hdr, _newZipEntryName); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										60
									
								
								Zip/src/Replace.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								Zip/src/Replace.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | // | ||||||
|  | // Replace.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/Replace.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  Replace | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Replace.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Replace::Replace(const ZipLocalFileHeader& hdr, const std::string& localPath): | ||||||
|  | 	_del(hdr), | ||||||
|  | 	_add(hdr.getFileName(), localPath, hdr.getCompressionMethod(), hdr.getCompressionLevel()) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void Replace::execute(Compress& c, std::istream& input) | ||||||
|  | { | ||||||
|  | 	_del.execute(c, input); | ||||||
|  | 	_add.execute(c, input); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										66
									
								
								Zip/src/SkipCallback.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								Zip/src/SkipCallback.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  | // | ||||||
|  | // SkipCallback.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/SkipCallback.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  SkipCallback | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/SkipCallback.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | SkipCallback::SkipCallback() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | SkipCallback::~SkipCallback() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bool SkipCallback::handleZipEntry(std::istream& zipStream, const ZipLocalFileHeader& hdr) | ||||||
|  | { | ||||||
|  | 	if (!hdr.searchCRCAndSizesAfterData()) | ||||||
|  | 		zipStream.seekg(hdr.getCompressedSize(), std::ios_base::cur); | ||||||
|  | 	else | ||||||
|  | 		ZipUtil::sync(zipStream); | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										122
									
								
								Zip/src/ZipArchive.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								Zip/src/ZipArchive.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | // | ||||||
|  | // ZipArchive.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipArchive.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipArchive | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/Zip/SkipCallback.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive::ZipArchive(std::istream& in): | ||||||
|  | 	_entries(), | ||||||
|  | 	_infos(), | ||||||
|  | 	_disks() | ||||||
|  | { | ||||||
|  | 	poco_assert_dbg (in); | ||||||
|  | 	SkipCallback skip; | ||||||
|  | 	parse(in, skip); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive::ZipArchive(const FileHeaders& entries, const FileInfos& infos, const DirectoryInfos& dirs): | ||||||
|  | 	_entries(entries), | ||||||
|  | 	_infos(infos), | ||||||
|  | 	_disks(dirs) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive::ZipArchive(std::istream& in, ParseCallback& pc): | ||||||
|  | 	_entries(), | ||||||
|  | 	_infos(), | ||||||
|  | 	_disks() | ||||||
|  | { | ||||||
|  | 	poco_assert_dbg (in); | ||||||
|  | 	parse(in, pc); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive::~ZipArchive() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipArchive::parse(std::istream& in, ParseCallback& pc) | ||||||
|  | { | ||||||
|  | 	// read 4 bytes | ||||||
|  | 	while (in.good() && !in.eof()) | ||||||
|  | 	{ | ||||||
|  | 		char header[ZipCommon::HEADER_SIZE]={'\x00', '\x00', '\x00', '\x00'}; | ||||||
|  | 		in.read(header, ZipCommon::HEADER_SIZE); | ||||||
|  | 		if (in.eof()) | ||||||
|  | 			return; | ||||||
|  | 		if (std::memcmp(header, ZipLocalFileHeader::HEADER, ZipCommon::HEADER_SIZE) == 0) | ||||||
|  | 		{ | ||||||
|  | 			ZipLocalFileHeader entry(in, true, pc); | ||||||
|  | 			poco_assert (_entries.insert(std::make_pair(entry.getFileName(), entry)).second); | ||||||
|  | 		} | ||||||
|  | 		else if (std::memcmp(header, ZipFileInfo::HEADER, ZipCommon::HEADER_SIZE) == 0) | ||||||
|  | 		{ | ||||||
|  | 			ZipFileInfo info(in, true); | ||||||
|  | 			FileHeaders::iterator it = _entries.find(info.getFileName()); | ||||||
|  | 			if (it != _entries.end()) | ||||||
|  | 			{ | ||||||
|  | 				it->second.setStartPos(info.getRelativeOffsetOfLocalHeader()); | ||||||
|  | 			} | ||||||
|  | 			poco_assert (_infos.insert(std::make_pair(info.getFileName(), info)).second); | ||||||
|  | 		} | ||||||
|  | 		else if (std::memcmp(header, ZipArchiveInfo::HEADER, ZipCommon::HEADER_SIZE) == 0) | ||||||
|  | 		{ | ||||||
|  | 			ZipArchiveInfo nfo(in, true); | ||||||
|  | 			poco_assert (_disks.insert(std::make_pair(nfo.getDiskNumber(), nfo)).second); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			if (_disks.empty()) | ||||||
|  | 				throw Poco::IllegalStateException("Illegal header in zip file"); | ||||||
|  | 			else | ||||||
|  | 				throw Poco::IllegalStateException("Garbage after directory header"); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										106
									
								
								Zip/src/ZipArchiveInfo.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								Zip/src/ZipArchiveInfo.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | |||||||
|  | // | ||||||
|  | // ZipArchiveInfo.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipArchiveInfo.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipArchiveInfo | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipArchiveInfo.h" | ||||||
|  | #include "Poco/Buffer.h" | ||||||
|  | #include <istream> | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const char ZipArchiveInfo::HEADER[ZipCommon::HEADER_SIZE] = {'\x50', '\x4b', '\x05', '\x06'}; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchiveInfo::ZipArchiveInfo(std::istream& in, bool assumeHeaderRead): | ||||||
|  | 	_rawInfo(), | ||||||
|  | 	_startPos(in.tellg()), | ||||||
|  | 	_comment() | ||||||
|  | { | ||||||
|  | 	if (assumeHeaderRead) | ||||||
|  | 		_startPos -= ZipCommon::HEADER_SIZE; | ||||||
|  | 	parse(in, assumeHeaderRead); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ZipArchiveInfo::ZipArchiveInfo(): | ||||||
|  | 	_rawInfo(), | ||||||
|  | 	_startPos(0), | ||||||
|  | 	_comment() | ||||||
|  | { | ||||||
|  | 	std::memset(_rawInfo, 0, FULLHEADER_SIZE); | ||||||
|  | 	std::memcpy(_rawInfo, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchiveInfo::~ZipArchiveInfo() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipArchiveInfo::parse(std::istream& inp, bool assumeHeaderRead) | ||||||
|  | { | ||||||
|  | 	if (!assumeHeaderRead) | ||||||
|  | 	{ | ||||||
|  | 		inp.read(_rawInfo, ZipCommon::HEADER_SIZE); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		std::memcpy(_rawInfo, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	} | ||||||
|  | 	poco_assert (std::memcmp(_rawInfo, HEADER, ZipCommon::HEADER_SIZE) == 0); | ||||||
|  | 	// read the rest of the header | ||||||
|  | 	inp.read(_rawInfo + ZipCommon::HEADER_SIZE, FULLHEADER_SIZE - ZipCommon::HEADER_SIZE); | ||||||
|  | 	Poco::UInt16 len = getZipCommentSize(); | ||||||
|  | 	if (len > 0) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Buffer<char> buf(len); | ||||||
|  | 		inp.read(buf.begin(), len); | ||||||
|  | 		_comment = std::string(buf.begin(), len); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | std::string ZipArchiveInfo::createHeader() const | ||||||
|  | { | ||||||
|  | 	std::string result(_rawInfo, FULLHEADER_SIZE); | ||||||
|  | 	result.append(_comment); | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										47
									
								
								Zip/src/ZipCommon.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Zip/src/ZipCommon.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | // | ||||||
|  | // ZipCommon.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipCommon.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipCommon | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipCommon.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const std::string ZipCommon::ILLEGAL_PATH(".."); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										79
									
								
								Zip/src/ZipDataInfo.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								Zip/src/ZipDataInfo.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,79 @@ | |||||||
|  | // | ||||||
|  | // ZipDataInfo.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipDataInfo.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipDataInfo | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipDataInfo.h" | ||||||
|  | #include <istream> | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const char ZipDataInfo::HEADER[ZipCommon::HEADER_SIZE] = {'\x50', '\x4b', '\x07', '\x08'}; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipDataInfo::ZipDataInfo(): | ||||||
|  | 	_rawInfo(), | ||||||
|  | 	_valid(true) | ||||||
|  | { | ||||||
|  | 	std::memcpy(_rawInfo, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	std::memset(_rawInfo+ZipCommon::HEADER_SIZE, 0, FULLHEADER_SIZE - ZipCommon::HEADER_SIZE); | ||||||
|  | 	_valid = true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipDataInfo::ZipDataInfo(std::istream& in, bool assumeHeaderRead): | ||||||
|  | 	_rawInfo(), | ||||||
|  | 	_valid(false) | ||||||
|  | { | ||||||
|  | 	if (assumeHeaderRead) | ||||||
|  | 		std::memcpy(_rawInfo, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	else | ||||||
|  | 		in.read(_rawInfo, ZipCommon::HEADER_SIZE); | ||||||
|  | 	poco_assert (std::memcmp(_rawInfo, HEADER, ZipCommon::HEADER_SIZE) == 0); | ||||||
|  | 	// now copy the rest of the header | ||||||
|  | 	in.read(_rawInfo+ZipCommon::HEADER_SIZE, FULLHEADER_SIZE - ZipCommon::HEADER_SIZE); | ||||||
|  | 	_valid = (!in.eof() && in.good()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipDataInfo::~ZipDataInfo() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										49
									
								
								Zip/src/ZipException.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Zip/src/ZipException.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | // | ||||||
|  | // ZipException.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipException.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipException | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipException.h" | ||||||
|  | #include <typeinfo> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | POCO_IMPLEMENT_EXCEPTION(ZipException, Poco::RuntimeException, "ZIP Exception") | ||||||
|  | POCO_IMPLEMENT_EXCEPTION(ZipManipulationException, ZipException, "ZIP Manipulation Exception") | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										143
									
								
								Zip/src/ZipFileInfo.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								Zip/src/ZipFileInfo.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,143 @@ | |||||||
|  | // | ||||||
|  | // ZipFileInfo.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipFileInfo.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipFileInfo | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipFileInfo.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Buffer.h" | ||||||
|  | #include <istream> | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const char ZipFileInfo::HEADER[ZipCommon::HEADER_SIZE] = {'\x50', '\x4b', '\x01', '\x02'}; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipFileInfo::ZipFileInfo(const ZipLocalFileHeader& header): | ||||||
|  | 	_rawInfo(), | ||||||
|  | 	_crc32(0), | ||||||
|  | 	_compressedSize(0), | ||||||
|  | 	_uncompressedSize(0), | ||||||
|  | 	_fileName(), | ||||||
|  | 	_lastModifiedAt(), | ||||||
|  | 	_extraField() | ||||||
|  | { | ||||||
|  | 	std::memset(_rawInfo, 0, FULLHEADER_SIZE); | ||||||
|  | 	std::memcpy(_rawInfo, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	setCompressedSize(header.getCompressedSize()); | ||||||
|  | 	setUncompressedSize(header.getUncompressedSize()); | ||||||
|  | 	setCRC(header.getCRC()); | ||||||
|  | 	setCompressionMethod(header.getCompressionMethod()); | ||||||
|  | 	setCompressionLevel(header.getCompressionLevel()); | ||||||
|  | 	setRequiredVersion(header.getMajorVersionNumber(), header.getMinorVersionNumber()); | ||||||
|  | 	setHostSystem(header.getHostSystem()); | ||||||
|  | 	setLastModifiedAt(header.lastModifiedAt()); | ||||||
|  | 	setEncryption(false); | ||||||
|  | 	setFileName(header.getFileName()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipFileInfo::ZipFileInfo(std::istream& in, bool assumeHeaderRead): | ||||||
|  | 	_rawInfo(), | ||||||
|  | 	_crc32(0), | ||||||
|  | 	_compressedSize(0), | ||||||
|  | 	_uncompressedSize(0), | ||||||
|  | 	_fileName(), | ||||||
|  | 	_lastModifiedAt(), | ||||||
|  | 	_extraField() | ||||||
|  | { | ||||||
|  | 	// sanity check | ||||||
|  | 	poco_assert_dbg (RELATIVEOFFSETLOCALHEADER_POS + RELATIVEOFFSETLOCALHEADER_SIZE == FULLHEADER_SIZE); | ||||||
|  | 	parse(in, assumeHeaderRead); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipFileInfo::~ZipFileInfo() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipFileInfo::parse(std::istream& inp, bool assumeHeaderRead) | ||||||
|  | { | ||||||
|  | 	if (!assumeHeaderRead) | ||||||
|  | 	{ | ||||||
|  | 		inp.read(_rawInfo, ZipCommon::HEADER_SIZE); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		std::memcpy(_rawInfo, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	} | ||||||
|  | 	poco_assert (std::memcmp(_rawInfo, HEADER, ZipCommon::HEADER_SIZE) == 0); | ||||||
|  | 	// read the rest of the header | ||||||
|  | 	inp.read(_rawInfo + ZipCommon::HEADER_SIZE, FULLHEADER_SIZE - ZipCommon::HEADER_SIZE); | ||||||
|  | 	_crc32 = getCRCFromHeader(); | ||||||
|  | 	_compressedSize = getCompressedSizeFromHeader(); | ||||||
|  | 	_uncompressedSize = getUncompressedSizeFromHeader(); | ||||||
|  | 	parseDateTime(); | ||||||
|  | 	Poco::UInt16 len = getFileNameLength(); | ||||||
|  | 	Poco::Buffer<char> buf(len); | ||||||
|  | 	inp.read(buf.begin(), len); | ||||||
|  | 	_fileName = std::string(buf.begin(), len); | ||||||
|  | 	if (hasExtraField()) | ||||||
|  | 	{ | ||||||
|  | 		len = getExtraFieldLength(); | ||||||
|  | 		Poco::Buffer<char> xtra(len); | ||||||
|  | 		inp.read(xtra.begin(), len); | ||||||
|  | 		_extraField = std::string(xtra.begin(), len); | ||||||
|  | 	} | ||||||
|  | 	len = getFileCommentLength(); | ||||||
|  | 	if (len > 0) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Buffer<char> buf2(len); | ||||||
|  | 		inp.read(buf2.begin(), len); | ||||||
|  | 		_fileComment = std::string(buf2.begin(), len); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | std::string ZipFileInfo::createHeader() const | ||||||
|  | { | ||||||
|  | 	std::string result(_rawInfo, FULLHEADER_SIZE); | ||||||
|  | 	result.append(_fileName); | ||||||
|  | 	result.append(_extraField); | ||||||
|  | 	result.append(_fileComment); | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										238
									
								
								Zip/src/ZipLocalFileHeader.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								Zip/src/ZipLocalFileHeader.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | |||||||
|  | // | ||||||
|  | // ZipLocalFileHeader.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipLocalFileHeader.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipLocalFileHeader | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipDataInfo.h" | ||||||
|  | #include "Poco/Zip/ParseCallback.h" | ||||||
|  | #include "Poco/Buffer.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const char ZipLocalFileHeader::HEADER[ZipCommon::HEADER_SIZE] = {'\x50', '\x4b', '\x03', '\x04'}; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipLocalFileHeader::ZipLocalFileHeader(const Poco::Path& fileName,  | ||||||
|  | 	const Poco::DateTime& lastModifiedAt, | ||||||
|  | 	ZipCommon::CompressionMethod cm,  | ||||||
|  | 	ZipCommon::CompressionLevel cl): | ||||||
|  | 	_rawHeader(), | ||||||
|  | 	_startPos(-1), | ||||||
|  | 	_endPos(-1), | ||||||
|  | 	_fileName(), | ||||||
|  | 	_lastModifiedAt(), | ||||||
|  | 	_extraField(), | ||||||
|  | 	_crc32(0), | ||||||
|  | 	_compressedSize(0), | ||||||
|  | 	_uncompressedSize(0) | ||||||
|  | { | ||||||
|  | 	std::memcpy(_rawHeader, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	std::memset(_rawHeader+ZipCommon::HEADER_SIZE, 0, FULLHEADER_SIZE - ZipCommon::HEADER_SIZE); | ||||||
|  | 	ZipCommon::HostSystem hs = ZipCommon::HS_FAT; | ||||||
|  |  | ||||||
|  | #if (POCO_OS == POCO_OS_CYGWIN) | ||||||
|  | 	hs = ZipCommon::HS_UNIX; | ||||||
|  | #endif | ||||||
|  | #if (POCO_OS == POCO_OS_VMS) | ||||||
|  | 	hs = ZipCommon::HS_VMS; | ||||||
|  | #endif | ||||||
|  | #if defined(POCO_OS_FAMILY_UNIX) | ||||||
|  | 	hs = ZipCommon::HS_UNIX; | ||||||
|  | #endif | ||||||
|  | 	setHostSystem(hs); | ||||||
|  | 	setEncryption(false); | ||||||
|  | 	setExtraFieldSize(0); | ||||||
|  | 	setLastModifiedAt(lastModifiedAt); | ||||||
|  | 	init(fileName, cm, cl); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipLocalFileHeader::ZipLocalFileHeader(std::istream& inp, bool assumeHeaderRead, ParseCallback& callback): | ||||||
|  | 	_rawHeader(), | ||||||
|  | 	_startPos(inp.tellg()), | ||||||
|  | 	_endPos(-1), | ||||||
|  | 	_fileName(), | ||||||
|  | 	_lastModifiedAt(), | ||||||
|  | 	_extraField(), | ||||||
|  | 	_crc32(0), | ||||||
|  | 	_compressedSize(0), | ||||||
|  | 	_uncompressedSize(0) | ||||||
|  | { | ||||||
|  | 	poco_assert_dbg( (EXTRAFIELD_POS+EXTRAFIELD_LENGTH) == FULLHEADER_SIZE); | ||||||
|  |  | ||||||
|  | 	if (assumeHeaderRead) | ||||||
|  | 		_startPos -= ZipCommon::HEADER_SIZE; | ||||||
|  |  | ||||||
|  | 	parse(inp, assumeHeaderRead); | ||||||
|  |  | ||||||
|  | 	bool ok = callback.handleZipEntry(inp, *this); | ||||||
|  |  | ||||||
|  | 	if (ok) | ||||||
|  | 	{ | ||||||
|  | 		if (searchCRCAndSizesAfterData()) | ||||||
|  | 		{ | ||||||
|  | 			ZipDataInfo nfo(inp, false); | ||||||
|  | 			setCRC(nfo.getCRC32()); | ||||||
|  | 			setCompressedSize(nfo.getCompressedSize()); | ||||||
|  | 			setUncompressedSize(nfo.getUncompressedSize()); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		poco_assert_dbg(!searchCRCAndSizesAfterData()); | ||||||
|  | 		ZipUtil::sync(inp); | ||||||
|  | 	} | ||||||
|  | 	_endPos = _startPos + getHeaderSize() + _compressedSize; // exclude the data block! | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipLocalFileHeader::~ZipLocalFileHeader() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipLocalFileHeader::parse(std::istream& inp, bool assumeHeaderRead) | ||||||
|  | { | ||||||
|  | 	if (!assumeHeaderRead) | ||||||
|  | 	{ | ||||||
|  | 		inp.read(_rawHeader, ZipCommon::HEADER_SIZE); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		std::memcpy(_rawHeader, HEADER, ZipCommon::HEADER_SIZE); | ||||||
|  | 	} | ||||||
|  | 	poco_assert (std::memcmp(_rawHeader, HEADER, ZipCommon::HEADER_SIZE) == 0); | ||||||
|  | 	// read the rest of the header | ||||||
|  | 	inp.read(_rawHeader + ZipCommon::HEADER_SIZE, FULLHEADER_SIZE - ZipCommon::HEADER_SIZE); | ||||||
|  | 	poco_assert (_rawHeader[VERSION_POS + 1]>= ZipCommon::HS_FAT && _rawHeader[VERSION_POS + 1] < ZipCommon::HS_UNUSED); | ||||||
|  | 	poco_assert (getMajorVersionNumber() <= 2); | ||||||
|  | 	poco_assert (ZipUtil::get16BitValue(_rawHeader, COMPR_METHOD_POS) < ZipCommon::CM_UNUSED); | ||||||
|  | 	parseDateTime(); | ||||||
|  | 	Poco::UInt16 len = getFileNameLength(); | ||||||
|  | 	Poco::Buffer<char> buf(len); | ||||||
|  | 	inp.read(buf.begin(), len); | ||||||
|  | 	_fileName = std::string(buf.begin(), len); | ||||||
|  | 	if (hasExtraField()) | ||||||
|  | 	{ | ||||||
|  | 		len = getExtraFieldLength(); | ||||||
|  | 		Poco::Buffer<char> xtra(len); | ||||||
|  | 		inp.read(xtra.begin(), len); | ||||||
|  | 		_extraField = std::string(xtra.begin(), len); | ||||||
|  | 	} | ||||||
|  | 	if (!searchCRCAndSizesAfterData()) | ||||||
|  | 	{ | ||||||
|  | 		_crc32 = getCRCFromHeader(); | ||||||
|  | 		_compressedSize = getCompressedSizeFromHeader(); | ||||||
|  | 		_uncompressedSize = getUncompressedSizeFromHeader(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bool ZipLocalFileHeader::searchCRCAndSizesAfterData() const | ||||||
|  | { | ||||||
|  | 	if (getCompressionMethod() == ZipCommon::CM_DEFLATE) | ||||||
|  | 	{ | ||||||
|  | 		// check bit 3 | ||||||
|  | 		return ((ZipUtil::get16BitValue(_rawHeader, GENERAL_PURPOSE_POS) & 0x0008) != 0); | ||||||
|  | 	} | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipLocalFileHeader::setFileName(const std::string& fileName, bool isDirectory) | ||||||
|  | { | ||||||
|  | 	poco_assert (!fileName.empty()); | ||||||
|  | 	Poco::Path aPath(fileName); | ||||||
|  |  | ||||||
|  | 	if (isDirectory) | ||||||
|  | 	{ | ||||||
|  | 		aPath.makeDirectory(); | ||||||
|  | 		setCRC(0); | ||||||
|  | 		setCompressedSize(0); | ||||||
|  | 		setUncompressedSize(0); | ||||||
|  | 		setCompressionMethod(ZipCommon::CM_STORE); | ||||||
|  | 		setCompressionLevel(ZipCommon::CL_NORMAL); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		aPath.makeFile(); | ||||||
|  | 	} | ||||||
|  | 	_fileName = aPath.toString(Poco::Path::PATH_UNIX); | ||||||
|  | 	if (_fileName[0] == '/') | ||||||
|  | 		_fileName = _fileName.substr(1); | ||||||
|  | 	if (isDirectory) | ||||||
|  | 	{ | ||||||
|  | 		poco_assert_dbg (_fileName[_fileName.size()-1] == '/'); | ||||||
|  | 	} | ||||||
|  | 	setFileNameLength(static_cast<Poco::UInt16>(_fileName.size())); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipLocalFileHeader::init(	const Poco::Path& fName,  | ||||||
|  | 								ZipCommon::CompressionMethod cm,  | ||||||
|  | 								ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	poco_assert (_fileName.empty()); | ||||||
|  | 	setSearchCRCAndSizesAfterData(false); | ||||||
|  | 	Poco::Path fileName(fName); | ||||||
|  | 	fileName.setDevice(""); // clear device! | ||||||
|  | 	setFileName(fileName.toString(Poco::Path::PATH_UNIX), fileName.isDirectory()); | ||||||
|  | 	setRequiredVersion(2, 0); | ||||||
|  | 	if (fileName.isFile()) | ||||||
|  | 	{ | ||||||
|  | 		setCompressionMethod(cm); | ||||||
|  | 		setCompressionLevel(cl); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 		setCompressionMethod(ZipCommon::CM_STORE); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | std::string ZipLocalFileHeader::createHeader() const | ||||||
|  | { | ||||||
|  | 	std::string result(_rawHeader, FULLHEADER_SIZE); | ||||||
|  | 	result.append(_fileName); | ||||||
|  | 	result.append(_extraField); | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										194
									
								
								Zip/src/ZipManipulator.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								Zip/src/ZipManipulator.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,194 @@ | |||||||
|  | // | ||||||
|  | // ZipManipulator.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipManipulator.cpp#2 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  ZipManipulator | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipManipulator.h" | ||||||
|  | #include "Poco/Zip/ZipException.h" | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  | #include "Poco/Zip/Add.h" | ||||||
|  | #include "Poco/Zip/Delete.h" | ||||||
|  | #include "Poco/Zip/Keep.h" | ||||||
|  | #include "Poco/Zip/Rename.h" | ||||||
|  | #include "Poco/Zip/Replace.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  | #include "Poco/Delegate.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include "Poco/FileStream.h" | ||||||
|  | #include <fstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipManipulator::ZipManipulator(const std::string& zipFile, bool backupOriginalFile): | ||||||
|  | 	_zipFile(zipFile), | ||||||
|  | 	_backupOriginalFile(backupOriginalFile), | ||||||
|  | 	_changes(), | ||||||
|  | 	_in(0) | ||||||
|  | { | ||||||
|  | 	std::ifstream in(zipFile.c_str()); | ||||||
|  | 	_in = new ZipArchive(in); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipManipulator::~ZipManipulator() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipManipulator::deleteFile(const std::string& zipPath) | ||||||
|  | { | ||||||
|  | 	const ZipLocalFileHeader& entry = getForChange(zipPath); | ||||||
|  | 	addOperation(zipPath, new Delete(entry)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipManipulator::replaceFile(const std::string& zipPath, const std::string& localPath) | ||||||
|  | { | ||||||
|  | 	const ZipLocalFileHeader& entry = getForChange(zipPath); | ||||||
|  | 	addOperation(zipPath, new Replace(entry, localPath)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipManipulator::renameFile(const std::string& zipPath, const std::string& newZipPath) | ||||||
|  | { | ||||||
|  | 	const ZipLocalFileHeader& entry = getForChange(zipPath); | ||||||
|  | 	// checked later in Compress too but the earlier one gets the error the better | ||||||
|  | 	std::string fn = ZipUtil::validZipEntryFileName(newZipPath);  | ||||||
|  | 	addOperation(zipPath, new Rename(entry, fn)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipManipulator::addFile(const std::string& zipPath, const std::string& localPath, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	addOperation(zipPath, new Add(zipPath, localPath, cm, cl)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive ZipManipulator::commit() | ||||||
|  | { | ||||||
|  | 	// write to a tmp file | ||||||
|  | 	std::string outFile(_zipFile + ".tmp"); | ||||||
|  | 	ZipArchive retVal(compress(outFile)); | ||||||
|  | 	//renaming | ||||||
|  | 	{ | ||||||
|  | 		Poco::File aFile(_zipFile); | ||||||
|  | 		if (_backupOriginalFile) | ||||||
|  | 		{ | ||||||
|  | 			Poco::File tmp(_zipFile+".bak"); | ||||||
|  | 			if (tmp.exists()) | ||||||
|  | 				tmp.remove(); | ||||||
|  | 			aFile.renameTo(_zipFile+".bak"); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 			aFile.remove(); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	{ | ||||||
|  | 		Poco::File resFile(outFile); | ||||||
|  | 		Poco::File zipFile(_zipFile); | ||||||
|  | 		if (zipFile.exists()) | ||||||
|  | 			zipFile.remove(); | ||||||
|  | 		resFile.renameTo(_zipFile); | ||||||
|  | 	} | ||||||
|  | 	return retVal; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const ZipLocalFileHeader& ZipManipulator::getForChange(const std::string& zipPath) const | ||||||
|  | { | ||||||
|  | 	ZipArchive::FileHeaders::const_iterator it = _in->findHeader(zipPath); | ||||||
|  | 	if (it == _in->headerEnd()) | ||||||
|  | 		throw ZipManipulationException("entry not found: " + zipPath); | ||||||
|  |  | ||||||
|  | 	if (_changes.find(zipPath) != _changes.end()) | ||||||
|  | 		throw ZipManipulationException("A change request exists already for entry " + zipPath); | ||||||
|  |  | ||||||
|  | 	return it->second; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipManipulator::addOperation(const std::string& zipPath, ZipOperation::Ptr ptrOp) | ||||||
|  | { | ||||||
|  | 	std::pair<Changes::iterator, bool> result = _changes.insert(std::make_pair(zipPath, ptrOp)); | ||||||
|  | 	if (!result.second) | ||||||
|  | 		throw ZipManipulationException("A change request exists already for entry " + zipPath); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipManipulator::onEDone(const void*, const ZipLocalFileHeader& hdr) | ||||||
|  | { | ||||||
|  | 	EDone(this, hdr); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipArchive ZipManipulator::compress(const std::string& outFile) | ||||||
|  | { | ||||||
|  | 	// write to a tmp file | ||||||
|  | 	Poco::FileInputStream in(_zipFile); | ||||||
|  | 	Poco::FileOutputStream out(outFile); | ||||||
|  | 	Compress c(out, true); | ||||||
|  | 	c.EDone += Poco::Delegate<ZipManipulator, const ZipLocalFileHeader>(this, &ZipManipulator::onEDone); | ||||||
|  | 	 | ||||||
|  | 	ZipArchive::FileHeaders::const_iterator it = _in->headerBegin(); | ||||||
|  | 	for (; it != _in->headerEnd(); ++it) | ||||||
|  | 	{ | ||||||
|  | 		Changes::iterator itC = _changes.find(it->first); | ||||||
|  | 		if (itC != _changes.end()) | ||||||
|  | 		{ | ||||||
|  | 			itC->second->execute(c, in); | ||||||
|  | 			_changes.erase(itC); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			Keep k(it->second); | ||||||
|  | 			k.execute(c, in); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	//Remaining files are add operations! | ||||||
|  | 	Changes::iterator itC = _changes.begin(); | ||||||
|  | 	for (; itC != _changes.end(); ++itC) | ||||||
|  | 	{ | ||||||
|  | 		itC->second->execute(c, in); | ||||||
|  | 	} | ||||||
|  | 	_changes.clear(); | ||||||
|  | 	c.EDone -= Poco::Delegate<ZipManipulator, const ZipLocalFileHeader>(this, &ZipManipulator::onEDone); | ||||||
|  | 	in.close(); | ||||||
|  | 	return c.close(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										54
									
								
								Zip/src/ZipOperation.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								Zip/src/ZipOperation.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | // | ||||||
|  | // ZipOperation.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipOperation.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Manipulation | ||||||
|  | // Module:  ZipOperation | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipOperation.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipOperation::ZipOperation() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipOperation::~ZipOperation() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										319
									
								
								Zip/src/ZipStream.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								Zip/src/ZipStream.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,319 @@ | |||||||
|  | // | ||||||
|  | // ZipStream.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipStream.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipStream | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipStream.h" | ||||||
|  | #include "Poco/zlib.h" | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/Zip/AutoDetectStream.h" | ||||||
|  | #include "Poco/Zip/PartialStream.h" | ||||||
|  | #include "Poco/Zip/ZipDataInfo.h" | ||||||
|  | #include "Poco/Zip/ZipException.h" | ||||||
|  | #include "Poco/Exception.h" | ||||||
|  | #include "Poco/InflatingStream.h" | ||||||
|  | #include "Poco/DeflatingStream.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipStreamBuf::ZipStreamBuf(std::istream& istr, const ZipLocalFileHeader& fileEntry, bool reposition): | ||||||
|  | 	Poco::BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::in), | ||||||
|  | 	_pIstr(&istr), | ||||||
|  | 	_pOstr(0), | ||||||
|  | 	_ptrBuf(), | ||||||
|  | 	_ptrOBuf(), | ||||||
|  | 	_ptrHelper(), | ||||||
|  | 	_ptrOHelper(), | ||||||
|  | 	_crc32(Poco::Checksum::TYPE_CRC32), | ||||||
|  | 	_expectedCrc32(0), | ||||||
|  | 	_checkCRC(true), | ||||||
|  | 	_bytesWritten(0), | ||||||
|  | 	_pHeader(0) | ||||||
|  | { | ||||||
|  | 	if (fileEntry.isDirectory()) | ||||||
|  | 		return; | ||||||
|  | 	_expectedCrc32 = fileEntry.getCRC(); | ||||||
|  | 	std::streamoff start = fileEntry.getDataStartPos(); | ||||||
|  | 	std::streamoff end = fileEntry.getDataEndPos(); | ||||||
|  | 	_checkCRC = !fileEntry.searchCRCAndSizesAfterData(); | ||||||
|  | 	if (fileEntry.getCompressionMethod() == ZipCommon::CM_DEFLATE) | ||||||
|  | 	{ | ||||||
|  | 		// Fake init bytes at beginning of stream | ||||||
|  | 		std::string init = ZipUtil::fakeZLibInitString(fileEntry.getCompressionLevel()); | ||||||
|  |  | ||||||
|  | 		// Fake adler at end of stream: just some dummy value, not checked anway | ||||||
|  | 		std::string crc(4, ' '); | ||||||
|  | 		if (fileEntry.searchCRCAndSizesAfterData()) | ||||||
|  | 		{ | ||||||
|  | 			_ptrHelper = new AutoDetectInputStream(istr, init, crc, reposition, start); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 			_ptrHelper = new PartialInputStream(istr, start, end, reposition, init, crc); | ||||||
|  | 		_ptrBuf = new Poco::InflatingInputStream(*_ptrHelper, Poco::InflatingStreamBuf::STREAM_ZIP); | ||||||
|  | 	} | ||||||
|  | 	else if (fileEntry.getCompressionMethod() == ZipCommon::CM_STORE) | ||||||
|  | 	{ | ||||||
|  | 		if (fileEntry.searchCRCAndSizesAfterData()) | ||||||
|  | 		{ | ||||||
|  | 			_ptrBuf = new AutoDetectInputStream(istr, "", "", reposition, start); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 			_ptrBuf = new PartialInputStream(istr, start, end, reposition); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		throw Poco::NotImplementedException("Unsupported compression method"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipStreamBuf::ZipStreamBuf(std::ostream& ostr, ZipLocalFileHeader& fileEntry, bool reposition): | ||||||
|  | 	Poco::BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::out), | ||||||
|  | 	_pIstr(0), | ||||||
|  | 	_pOstr(&ostr), | ||||||
|  | 	_ptrBuf(), | ||||||
|  | 	_ptrOBuf(), | ||||||
|  | 	_ptrHelper(), | ||||||
|  | 	_ptrOHelper(), | ||||||
|  | 	_crc32(Poco::Checksum::TYPE_CRC32), | ||||||
|  | 	_expectedCrc32(0), | ||||||
|  | 	_checkCRC(false), | ||||||
|  | 	_bytesWritten(0), | ||||||
|  | 	_pHeader(&fileEntry) | ||||||
|  | { | ||||||
|  | 	if (fileEntry.isEncrypted()) | ||||||
|  | 		throw Poco::NotImplementedException("Encryption not supported"); | ||||||
|  |  | ||||||
|  | 	if (fileEntry.isDirectory()) | ||||||
|  | 	{ | ||||||
|  | 		// only header, no payload, zero crc | ||||||
|  | 		fileEntry.setSearchCRCAndSizesAfterData(false); | ||||||
|  | 		fileEntry.setCompressedSize(0); | ||||||
|  | 		fileEntry.setUncompressedSize(0); | ||||||
|  | 		fileEntry.setCRC(0); | ||||||
|  | 		std::string header = fileEntry.createHeader(); | ||||||
|  | 		ostr.write(header.c_str(), static_cast<std::streamsize>(header.size())); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		fileEntry.setSearchCRCAndSizesAfterData(!reposition); | ||||||
|  | 		if (fileEntry.getCompressionMethod() == ZipCommon::CM_DEFLATE) | ||||||
|  | 		{ | ||||||
|  | 			int level = Z_DEFAULT_COMPRESSION; | ||||||
|  | 			if (fileEntry.getCompressionLevel() == ZipCommon::CL_FAST || fileEntry.getCompressionLevel() == ZipCommon::CL_SUPERFAST) | ||||||
|  | 				level = Z_BEST_SPEED; | ||||||
|  | 			else if (fileEntry.getCompressionLevel() == ZipCommon::CL_MAXIMUM) | ||||||
|  | 				level = Z_BEST_COMPRESSION; | ||||||
|  | 			// ignore the zlib init string which is of size 2 and also ignore the 4 byte adler32 value at the end of the stream! | ||||||
|  | 			_ptrOHelper = new PartialOutputStream(*_pOstr, 2, 4, false);  | ||||||
|  | 			_ptrOBuf = new Poco::DeflatingOutputStream(*_ptrOHelper, DeflatingStreamBuf::STREAM_ZLIB, level); | ||||||
|  | 		} | ||||||
|  | 		else if (fileEntry.getCompressionMethod() == ZipCommon::CM_STORE) | ||||||
|  | 		{ | ||||||
|  | 			_ptrOHelper = new PartialOutputStream(*_pOstr, 0, 0, false); | ||||||
|  | 			_ptrOBuf = _ptrOHelper; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			throw Poco::NotImplementedException("Unsupported compression method"); | ||||||
|  | 		} | ||||||
|  | 		// now write the header to the ostr! | ||||||
|  | 		std::string header = fileEntry.createHeader(); | ||||||
|  | 		ostr.write(header.c_str(), static_cast<std::streamsize>(header.size())); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipStreamBuf::~ZipStreamBuf() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int ZipStreamBuf::readFromDevice(char* buffer, std::streamsize length) | ||||||
|  | { | ||||||
|  | 	if (!_ptrBuf) return 0; // directory entry | ||||||
|  | 	_ptrBuf->read(buffer, length); | ||||||
|  | 	int cnt = _ptrBuf->gcount(); | ||||||
|  | 	if (cnt > 0) | ||||||
|  | 	{ | ||||||
|  | 		_crc32.update(buffer, cnt); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		if (_crc32.checksum() != _expectedCrc32) | ||||||
|  | 		{ | ||||||
|  | 			if (_checkCRC) | ||||||
|  | 				throw ZipException("CRC failure"); | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				// the CRC value is written directly after the data block | ||||||
|  | 				// parse it directly from the input stream | ||||||
|  | 				ZipDataInfo nfo(*_pIstr, false); | ||||||
|  | 				// now push back the header to the stream, so that the ZipLocalFileHeader can read it | ||||||
|  | 				Poco::Int32 size = static_cast<Poco::Int32>(nfo.getFullHeaderSize()); | ||||||
|  | 				_expectedCrc32 = nfo.getCRC32(); | ||||||
|  | 				const char* rawHeader = nfo.getRawHeader(); | ||||||
|  | 				for (Poco::Int32 i = size-1; i >= 0; --i) | ||||||
|  | 					_pIstr->putback(rawHeader[i]); | ||||||
|  | 				if (!crcValid()) | ||||||
|  | 					throw ZipException("CRC failure"); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return cnt; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int ZipStreamBuf::writeToDevice(const char* buffer, std::streamsize length) | ||||||
|  | { | ||||||
|  | 	if (!_ptrOBuf) return 0; // directory entry | ||||||
|  | 	if (length == 0) | ||||||
|  | 		return 0; | ||||||
|  | 	_bytesWritten += length; | ||||||
|  | 	_ptrOBuf->write(buffer, length); | ||||||
|  | 	_crc32.update(buffer, length); | ||||||
|  | 	return length; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipStreamBuf::close() | ||||||
|  | { | ||||||
|  | 	if (_ptrOBuf && _pHeader) | ||||||
|  | 	{ | ||||||
|  | 		_ptrOBuf->flush(); | ||||||
|  | 		DeflatingOutputStream* pDO = dynamic_cast<DeflatingOutputStream*>(_ptrOBuf.get()); | ||||||
|  | 		if (pDO) | ||||||
|  | 			pDO->close(); | ||||||
|  | 		if (_ptrOHelper) | ||||||
|  | 		{ | ||||||
|  | 			_ptrOHelper->flush(); | ||||||
|  | 			_ptrOHelper->close(); | ||||||
|  | 		} | ||||||
|  | 		_ptrOBuf = 0; | ||||||
|  | 		poco_assert (*_pOstr); | ||||||
|  | 		// write an extra datablock if required | ||||||
|  | 		// or fix the crc entries | ||||||
|  | 		if (_pHeader->searchCRCAndSizesAfterData()) | ||||||
|  | 		{ | ||||||
|  | 			ZipDataInfo info; | ||||||
|  | 			info.setCRC32(_crc32.checksum()); | ||||||
|  | 			info.setUncompressedSize(_bytesWritten); | ||||||
|  | 			info.setCompressedSize(static_cast<Poco::UInt32>(_ptrOHelper->bytesWritten())); | ||||||
|  | 			_pOstr->write(info.getRawHeader(), static_cast<std::streamsize>(info.getFullHeaderSize())); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			poco_check_ptr (_pHeader); | ||||||
|  | 			_pHeader->setCRC(_crc32.checksum()); | ||||||
|  | 			_pHeader->setUncompressedSize(_bytesWritten); | ||||||
|  | 			_pHeader->setCompressedSize(static_cast<Poco::UInt32>(_ptrOHelper->bytesWritten())); | ||||||
|  | 			_pOstr->seekp(_pHeader->getStartPos(), std::ios_base::beg); | ||||||
|  | 			poco_assert (*_pOstr); | ||||||
|  | 			std::string header = _pHeader->createHeader(); | ||||||
|  | 			_pOstr->write(header.c_str(), static_cast<std::streamsize>(header.size())); | ||||||
|  | 			_pOstr->seekp(0, std::ios_base::end); | ||||||
|  | 			poco_assert (*_pOstr); | ||||||
|  | 		} | ||||||
|  | 		_pHeader = 0; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bool ZipStreamBuf::crcValid() const | ||||||
|  | { | ||||||
|  | 	if (!_ptrBuf) return true; // directory entry | ||||||
|  | 	return _crc32.checksum() == _expectedCrc32; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipIOS::ZipIOS(std::istream& istr, const ZipLocalFileHeader& fileEntry, bool reposition): _buf(istr, fileEntry, reposition) | ||||||
|  | { | ||||||
|  | 	poco_ios_init(&_buf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipIOS::ZipIOS(std::ostream& ostr, ZipLocalFileHeader& fileEntry, bool reposition): _buf(ostr, fileEntry, reposition) | ||||||
|  | { | ||||||
|  | 	poco_ios_init(&_buf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipIOS::~ZipIOS() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipStreamBuf* ZipIOS::rdbuf() | ||||||
|  | { | ||||||
|  | 	return &_buf; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipInputStream::ZipInputStream(std::istream& istr, const ZipLocalFileHeader& fileEntry, bool reposition): ZipIOS(istr, fileEntry, reposition), std::istream(&_buf) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipInputStream::~ZipInputStream() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bool ZipInputStream::crcValid() const | ||||||
|  | { | ||||||
|  | 	return _buf.crcValid(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipOutputStream::ZipOutputStream(std::ostream& ostr, ZipLocalFileHeader& fileEntry, bool seekableOutput): ZipIOS(ostr, fileEntry, seekableOutput), std::ostream(&_buf) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipOutputStream::~ZipOutputStream() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipOutputStream::close() | ||||||
|  | { | ||||||
|  | 	flush(); | ||||||
|  | 	_buf.close(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										212
									
								
								Zip/src/ZipUtil.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								Zip/src/ZipUtil.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,212 @@ | |||||||
|  | // | ||||||
|  | // ZipUtil.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/src/ZipUtil.cpp#4 $ | ||||||
|  | // | ||||||
|  | // Library: Zip | ||||||
|  | // Package: Zip | ||||||
|  | // Module:  ZipUtil | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/ZipUtil.h" | ||||||
|  | #include "Poco/Zip/ZipException.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipFileInfo.h" | ||||||
|  | #include "Poco/Zip/ZipDataInfo.h" | ||||||
|  | #include "Poco/Zip/ZipArchiveInfo.h" | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace Poco { | ||||||
|  | namespace Zip { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Poco::DateTime ZipUtil::parseDateTime(const char* pVal, const Poco::UInt32 timePos, const Poco::UInt32 datePos) | ||||||
|  | { | ||||||
|  | 	Poco::UInt16 time = ZipUtil::get16BitValue(pVal, timePos); | ||||||
|  | 	Poco::UInt16 date = ZipUtil::get16BitValue(pVal, datePos); | ||||||
|  | 	//TIME: second 0-4, minute 5-10, hour 11-15, second resolution is 2! | ||||||
|  | 	int sec = 2*(time & 0x001fu);         // 0000 0000 0001 1111 | ||||||
|  | 	int min = ((time & 0x07e0u) >> 5);  // 0000 0111 1110 0000 | ||||||
|  | 	int hour= ((time & 0xf800u) >> 11); // 1111 1000 0000 0000 | ||||||
|  |  | ||||||
|  | 	//DATE: day 0-4, month 5-8, year (starting with 1980): 9-16 | ||||||
|  | 	int day = (date & 0x001fu);        // 0000 0000 0001 1111 | ||||||
|  | 	int mon = ((date & 0x01e0u) >> 5); // 0000 0001 1110 0000 | ||||||
|  | 	int year= 1980+((date & 0xfe00u) >> 9); // 1111 1110 0000 0000 | ||||||
|  | 	return Poco::DateTime(year, mon, day, hour, min, sec); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipUtil::setDateTime(const Poco::DateTime& dt, char* pVal, const Poco::UInt32 timePos, const Poco::UInt32 datePos) | ||||||
|  | { | ||||||
|  | 	//TIME: second 0-4, minute 5-10, hour 11-15 | ||||||
|  | 	Poco::UInt16 time = static_cast<Poco::UInt16>((dt.second()/2) + (dt.minute()<<5) + (dt.hour()<<11)); | ||||||
|  | 	//DATE: day 0-4, month 5-8, year (starting with 1980): 9-16 | ||||||
|  | 	int year = dt.year() - 1980; | ||||||
|  | 	if (year<0) | ||||||
|  | 		year = 0; | ||||||
|  | 	Poco::UInt16 date = static_cast<Poco::UInt16>(dt.day() + (dt.month()<<5) + (year<<9)); | ||||||
|  | 	ZipUtil::set16BitValue(time, pVal, timePos); | ||||||
|  | 	ZipUtil::set16BitValue(date, pVal, datePos); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | std::string ZipUtil::fakeZLibInitString(ZipCommon::CompressionLevel cl) | ||||||
|  | { | ||||||
|  | 	std::string init(2, ' '); | ||||||
|  |  | ||||||
|  | 	// compression info: | ||||||
|  | 	// deflate is used, bit 0-3: 0x08 | ||||||
|  | 	// dictionary size is always 32k: calc ld2(32k)-8 = ld2(2^15) - 8 = 15 - 8 = 7 --> bit 4-7: 0x70 | ||||||
|  | 	init[0] = '\x78'; | ||||||
|  |  | ||||||
|  | 	// now fake flags | ||||||
|  | 	// bits 0-4 check bits: set them so that init[0]*256+init[1] % 31 == 0 | ||||||
|  | 	// bit 5: preset dictionary? always no for us, set to 0 | ||||||
|  | 	// bits 6-7: compression level: 00 very fast, 01 fast, 10 normal, 11 best | ||||||
|  | 	if (cl == ZipCommon::CL_SUPERFAST) | ||||||
|  | 		init[1] = '\x00'; | ||||||
|  | 	else if (cl == ZipCommon::CL_FAST) | ||||||
|  | 		init[1] = '\x40'; | ||||||
|  | 	else if (cl == ZipCommon::CL_NORMAL) | ||||||
|  | 		init[1] = '\x80'; | ||||||
|  | 	else | ||||||
|  | 		init[1] = '\xc0'; | ||||||
|  | 	// now set the last 5 bits | ||||||
|  | 	Poco::UInt16 tmpVal = ((Poco::UInt16)init[0])*256+((unsigned char)init[1]); | ||||||
|  | 	char checkBits = (31 - (char)(tmpVal%31)); | ||||||
|  | 	init[1] |= checkBits; // set the lower 5 bits | ||||||
|  | 	tmpVal = ((Poco::UInt16)init[0])*256+((unsigned char)init[1]); | ||||||
|  | 	poco_assert_dbg ((tmpVal % 31) == 0); | ||||||
|  | 	return init; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipUtil::sync(std::istream& in) | ||||||
|  | { | ||||||
|  | 	enum | ||||||
|  | 	{ | ||||||
|  | 		PREFIX = 2,  | ||||||
|  | 		BUFFER_SIZE = 1024 | ||||||
|  | 	}; | ||||||
|  | 	char temp[BUFFER_SIZE]; | ||||||
|  | 	in.read(temp, PREFIX); | ||||||
|  | 	std::size_t tempPos = PREFIX; | ||||||
|  |  | ||||||
|  | 	while (in.good() && !in.eof()) | ||||||
|  | 	{  | ||||||
|  | 		// all zip headers start withe same 2byte prefix | ||||||
|  | 		if(std::memcmp(ZipLocalFileHeader::HEADER, &temp[tempPos - PREFIX], PREFIX) == 0) | ||||||
|  | 		{ | ||||||
|  | 			// we have a possible header! | ||||||
|  | 			// read the next 2 bytes | ||||||
|  | 			in.read(temp+tempPos, PREFIX); | ||||||
|  | 			tempPos += PREFIX; | ||||||
|  | 			if (std::memcmp(ZipLocalFileHeader::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0 ||  | ||||||
|  | 				std::memcmp(ZipArchiveInfo::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0 ||  | ||||||
|  | 				std::memcmp(ZipFileInfo::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0 || | ||||||
|  | 				std::memcmp(ZipDataInfo::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0) | ||||||
|  | 			{ | ||||||
|  | 				if (std::memcmp(ZipLocalFileHeader::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0) | ||||||
|  | 				{ | ||||||
|  | 					in.putback(ZipLocalFileHeader::HEADER[3]); | ||||||
|  | 					in.putback(ZipLocalFileHeader::HEADER[2]); | ||||||
|  | 					in.putback(ZipLocalFileHeader::HEADER[1]); | ||||||
|  | 					in.putback(ZipLocalFileHeader::HEADER[0]); | ||||||
|  | 				} | ||||||
|  | 				else if (std::memcmp(ZipArchiveInfo::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0) | ||||||
|  | 				{ | ||||||
|  | 					in.putback(ZipArchiveInfo::HEADER[3]); | ||||||
|  | 					in.putback(ZipArchiveInfo::HEADER[2]); | ||||||
|  | 					in.putback(ZipArchiveInfo::HEADER[1]); | ||||||
|  | 					in.putback(ZipArchiveInfo::HEADER[0]); | ||||||
|  | 				} | ||||||
|  | 				else if (std::memcmp(ZipFileInfo::HEADER+PREFIX, &temp[tempPos - PREFIX], PREFIX) == 0) | ||||||
|  | 				{ | ||||||
|  | 					in.putback(ZipFileInfo::HEADER[3]); | ||||||
|  | 					in.putback(ZipFileInfo::HEADER[2]); | ||||||
|  | 					in.putback(ZipFileInfo::HEADER[1]); | ||||||
|  | 					in.putback(ZipFileInfo::HEADER[0]); | ||||||
|  | 				} | ||||||
|  | 				else | ||||||
|  | 				{ | ||||||
|  | 					in.putback(ZipDataInfo::HEADER[3]); | ||||||
|  | 					in.putback(ZipDataInfo::HEADER[2]); | ||||||
|  | 					in.putback(ZipDataInfo::HEADER[1]); | ||||||
|  | 					in.putback(ZipDataInfo::HEADER[0]); | ||||||
|  | 				} | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				// we have read 2 bytes, should only be one: putback the last char | ||||||
|  | 				in.putback(temp[tempPos - 1]); | ||||||
|  | 				--tempPos; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			// read one byte | ||||||
|  | 			in.read(temp + tempPos, 1); | ||||||
|  | 			++tempPos; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if (tempPos > (BUFFER_SIZE - ZipCommon::HEADER_SIZE)) | ||||||
|  | 		{ | ||||||
|  | 			std::memcpy(temp, &temp[tempPos - ZipCommon::HEADER_SIZE], ZipCommon::HEADER_SIZE); | ||||||
|  | 			tempPos = ZipCommon::HEADER_SIZE; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipUtil::verifyZipEntryFileName(const std::string& fn) | ||||||
|  | { | ||||||
|  | 	if (fn.find("\\") != std::string::npos) | ||||||
|  | 		throw ZipException("Illegal entry name " + fn + " containing \\"); | ||||||
|  | 	if (fn == "/") | ||||||
|  | 		throw ZipException("Illegal entry name /"); | ||||||
|  | 	if (fn.empty()) | ||||||
|  | 		throw ZipException("Illegal empty entry name"); | ||||||
|  | 	if (fn.find(ZipCommon::ILLEGAL_PATH) != std::string::npos) | ||||||
|  | 		throw ZipException("Illegal entry name " + fn + " containing " + ZipCommon::ILLEGAL_PATH); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | std::string ZipUtil::validZipEntryFileName(const Poco::Path& entry) | ||||||
|  | { | ||||||
|  | 	std::string fn = entry.toString(Poco::Path::PATH_UNIX); | ||||||
|  | 	verifyZipEntryFileName(fn); | ||||||
|  | 	return fn; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } } // namespace Poco::Zip | ||||||
							
								
								
									
										18
									
								
								Zip/testsuite/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Zip/testsuite/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | # | ||||||
|  | # Makefile | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/testsuite/Makefile#1 $ | ||||||
|  | # | ||||||
|  | # Makefile for Poco Zip testsuite | ||||||
|  | # | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/global | ||||||
|  |  | ||||||
|  | objects = ZipTestSuite Driver \ | ||||||
|  | 	ZipTest	CompressTest PartialStreamTest | ||||||
|  |  | ||||||
|  | target         = testrunner | ||||||
|  | target_version = 1 | ||||||
|  | target_libs    = PocoZip PocoNet PocoFoundation CppUnit | ||||||
|  |  | ||||||
|  | include $(POCO_BASE)/build/rules/exec | ||||||
							
								
								
									
										9
									
								
								Zip/testsuite/TestSuite.vmsbuild
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Zip/testsuite/TestSuite.vmsbuild
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | # | ||||||
|  | # TestSuite.vmsbuild | ||||||
|  | # | ||||||
|  | # $Id: //poco/1.3/Zip/testsuite/TestSuite.vmsbuild#1 $ | ||||||
|  | # | ||||||
|  | EXE=TestRunner | ||||||
|  | ZipTestSuite | ||||||
|  | Driver | ||||||
|  | <SourceFilesHere> | ||||||
							
								
								
									
										197
									
								
								Zip/testsuite/TestSuite_VS71.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								Zip/testsuite/TestSuite_VS71.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,197 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="7.10" | ||||||
|  | 	Name="TestSuite" | ||||||
|  | 	ProjectGUID="{9665fc3c-db71-4c6c-aaee-aafd73cb31e7}" | ||||||
|  | 	Keyword="Win32Proj"> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32"/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\include;..\..\Foundation\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Net\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="TRUE" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="TRUE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="4"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="CppUnitd.lib WinTestRunnerd.lib PocoFoundationd.lib PocoZipd.lib PocoNetd.lib" | ||||||
|  | 				OutputFile="bin/TestSuited.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\lib" | ||||||
|  | 				GenerateDebugInformation="TRUE" | ||||||
|  | 				ProgramDatabaseFile="bin/TestSuited.pdb" | ||||||
|  | 				SubSystem="2" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2"> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="TRUE" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="TRUE" | ||||||
|  | 				OptimizeForWindowsApplication="TRUE" | ||||||
|  | 				AdditionalIncludeDirectories="..\include;..\..\Foundation\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Net\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="TRUE" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="FALSE" | ||||||
|  | 				TreatWChar_tAsBuiltInType="TRUE" | ||||||
|  | 				ForceConformanceInForLoopScope="TRUE" | ||||||
|  | 				RuntimeTypeInfo="TRUE" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="TRUE" | ||||||
|  | 				DebugInformationFormat="3"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="CppUnit.lib WinTestRunner.lib PocoFoundation.lib PocoZip.lib PocoNet.lib" | ||||||
|  | 				OutputFile="bin/TestSuite.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\lib" | ||||||
|  | 				GenerateDebugInformation="FALSE" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="2" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedWrapperGeneratorTool"/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Zip" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\CompressTest.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStreamTest.h"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTest.h"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\CompressTest.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStreamTest.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTest.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="_Suite" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTestSuite.h"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTestSuite.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="_Driver" | ||||||
|  | 			Filter=""> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				Filter=""> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\WinDriver.cpp"> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										267
									
								
								Zip/testsuite/TestSuite_VS80.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										267
									
								
								Zip/testsuite/TestSuite_VS80.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,267 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="8,00" | ||||||
|  | 	Name="TestSuite" | ||||||
|  | 	ProjectGUID="{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\include;..\..\Foundation\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Net\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="CppUnitd.lib WinTestRunnerd.lib PocoFoundationd.lib PocoZipd.lib PocoNetd.lib" | ||||||
|  | 				OutputFile="bin/TestSuited.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="bin/TestSuited.pdb" | ||||||
|  | 				SubSystem="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories="..\include;..\..\Foundation\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Net\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="true" | ||||||
|  | 				DebugInformationFormat="3" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="CppUnit.lib WinTestRunner.lib PocoFoundation.lib PocoZip.lib PocoNet.lib" | ||||||
|  | 				OutputFile="bin/TestSuite.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="2" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Zip" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\CompressTest.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStreamTest.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTest.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\CompressTest.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStreamTest.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTest.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="_Suite" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTestSuite.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTestSuite.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="_Driver" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\WinDriver.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										267
									
								
								Zip/testsuite/TestSuite_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										267
									
								
								Zip/testsuite/TestSuite_vs90.vcproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,267 @@ | |||||||
|  | <?xml version="1.0" encoding="Windows-1252"?> | ||||||
|  | <VisualStudioProject | ||||||
|  | 	ProjectType="Visual C++" | ||||||
|  | 	Version="9.00" | ||||||
|  | 	Name="TestSuite" | ||||||
|  | 	ProjectGUID="{9665FC3C-DB71-4C6C-AAEE-AAFD73CB31E7}" | ||||||
|  | 	Keyword="Win32Proj" | ||||||
|  | 	> | ||||||
|  | 	<Platforms> | ||||||
|  | 		<Platform | ||||||
|  | 			Name="Win32" | ||||||
|  | 		/> | ||||||
|  | 	</Platforms> | ||||||
|  | 	<ToolFiles> | ||||||
|  | 	</ToolFiles> | ||||||
|  | 	<Configurations> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="debug_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\debug_shared" | ||||||
|  | 			IntermediateDirectory="obj\debug_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="0" | ||||||
|  | 				AdditionalIncludeDirectories="..\include;..\..\Foundation\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Net\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				MinimalRebuild="true" | ||||||
|  | 				BasicRuntimeChecks="3" | ||||||
|  | 				RuntimeLibrary="3" | ||||||
|  | 				BufferSecurityCheck="true" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="4" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="CppUnitd.lib WinTestRunnerd.lib PocoFoundationd.lib PocoZipd.lib PocoNetd.lib" | ||||||
|  | 				OutputFile="bin/TestSuited.exe" | ||||||
|  | 				LinkIncremental="2" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\lib" | ||||||
|  | 				GenerateDebugInformation="true" | ||||||
|  | 				ProgramDatabaseFile="bin/TestSuited.pdb" | ||||||
|  | 				SubSystem="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 		<Configuration | ||||||
|  | 			Name="release_shared|Win32" | ||||||
|  | 			OutputDirectory="obj\release_shared" | ||||||
|  | 			IntermediateDirectory="obj\release_shared" | ||||||
|  | 			ConfigurationType="1" | ||||||
|  | 			UseOfMFC="2" | ||||||
|  | 			CharacterSet="2" | ||||||
|  | 			> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCustomBuildTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXMLDataGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebServiceProxyGeneratorTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCMIDLTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCCLCompilerTool" | ||||||
|  | 				Optimization="4" | ||||||
|  | 				InlineFunctionExpansion="1" | ||||||
|  | 				EnableIntrinsicFunctions="true" | ||||||
|  | 				FavorSizeOrSpeed="1" | ||||||
|  | 				OmitFramePointers="true" | ||||||
|  | 				AdditionalIncludeDirectories="..\include;..\..\Foundation\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Net\include" | ||||||
|  | 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_DLL;WINVER=0x0500" | ||||||
|  | 				StringPooling="true" | ||||||
|  | 				RuntimeLibrary="2" | ||||||
|  | 				BufferSecurityCheck="false" | ||||||
|  | 				TreatWChar_tAsBuiltInType="true" | ||||||
|  | 				ForceConformanceInForLoopScope="true" | ||||||
|  | 				RuntimeTypeInfo="true" | ||||||
|  | 				UsePrecompiledHeader="0" | ||||||
|  | 				WarningLevel="3" | ||||||
|  | 				Detect64BitPortabilityProblems="false" | ||||||
|  | 				DebugInformationFormat="3" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManagedResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCResourceCompilerTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPreLinkEventTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCLinkerTool" | ||||||
|  | 				AdditionalDependencies="CppUnit.lib WinTestRunner.lib PocoFoundation.lib PocoZip.lib PocoNet.lib" | ||||||
|  | 				OutputFile="bin/TestSuite.exe" | ||||||
|  | 				LinkIncremental="1" | ||||||
|  | 				AdditionalLibraryDirectories="..\..\lib" | ||||||
|  | 				GenerateDebugInformation="false" | ||||||
|  | 				ProgramDatabaseFile="" | ||||||
|  | 				SubSystem="2" | ||||||
|  | 				OptimizeReferences="2" | ||||||
|  | 				EnableCOMDATFolding="2" | ||||||
|  | 				TargetMachine="1" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCALinkTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCManifestTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCXDCMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCBscMakeTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCFxCopTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCAppVerifierTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCWebDeploymentTool" | ||||||
|  | 			/> | ||||||
|  | 			<Tool | ||||||
|  | 				Name="VCPostBuildEventTool" | ||||||
|  | 			/> | ||||||
|  | 		</Configuration> | ||||||
|  | 	</Configurations> | ||||||
|  | 	<References> | ||||||
|  | 	</References> | ||||||
|  | 	<Files> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="Zip" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\CompressTest.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStreamTest.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTest.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\CompressTest.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\PartialStreamTest.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTest.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="_Suite" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Header Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTestSuite.h" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\ZipTestSuite.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 		<Filter | ||||||
|  | 			Name="_Driver" | ||||||
|  | 			> | ||||||
|  | 			<Filter | ||||||
|  | 				Name="Source Files" | ||||||
|  | 				> | ||||||
|  | 				<File | ||||||
|  | 					RelativePath=".\src\WinDriver.cpp" | ||||||
|  | 					> | ||||||
|  | 				</File> | ||||||
|  | 			</Filter> | ||||||
|  | 		</Filter> | ||||||
|  | 	</Files> | ||||||
|  | 	<Globals> | ||||||
|  | 	</Globals> | ||||||
|  | </VisualStudioProject> | ||||||
							
								
								
									
										
											BIN
										
									
								
								Zip/testsuite/data/data.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Zip/testsuite/data/data.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Zip/testsuite/data/doc.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Zip/testsuite/data/doc.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Zip/testsuite/data/java.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Zip/testsuite/data/java.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Zip/testsuite/data/test.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Zip/testsuite/data/test.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										165
									
								
								Zip/testsuite/src/CompressTest.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								Zip/testsuite/src/CompressTest.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,165 @@ | |||||||
|  | // | ||||||
|  | // CompressTest.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/CompressTest.cpp#5 $ | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "CompressTest.h" | ||||||
|  | #include "ZipTest.h" | ||||||
|  | #include "Poco/Zip/Compress.h" | ||||||
|  | #include "Poco/Zip/ZipManipulator.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include "Poco/FileStream.h" | ||||||
|  | #include "CppUnit/TestCaller.h" | ||||||
|  | #include "CppUnit/TestSuite.h" | ||||||
|  | #include <fstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | using namespace Poco::Zip; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CompressTest::CompressTest(const std::string& name): CppUnit::TestCase(name) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CompressTest::~CompressTest() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::testSingleFile() | ||||||
|  | { | ||||||
|  | 	std::ofstream out("appinf.zip", std::ios::binary); | ||||||
|  | 	Poco::Path theFile(ZipTest::getTestFile("test.zip")); | ||||||
|  | 	Compress c(out, true); | ||||||
|  | 	c.addFile(theFile, theFile.getFileName()); | ||||||
|  | 	ZipArchive a(c.close()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::testDirectory() | ||||||
|  | { | ||||||
|  | 	std::ofstream out("pocobin.zip", std::ios::binary); | ||||||
|  | 	Poco::File aFile("some/"); | ||||||
|  | 	if (aFile.exists()) | ||||||
|  | 		aFile.remove(true); | ||||||
|  | 	Poco::File aDir("some/recursive/dir/"); | ||||||
|  | 	aDir.createDirectories(); | ||||||
|  | 	Poco::File aDir2("some/other/recursive/dir/"); | ||||||
|  | 	aDir2.createDirectories(); | ||||||
|  | 	Poco::File aF("some/recursive/dir/test.file"); | ||||||
|  | 	aF.createFile(); | ||||||
|  | 	Poco::FileOutputStream fos(aF.path()); | ||||||
|  | 	fos << "just some test data"; | ||||||
|  | 	fos.close(); | ||||||
|  |  | ||||||
|  | 	Poco::Path theFile(aFile.path()); | ||||||
|  | 	theFile.makeDirectory(); | ||||||
|  | 	Compress c(out, true); | ||||||
|  | 	c.addRecursive(theFile, ZipCommon::CL_MAXIMUM, false, theFile); | ||||||
|  | 	ZipArchive a(c.close()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::testManipulator() | ||||||
|  | { | ||||||
|  | 	{ | ||||||
|  | 		std::ofstream out("appinf.zip", std::ios::binary); | ||||||
|  | 		Poco::Path theFile(ZipTest::getTestFile("test.zip")); | ||||||
|  | 		Compress c(out, true); | ||||||
|  | 		c.addFile(theFile, theFile.getFileName()); | ||||||
|  | 		ZipArchive a(c.close()); | ||||||
|  | 	} | ||||||
|  | 	ZipManipulator zm("appinf.zip", true); | ||||||
|  | 	zm.renameFile("test.zip", "renamedtest.zip"); | ||||||
|  | 	zm.addFile("doc/othertest.zip", ZipTest::getTestFile("test.zip")); | ||||||
|  | 	ZipArchive archive=zm.commit(); | ||||||
|  | 	assert (archive.findHeader("doc/othertest.zip") != archive.headerEnd()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::testManipulatorDel() | ||||||
|  | { | ||||||
|  | 	{ | ||||||
|  | 		std::ofstream out("appinf.zip", std::ios::binary); | ||||||
|  | 		Poco::Path theFile(ZipTest::getTestFile("test.zip")); | ||||||
|  | 		Compress c(out, true); | ||||||
|  | 		c.addFile(theFile, theFile.getFileName()); | ||||||
|  | 		ZipArchive a(c.close()); | ||||||
|  | 	} | ||||||
|  | 	ZipManipulator zm("appinf.zip", true); | ||||||
|  | 	zm.deleteFile("test.zip"); | ||||||
|  | 	zm.addFile("doc/data.zip", ZipTest::getTestFile("data.zip")); | ||||||
|  | 	ZipArchive archive=zm.commit(); | ||||||
|  | 	assert (archive.findHeader("test.zip") == archive.headerEnd()); | ||||||
|  | 	assert (archive.findHeader("doc/data.zip") != archive.headerEnd()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::testManipulatorReplace() | ||||||
|  | { | ||||||
|  | 	{ | ||||||
|  | 		std::ofstream out("appinf.zip", std::ios::binary); | ||||||
|  | 		Poco::Path theFile(ZipTest::getTestFile("test.zip")); | ||||||
|  | 		Compress c(out, true); | ||||||
|  | 		c.addFile(theFile, theFile.getFileName()); | ||||||
|  | 		ZipArchive a(c.close()); | ||||||
|  | 	} | ||||||
|  | 	ZipManipulator zm("appinf.zip", true); | ||||||
|  | 	zm.replaceFile("test.zip", ZipTest::getTestFile("doc.zip")); | ||||||
|  | 	 | ||||||
|  | 	ZipArchive archive=zm.commit(); | ||||||
|  | 	assert (archive.findHeader("test.zip") != archive.headerEnd()); | ||||||
|  | 	assert (archive.findHeader("doc.zip") == archive.headerEnd()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::setUp() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void CompressTest::tearDown() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CppUnit::Test* CompressTest::suite() | ||||||
|  | { | ||||||
|  | 	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("CompressTest"); | ||||||
|  |  | ||||||
|  | 	CppUnit_addTest(pSuite, CompressTest, testSingleFile); | ||||||
|  | 	CppUnit_addTest(pSuite, CompressTest, testDirectory); | ||||||
|  | 	CppUnit_addTest(pSuite, CompressTest, testManipulator); | ||||||
|  | 	CppUnit_addTest(pSuite, CompressTest, testManipulatorDel); | ||||||
|  | 	CppUnit_addTest(pSuite, CompressTest, testManipulatorReplace); | ||||||
|  |  | ||||||
|  | 	return pSuite; | ||||||
|  | } | ||||||
							
								
								
									
										64
									
								
								Zip/testsuite/src/CompressTest.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								Zip/testsuite/src/CompressTest.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | // | ||||||
|  | // CompressTest.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/CompressTest.h#4 $ | ||||||
|  | // | ||||||
|  | // Definition of the CompressTest class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef CompressTest_INCLUDED | ||||||
|  | #define CompressTest_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "CppUnit/TestCase.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CompressTest: public CppUnit::TestCase | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	CompressTest(const std::string& name); | ||||||
|  | 	~CompressTest(); | ||||||
|  |  | ||||||
|  | 	void testSingleFile(); | ||||||
|  | 	void testDirectory(); | ||||||
|  | 	void testManipulator(); | ||||||
|  | 	void testManipulatorDel(); | ||||||
|  | 	void testManipulatorReplace(); | ||||||
|  |  | ||||||
|  | 	void setUp(); | ||||||
|  | 	void tearDown(); | ||||||
|  |  | ||||||
|  | 	static CppUnit::Test* suite(); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // CompressTest_INCLUDED | ||||||
							
								
								
									
										39
									
								
								Zip/testsuite/src/Driver.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Zip/testsuite/src/Driver.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | // | ||||||
|  | // Driver.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/Driver.cpp#2 $ | ||||||
|  | // | ||||||
|  | // Console-based test driver for Poco Zip. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "CppUnit/TestRunner.h" | ||||||
|  | #include "ZipTestSuite.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CppUnitMain(ZipTestSuite) | ||||||
							
								
								
									
										139
									
								
								Zip/testsuite/src/PartialStreamTest.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								Zip/testsuite/src/PartialStreamTest.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | |||||||
|  | // | ||||||
|  | // PartialStreamTest.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/PartialStreamTest.cpp#3 $ | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "PartialStreamTest.h" | ||||||
|  | #include "CppUnit/TestCaller.h" | ||||||
|  | #include "CppUnit/TestSuite.h" | ||||||
|  | #include "Poco/Zip/PartialStream.h" | ||||||
|  | #include <sstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | using namespace Poco::Zip; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialStreamTest::PartialStreamTest(const std::string& name): CppUnit::TestCase(name) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PartialStreamTest::~PartialStreamTest() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamTest::testReading() | ||||||
|  | { | ||||||
|  | 	std::string message("some dummy message !"); | ||||||
|  | 	std::string prefix("pre "); | ||||||
|  | 	std::string postfix(" post"); | ||||||
|  | 	std::string result(prefix+message+postfix); | ||||||
|  | 	std::istringstream istr(message); | ||||||
|  | 	PartialInputStream in(istr, 0, static_cast<std::streamoff>(message.length()), true, prefix, postfix); | ||||||
|  | 	char buf[124]; | ||||||
|  | 	in.read(buf, 124); | ||||||
|  | 	std::string res(buf, in.gcount()); | ||||||
|  | 	poco_assert (res == result); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamTest::testWriting() | ||||||
|  | { | ||||||
|  | 	std::string prefix("X"); | ||||||
|  | 	std::string message("some test message"); | ||||||
|  | 	std::string postfix("YYY"); | ||||||
|  | 	std::string result(prefix+message+postfix); | ||||||
|  | 	std::ostringstream ostr; | ||||||
|  | 	PartialOutputStream out(ostr, prefix.size(), postfix.size()); | ||||||
|  | 	out.write(result.c_str(), static_cast<std::streamsize>(result.length())); | ||||||
|  | 	poco_assert (out.good()); | ||||||
|  | 	out.close(); | ||||||
|  | 	std::string res (ostr.str()); | ||||||
|  | 	poco_assert (out.bytesWritten() == message.size()); | ||||||
|  | 	poco_assert (message == res); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamTest::testWritingZero() | ||||||
|  | { | ||||||
|  | 	std::string prefix("X"); | ||||||
|  | 	std::string message; | ||||||
|  | 	std::string postfix("YYY"); | ||||||
|  | 	std::string result(prefix+message+postfix); | ||||||
|  | 	std::ostringstream ostr; | ||||||
|  | 	PartialOutputStream out(ostr, prefix.size(), postfix.size()); | ||||||
|  | 	out.write(result.c_str(), static_cast<std::streamsize>(result.length())); | ||||||
|  | 	poco_assert (out.good()); | ||||||
|  | 	out.close(); | ||||||
|  | 	std::string res (ostr.str()); | ||||||
|  | 	poco_assert (out.bytesWritten() == message.size()); | ||||||
|  | 	poco_assert (message == res); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamTest::testWritingOne() | ||||||
|  | { | ||||||
|  | 	std::string prefix("X"); | ||||||
|  | 	std::string message("a"); | ||||||
|  | 	std::string postfix("YYY"); | ||||||
|  | 	std::string result(prefix+message+postfix); | ||||||
|  | 	std::ostringstream ostr; | ||||||
|  | 	PartialOutputStream out(ostr, prefix.size(), postfix.size()); | ||||||
|  | 	out.write(result.c_str(), static_cast<std::streamsize>(result.length())); | ||||||
|  | 	poco_assert (out.good()); | ||||||
|  | 	out.close(); | ||||||
|  | 	std::string res (ostr.str()); | ||||||
|  | 	poco_assert (out.bytesWritten() == message.size()); | ||||||
|  | 	poco_assert (message == res); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamTest::setUp() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void PartialStreamTest::tearDown() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CppUnit::Test* PartialStreamTest::suite() | ||||||
|  | { | ||||||
|  | 	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("PartialStreamTest"); | ||||||
|  |  | ||||||
|  | 	CppUnit_addTest(pSuite, PartialStreamTest, testReading); | ||||||
|  | 	CppUnit_addTest(pSuite, PartialStreamTest, testWriting); | ||||||
|  | 	CppUnit_addTest(pSuite, PartialStreamTest, testWritingZero); | ||||||
|  | 	CppUnit_addTest(pSuite, PartialStreamTest, testWritingOne); | ||||||
|  |  | ||||||
|  | 	return pSuite; | ||||||
|  | } | ||||||
							
								
								
									
										63
									
								
								Zip/testsuite/src/PartialStreamTest.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								Zip/testsuite/src/PartialStreamTest.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | // | ||||||
|  | // PartialStreamTest.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/PartialStreamTest.h#3 $ | ||||||
|  | // | ||||||
|  | // Definition of the PartialStreamTest class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef PartialStreamTest_INCLUDED | ||||||
|  | #define PartialStreamTest_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "CppUnit/TestCase.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PartialStreamTest: public CppUnit::TestCase | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	PartialStreamTest(const std::string& name); | ||||||
|  | 	~PartialStreamTest(); | ||||||
|  |  | ||||||
|  | 	void testReading(); | ||||||
|  | 	void testWriting(); | ||||||
|  | 	void testWritingZero(); | ||||||
|  | 	void testWritingOne(); | ||||||
|  |  | ||||||
|  | 	void setUp(); | ||||||
|  | 	void tearDown(); | ||||||
|  |  | ||||||
|  | 	static CppUnit::Test* suite(); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // PartialStreamTest_INCLUDED | ||||||
							
								
								
									
										50
									
								
								Zip/testsuite/src/WinDriver.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								Zip/testsuite/src/WinDriver.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | // | ||||||
|  | // WinDriver.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/WinDriver.cpp#2 $ | ||||||
|  | // | ||||||
|  | // Windows test driver for Poco Zip. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "WinTestRunner/WinTestRunner.h" | ||||||
|  | #include "ZipTestSuite.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestDriver: public CppUnit::WinTestRunnerApp | ||||||
|  | { | ||||||
|  | 	void TestMain() | ||||||
|  | 	{ | ||||||
|  | 		CppUnit::WinTestRunner runner; | ||||||
|  | 		runner.addTest(ZipTestSuite::suite()); | ||||||
|  | 		runner.run(); | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | TestDriver theDriver; | ||||||
							
								
								
									
										286
									
								
								Zip/testsuite/src/ZipTest.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										286
									
								
								Zip/testsuite/src/ZipTest.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,286 @@ | |||||||
|  | // | ||||||
|  | // ZipTest.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/ZipTest.cpp#6 $ | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "ZipTest.h" | ||||||
|  | #include "Poco/Zip/SkipCallback.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "Poco/Zip/ZipArchive.h" | ||||||
|  | #include "Poco/Zip/ZipStream.h" | ||||||
|  | #include "Poco/Zip/Decompress.h" | ||||||
|  | #include "Poco/StreamCopier.h" | ||||||
|  | #include "Poco/File.h" | ||||||
|  | #include "Poco/URI.h" | ||||||
|  | #include "Poco/Path.h" | ||||||
|  | #include "Poco/Delegate.h" | ||||||
|  | #include "Poco/Net/HTTPClientSession.h" | ||||||
|  | #include "Poco/Net/HTTPRequest.h" | ||||||
|  | #include "Poco/Net/HTTPResponse.h" | ||||||
|  | #include "Poco/Net/HTTPServer.h" | ||||||
|  | #include "Poco/Net/HTTPServerParams.h" | ||||||
|  | #include "Poco/Net/AbstractHTTPRequestHandler.h" | ||||||
|  | #include "Poco/Net/HTTPRequestHandlerFactory.h" | ||||||
|  | #include "Poco/Net/HTTPServerRequest.h" | ||||||
|  | #include "Poco/Net/HTTPServerResponse.h" | ||||||
|  | #include "Poco/Net/ServerSocket.h" | ||||||
|  | #include "Poco/StreamCopier.h" | ||||||
|  | #include "CppUnit/TestCaller.h" | ||||||
|  | #include "CppUnit/TestSuite.h" | ||||||
|  | #include <fstream> | ||||||
|  | #include <sstream> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | using namespace Poco::Zip; | ||||||
|  | using namespace Poco::Net; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace | ||||||
|  | { | ||||||
|  | 	class ZipFileRequestHandler: public HTTPRequestHandler | ||||||
|  | 	{ | ||||||
|  | 	public: | ||||||
|  | 		ZipFileRequestHandler() | ||||||
|  | 		{ | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) | ||||||
|  | 		{ | ||||||
|  | 			response.setChunkedTransferEncoding(true); | ||||||
|  | 			std::string testFile = ZipTest::getTestFile("test.zip"); | ||||||
|  | 			std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 			poco_assert (inp); | ||||||
|  | 		 | ||||||
|  | 			response.setContentType("application/zip"); | ||||||
|  | 			 | ||||||
|  | 			std::ostream& ostr = response.send(); | ||||||
|  | 			Poco::StreamCopier::copyStream(inp, ostr); | ||||||
|  | 		} | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	class RequestHandlerFactory: public HTTPRequestHandlerFactory | ||||||
|  | 	{ | ||||||
|  | 	public: | ||||||
|  | 		HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) | ||||||
|  | 		{ | ||||||
|  | 			if (request.getURI() == "/test.zip") | ||||||
|  | 				return new ZipFileRequestHandler; | ||||||
|  | 			else | ||||||
|  | 				return 0; | ||||||
|  | 		} | ||||||
|  | 	}; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ZipTest::ZipTest(const std::string& name): CppUnit::TestCase(name) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ZipTest::~ZipTest() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::testSkipSingleFile() | ||||||
|  | { | ||||||
|  | 	std::string testFile = getTestFile("test.zip"); | ||||||
|  | 	std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 	poco_assert (inp); | ||||||
|  | 	SkipCallback skip; | ||||||
|  | 	ZipLocalFileHeader hdr(inp, false, skip); | ||||||
|  | 	poco_assert (ZipCommon::HS_FAT == hdr.getHostSystem()); | ||||||
|  | 	int major = hdr.getMajorVersionNumber(); | ||||||
|  | 	int minor = hdr.getMinorVersionNumber(); | ||||||
|  | 	poco_assert (major <= 2); | ||||||
|  | 	std::size_t hdrSize = hdr.getHeaderSize(); | ||||||
|  | 	poco_assert (hdrSize > 30); | ||||||
|  | 	ZipCommon::CompressionMethod cm = hdr.getCompressionMethod(); | ||||||
|  | 	poco_assert (!hdr.isEncrypted()); | ||||||
|  | 	Poco::DateTime aDate = hdr.lastModifiedAt(); | ||||||
|  | 	Poco::UInt32 cS = hdr.getCompressedSize(); | ||||||
|  | 	Poco::UInt32 uS = hdr.getUncompressedSize(); | ||||||
|  | 	const std::string& fileName = hdr.getFileName(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::testDecompressSingleFile() | ||||||
|  | { | ||||||
|  | 	std::string testFile = getTestFile("test.zip"); | ||||||
|  | 	std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 	poco_assert (inp); | ||||||
|  | 	ZipArchive arch(inp); | ||||||
|  | 	ZipArchive::FileHeaders::const_iterator it = arch.findHeader("Zip_VS71.vcproj"); | ||||||
|  | 	poco_assert (it != arch.headerEnd()); | ||||||
|  | 	ZipInputStream zipin (inp, it->second); | ||||||
|  | 	std::ostringstream out(std::ios::binary); | ||||||
|  | 	Poco::StreamCopier::copyStream(zipin, out); | ||||||
|  | 	poco_assert(!out.str().empty()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::testCrcAndSizeAfterData() | ||||||
|  | { | ||||||
|  | 	std::string testFile = getTestFile("java.zip"); | ||||||
|  | 	std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 	poco_assert (inp); | ||||||
|  | 	Decompress dec(inp, Poco::Path()); | ||||||
|  | 	dec.EError += Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	dec.decompressAllFiles(); | ||||||
|  | 	dec.EError -= Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	poco_assert (_errCnt == 0); | ||||||
|  | 	poco_assert (!dec.mapping().empty()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::testCrcAndSizeAfterDataWithArchive() | ||||||
|  | { | ||||||
|  | 	std::string testFile = getTestFile("java.zip"); | ||||||
|  | 	std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 	poco_assert (inp); | ||||||
|  | 	Poco::Zip::ZipArchive zip(inp); | ||||||
|  | 	inp.clear(); | ||||||
|  | 	inp.seekg(0); | ||||||
|  | 	Poco::Zip::ZipArchive::FileHeaders::const_iterator it = zip.headerBegin(); | ||||||
|  | 	for ( ; it!=zip.headerEnd(); ++it) | ||||||
|  | 	{ | ||||||
|  | 		Poco::Zip::ZipInputStream zipis(inp,it->second); | ||||||
|  | 		Poco::Path path(it->second.getFileName()); | ||||||
|  | 		if (path.isFile()) | ||||||
|  | 		{ | ||||||
|  | 			std::ofstream os("test.dat"); | ||||||
|  | 			Poco::StreamCopier::copyStream(zipis,os); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | std::string ZipTest::getTestFile(const std::string& testFile) | ||||||
|  | { | ||||||
|  | 	Poco::Path root; | ||||||
|  | 	root.makeAbsolute(); | ||||||
|  | 	Poco::Path result; | ||||||
|  | 	while (!Poco::Path::find(root.toString(), "data", result)) | ||||||
|  | 	{ | ||||||
|  | 		root.makeParent(); | ||||||
|  | 		if (root.toString().empty() || root.toString() == "/") | ||||||
|  | 			throw Poco::FileNotFoundException("Didn't find data subdir"); | ||||||
|  | 	} | ||||||
|  | 	result.makeDirectory(); | ||||||
|  | 	result.setFileName(testFile); | ||||||
|  | 	Poco::File aFile(result.toString()); | ||||||
|  | 	if (!aFile.exists() || (aFile.exists() && !aFile.isFile())) | ||||||
|  | 		throw Poco::FileNotFoundException("Didn't find " + testFile); | ||||||
|  | 	 | ||||||
|  | 	return result.toString(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::testDecompress() | ||||||
|  | { | ||||||
|  | 	std::string testFile = getTestFile("test.zip"); | ||||||
|  | 	std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 	poco_assert (inp); | ||||||
|  | 	Decompress dec(inp, Poco::Path()); | ||||||
|  | 	dec.EError += Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	dec.decompressAllFiles(); | ||||||
|  | 	dec.EError -= Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	poco_assert (_errCnt == 0); | ||||||
|  | 	poco_assert (!dec.mapping().empty()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::testDecompressFlat() | ||||||
|  | { | ||||||
|  | 	std::string testFile = getTestFile("test.zip"); | ||||||
|  | 	std::ifstream inp(testFile.c_str(), std::ios::binary); | ||||||
|  | 	poco_assert (inp); | ||||||
|  | 	Decompress dec(inp, Poco::Path(), true); | ||||||
|  | 	dec.EError += Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	dec.decompressAllFiles(); | ||||||
|  | 	dec.EError -= Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	poco_assert (_errCnt == 0); | ||||||
|  | 	poco_assert (!dec.mapping().empty()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::decompressDirectlyFromNet() | ||||||
|  | { | ||||||
|  | 	ServerSocket svs(22222); | ||||||
|  | 	HTTPServerParams* pParams = new HTTPServerParams; | ||||||
|  | 	pParams->setKeepAlive(true); | ||||||
|  | 	HTTPServer srv(new RequestHandlerFactory, svs, pParams); | ||||||
|  | 	srv.start(); | ||||||
|  | 	Poco::URI uri("http://localhost:22222/test.zip"); | ||||||
|  |  | ||||||
|  | 	HTTPClientSession session("localhost", 22222); | ||||||
|  | 	HTTPRequest req(HTTPRequest::HTTP_GET, "/test.zip", HTTPMessage::HTTP_1_1); | ||||||
|  | 	session.sendRequest(req); | ||||||
|  | 	HTTPResponse res; | ||||||
|  | 	std::istream& rs = session.receiveResponse(res); | ||||||
|  | 	Decompress dec(rs, Poco::Path()); | ||||||
|  | 	dec.EError += Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	dec.decompressAllFiles(); | ||||||
|  | 	dec.EError -= Poco::Delegate<ZipTest, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> >(this, &ZipTest::onDecompressError); | ||||||
|  | 	poco_assert (_errCnt == 0); | ||||||
|  | 	poco_assert (!dec.mapping().empty()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::onDecompressError(const void* pSender, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string>& info) | ||||||
|  | { | ||||||
|  | 	++_errCnt; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::setUp() | ||||||
|  | { | ||||||
|  | 	_errCnt = 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void ZipTest::tearDown() | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CppUnit::Test* ZipTest::suite() | ||||||
|  | { | ||||||
|  | 	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ZipTest"); | ||||||
|  |  | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, testSkipSingleFile); | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, testDecompressSingleFile); | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, testDecompress); | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, testDecompressFlat); | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, decompressDirectlyFromNet); | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, testCrcAndSizeAfterData); | ||||||
|  | 	CppUnit_addTest(pSuite, ZipTest, testCrcAndSizeAfterDataWithArchive); | ||||||
|  | 	return pSuite; | ||||||
|  | } | ||||||
							
								
								
									
										73
									
								
								Zip/testsuite/src/ZipTest.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								Zip/testsuite/src/ZipTest.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | // | ||||||
|  | // ZipTest.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/ZipTest.h#5 $ | ||||||
|  | // | ||||||
|  | // Definition of the ZipTest class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2007, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef ZipTest_INCLUDED | ||||||
|  | #define ZipTest_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Poco/Zip/Zip.h" | ||||||
|  | #include "Poco/Zip/ZipLocalFileHeader.h" | ||||||
|  | #include "CppUnit/TestCase.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipTest: public CppUnit::TestCase | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	ZipTest(const std::string& name); | ||||||
|  | 	~ZipTest(); | ||||||
|  |  | ||||||
|  | 	void testSkipSingleFile(); | ||||||
|  | 	void testDecompressSingleFile(); | ||||||
|  | 	void testDecompress(); | ||||||
|  | 	void decompressDirectlyFromNet(); | ||||||
|  | 	void testCrcAndSizeAfterData(); | ||||||
|  | 	void testCrcAndSizeAfterDataWithArchive(); | ||||||
|  |  | ||||||
|  | 	void testDecompressFlat(); | ||||||
|  |  | ||||||
|  | 	void setUp(); | ||||||
|  | 	void tearDown(); | ||||||
|  |  | ||||||
|  | 	static CppUnit::Test* suite(); | ||||||
|  |  | ||||||
|  | 	static std::string getTestFile(const std::string& testFile); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	void onDecompressError(const void* pSender, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string>& info); | ||||||
|  | 	 | ||||||
|  | 	int _errCnt; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // ZipTest_INCLUDED | ||||||
							
								
								
									
										48
									
								
								Zip/testsuite/src/ZipTestSuite.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								Zip/testsuite/src/ZipTestSuite.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | // | ||||||
|  | // ZipTestSuite.cpp | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/ZipTestSuite.cpp#1 $ | ||||||
|  | // | ||||||
|  | // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "ZipTestSuite.h" | ||||||
|  | #include "ZipTest.h" | ||||||
|  | #include "PartialStreamTest.h" | ||||||
|  | #include "CompressTest.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CppUnit::Test* ZipTestSuite::suite() | ||||||
|  | { | ||||||
|  | 	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ZipTestSuite"); | ||||||
|  |  | ||||||
|  | 	pSuite->addTest(ZipTest::suite()); | ||||||
|  | 	pSuite->addTest(PartialStreamTest::suite()); | ||||||
|  | 	pSuite->addTest(CompressTest::suite()); | ||||||
|  |  | ||||||
|  | 	return pSuite; | ||||||
|  | } | ||||||
							
								
								
									
										49
									
								
								Zip/testsuite/src/ZipTestSuite.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Zip/testsuite/src/ZipTestSuite.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | // | ||||||
|  | // ZipTestSuite.h | ||||||
|  | // | ||||||
|  | // $Id: //poco/1.3/Zip/testsuite/src/ZipTestSuite.h#1 $ | ||||||
|  | // | ||||||
|  | // Definition of the ZipTestSuite class. | ||||||
|  | // | ||||||
|  | // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. | ||||||
|  | // and Contributors. | ||||||
|  | // | ||||||
|  | // Permission is hereby granted, free of charge, to any person or organization | ||||||
|  | // obtaining a copy of the software and accompanying documentation covered by | ||||||
|  | // this license (the "Software") to use, reproduce, display, distribute, | ||||||
|  | // execute, and transmit the Software, and to prepare derivative works of the | ||||||
|  | // Software, and to permit third-parties to whom the Software is furnished to | ||||||
|  | // do so, all subject to the following: | ||||||
|  | //  | ||||||
|  | // The copyright notices in the Software and this entire statement, including | ||||||
|  | // the above license grant, this restriction and the following disclaimer, | ||||||
|  | // must be included in all copies of the Software, in whole or in part, and | ||||||
|  | // all derivative works of the Software, unless such copies or derivative | ||||||
|  | // works are solely in the form of machine-executable object code generated by | ||||||
|  | // a source language processor. | ||||||
|  | //  | ||||||
|  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT | ||||||
|  | // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE | ||||||
|  | // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, | ||||||
|  | // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  | // DEALINGS IN THE SOFTWARE. | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifndef ZipTestSuite_INCLUDED | ||||||
|  | #define ZipTestSuite_INCLUDED | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "CppUnit/TestSuite.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ZipTestSuite | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	static CppUnit::Test* suite(); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif // ZipTestSuite_INCLUDED | ||||||
		Reference in New Issue
	
	Block a user
	 Peter Schojer
					Peter Schojer