Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 79fbcdc939 | 
| @@ -1,6 +1,15 @@ | ||||
|  | ||||
|                 ChangeLog file for zlib | ||||
|  | ||||
| Changes in 1.2.2 (3 October 2004) | ||||
| - Update zlib.h comments on gzip in-memory processing | ||||
| - Set adler to 1 in inflateReset() to support Java test suite [Walles] | ||||
| - Add contrib/dotzlib [Ravn] | ||||
| - Update win32/DLL_FAQ.txt [Truta] | ||||
| - Update contrib/minizip [Vollant] | ||||
| - Move contrib/visual-basic.txt to old/ [Truta] | ||||
| - Fix assembler builds in projects/visualc6/ [Truta] | ||||
|  | ||||
| Changes in 1.2.1.2 (9 September 2004) | ||||
| - Update INDEX file | ||||
| - Fix trees.c to update strm->data_type (no one ever noticed!) | ||||
|   | ||||
							
								
								
									
										2
									
								
								FAQ
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								FAQ
									
									
									
									
									
								
							| @@ -117,7 +117,7 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | ||||
|     After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib | ||||
|     generates an error such as: | ||||
|  | ||||
|         ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so:  | ||||
|         ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so: | ||||
|         symbol __register_frame_info: referenced symbol not found | ||||
|  | ||||
|     The symbol __register_frame_info is not part of zlib, it is generated by | ||||
|   | ||||
							
								
								
									
										2
									
								
								INDEX
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								INDEX
									
									
									
									
									
								
							| @@ -8,7 +8,7 @@ algorithm.txt   description of the (de)compression algorithm | ||||
| configure       configure script for Unix | ||||
| zconf.in.h      template for zconf.h (used by configure) | ||||
|  | ||||
| amiga/		makefiles for Amiga SAS C | ||||
| amiga/          makefiles for Amiga SAS C | ||||
| as400/          makefiles for IBM AS/400 | ||||
| msdos/          makefiles for MSDOS | ||||
| old/            makefiles for various architectures and zlib documentation | ||||
|   | ||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -30,7 +30,7 @@ CPP=$(CC) -E | ||||
|  | ||||
| LIBS=libz.a | ||||
| SHAREDLIB=libz.so | ||||
| SHAREDLIBV=libz.so.1.2.1.2 | ||||
| SHAREDLIBV=libz.so.1.2.2 | ||||
| SHAREDLIBM=libz.so.1 | ||||
|  | ||||
| AR=ar rc | ||||
|   | ||||
| @@ -30,7 +30,7 @@ CPP=$(CC) -E | ||||
|  | ||||
| LIBS=libz.a | ||||
| SHAREDLIB=libz.so | ||||
| SHAREDLIBV=libz.so.1.2.1.2 | ||||
| SHAREDLIBV=libz.so.1.2.2 | ||||
| SHAREDLIBM=libz.so.1 | ||||
|  | ||||
| AR=ar rc | ||||
|   | ||||
							
								
								
									
										4
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								README
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| ZLIB DATA COMPRESSION LIBRARY | ||||
|  | ||||
| zlib 1.2.1.2 is a general purpose data compression library.  All the code is | ||||
| zlib 1.2.2 is a general purpose data compression library.  All the code is | ||||
| thread safe.  The data format used by the zlib library is described by RFCs | ||||
| (Request for Comments) 1950 to 1952 in the files | ||||
| http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) | ||||
| @@ -34,7 +34,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 | ||||
| issue of  Dr. Dobb's Journal; a copy of the article is available in | ||||
| http://dogma.net/markn/articles/zlibtool/zlibtool.htm | ||||
|  | ||||
| The changes made in version 1.2.1.2 are documented in the file ChangeLog. | ||||
| The changes made in version 1.2.2 are documented in the file ChangeLog. | ||||
|  | ||||
| Unsupported third party contributions are provided in directory "contrib". | ||||
|  | ||||
|   | ||||
| @@ -118,6 +118,6 @@ | ||||
|                                  &MODLIB/INFTREES    &MODLIB/TREES       + | ||||
|                                  &MODLIB/UNCOMPR     &MODLIB/ZUTIL)      + | ||||
|                           SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) + | ||||
|                           TEXT('ZLIB 1.2.1') TGTRLS(V4R4M0) | ||||
|                           TEXT('ZLIB 1.2.2') TGTRLS(V4R4M0) | ||||
|  | ||||
|              ENDPGM | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
|         ZLIB version 1.2.1 for AS400 installation instructions | ||||
|         ZLIB version 1.2.2 for AS400 installation instructions | ||||
|  | ||||
| I) From an AS400 *SAVF file: | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
|       *  ZLIB.INC - Interface to the general purpose compression library | ||||
|       * | ||||
|       *  ILE RPG400 version by Patrick Monnerat, DATASPHERE. | ||||
|       *  Version 1.2.1.2 | ||||
|       *  Version 1.2.2 | ||||
|       * | ||||
|       * | ||||
|       *  WARNING: | ||||
| @@ -20,8 +20,8 @@ | ||||
|       *                               Constants | ||||
|       ************************************************************************** | ||||
|       * | ||||
|      D ZLIB_VERSION    C                   '1.2.1.2'                            Header's version | ||||
|      D ZLIB_VERNUM     C                   X'1212' | ||||
|      D ZLIB_VERSION    C                   '1.2.2'                            Header's version | ||||
|      D ZLIB_VERNUM     C                   X'1220' | ||||
|       * | ||||
|      D Z_NO_FLUSH      C                   0 | ||||
|      D Z_SYNC_FLUSH    C                   2 | ||||
|   | ||||
| @@ -19,6 +19,9 @@ blast/      by Mark Adler <madler@alumni.caltech.edu> | ||||
| delphi/     by Cosmin Truta <cosmint@cs.ubbcluj.ro> | ||||
|         Support for Delphi and C++ Builder | ||||
|  | ||||
| dotzlib/    by Henrik Ravn <henrik@ravn.com> | ||||
|         Support for Microsoft .Net and Visual C++ .Net | ||||
|  | ||||
| gzappend/   by Mark Adler <madler@alumni.caltech.edu> | ||||
|         append to a gzip file -- illustrates the use of Z_BLOCK | ||||
|  | ||||
| @@ -60,11 +63,8 @@ puff/       by Mark Adler <madler@alumni.caltech.edu> | ||||
| testzlib/   by Gilles Vollant <info@winimage.com> | ||||
|         Example of the use of zlib | ||||
|  | ||||
| untgz/      by "Pedro A. Aranda Guti\irrez" <paag@tid.es> | ||||
| untgz/      by Pedro A. Aranda Gutierrez <paag@tid.es> | ||||
|         A very simple tar.gz file extractor using zlib | ||||
|  | ||||
| visual-basic.txt by Carlos Rios <c_rios@sonda.cl> | ||||
|         How to use compress(), uncompress() and the gz* functions from VB | ||||
|  | ||||
| vstudio/    by Gilles Vollant <info@winimage.com> | ||||
|         Building a minizip-enhanced zlib with Visual Studio .NET | ||||
|         Building a minizip-enhanced zlib with Microsoft Visual Studio | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| 			ZLib for Ada thick binding (ZLib.Ada) | ||||
| 			Release 1.3 | ||||
|                         ZLib for Ada thick binding (ZLib.Ada) | ||||
|                         Release 1.3 | ||||
|  | ||||
| ZLib.Ada is a thick binding interface to the popular ZLib data | ||||
| compression library, available at http://www.gzip.org/zlib/. | ||||
| It provides Ada-style access to the ZLib C library. | ||||
|  | ||||
|  | ||||
| 	Here are the main changes since ZLib.Ada 1.2: | ||||
|         Here are the main changes since ZLib.Ada 1.2: | ||||
|  | ||||
| - Attension: ZLib.Read generic routine have a initialization requirement | ||||
|   for Read_Last parameter now. It is a bit incompartible with previous version, | ||||
| @@ -28,7 +28,7 @@ It provides Ada-style access to the ZLib C library. | ||||
| - Add pragma Assertion that Ada.Streams.Stream_Element size is 8 bit. | ||||
|  | ||||
|  | ||||
| 	How to build ZLib.Ada under GNAT | ||||
|         How to build ZLib.Ada under GNAT | ||||
|  | ||||
| You should have the ZLib library already build on your computer, before | ||||
| building ZLib.Ada. Make the directory of ZLib.Ada sources current and | ||||
| @@ -41,7 +41,7 @@ Or use the GNAT project file build for GNAT 3.15 or later: | ||||
|   gnatmake -Pzlib.gpr -L<directory where libz.a is> | ||||
|  | ||||
|  | ||||
| 	How to build ZLib.Ada under Aonix ObjectAda for Win32 7.2.2 | ||||
|         How to build ZLib.Ada under Aonix ObjectAda for Win32 7.2.2 | ||||
|  | ||||
| 1. Make a project with all *.ads and *.adb files from the distribution. | ||||
| 2. Build the libz.a library from the ZLib C sources. | ||||
| @@ -51,7 +51,7 @@ Or use the GNAT project file build for GNAT 3.15 or later: | ||||
| 6. Build the executable using test.adb as a main procedure. | ||||
|  | ||||
|  | ||||
| 	How to use ZLib.Ada | ||||
|         How to use ZLib.Ada | ||||
|  | ||||
| The source files test.adb and read.adb are small demo programs that show | ||||
| the main functionality of ZLib.Ada. | ||||
|   | ||||
| @@ -222,4 +222,4 @@ package body ZLib.Streams is | ||||
|       return Total_Out (Stream.Writer); | ||||
|    end Write_Total_Out; | ||||
|  | ||||
| end ZLib.Streams; | ||||
| end ZLib.Streams; | ||||
|   | ||||
| @@ -111,4 +111,4 @@ private | ||||
|       Writer     : Filter_Type; | ||||
|    end record; | ||||
|  | ||||
| end ZLib.Streams; | ||||
| end ZLib.Streams; | ||||
|   | ||||
| @@ -1,21 +1,20 @@ | ||||
| project Zlib is | ||||
|  | ||||
|    for Languages use ("Ada"); | ||||
|    for Source_Dirs use ("."); | ||||
|    for Object_Dir use "."; | ||||
|    for Main use ("test.adb", "mtest.adb", "read.adb", "buffer_demo"); | ||||
|  | ||||
|    package Compiler is | ||||
|       for Default_Switches ("ada") use ("-gnatwcfilopru", "-gnatVcdfimorst", "-gnatyabcefhiklmnoprst"); | ||||
|    end Compiler; | ||||
|  | ||||
|    package Linker is | ||||
|       for Default_Switches ("ada") use ("-lz"); | ||||
|    end Linker; | ||||
|  | ||||
|    package Builder is | ||||
|       for Default_Switches ("ada") use ("-s", "-gnatQ"); | ||||
|    end Builder; | ||||
|  | ||||
| end Zlib; | ||||
|  | ||||
| project Zlib is | ||||
|  | ||||
|    for Languages use ("Ada"); | ||||
|    for Source_Dirs use ("."); | ||||
|    for Object_Dir use "."; | ||||
|    for Main use ("test.adb", "mtest.adb", "read.adb", "buffer_demo"); | ||||
|  | ||||
|    package Compiler is | ||||
|       for Default_Switches ("ada") use ("-gnatwcfilopru", "-gnatVcdfimorst", "-gnatyabcefhiklmnoprst"); | ||||
|    end Compiler; | ||||
|  | ||||
|    package Linker is | ||||
|       for Default_Switches ("ada") use ("-lz"); | ||||
|    end Linker; | ||||
|  | ||||
|    package Builder is | ||||
|       for Default_Switches ("ada") use ("-s", "-gnatQ"); | ||||
|    end Builder; | ||||
|  | ||||
| end Zlib; | ||||
|   | ||||
							
								
								
									
										33
									
								
								contrib/dotzlib/DotZLib.build
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								contrib/dotzlib/DotZLib.build
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| <?xml version="1.0" encoding="utf-8" ?> | ||||
| <project name="DotZLib" default="build" basedir="./DotZLib"> | ||||
| 	<description>A .Net wrapper library around ZLib1.dll</description> | ||||
|  | ||||
| 	<property name="nunit.location" value="c:/program files/NUnit V2.1/bin" /> | ||||
| 	<property name="build.root" value="bin" /> | ||||
| 	 | ||||
| 	<property name="debug" value="true" /> | ||||
| 	<property name="nunit" value="true" /> | ||||
|  | ||||
| 	<property name="build.folder" value="${build.root}/debug/" if="${debug}" /> | ||||
| 	<property name="build.folder" value="${build.root}/release/" unless="${debug}" /> | ||||
|  | ||||
| 	<target name="clean" description="Remove all generated files"> | ||||
| 		<delete dir="${build.root}" failonerror="false" /> | ||||
| 	</target> | ||||
|  | ||||
| 	<target name="build" description="compiles the source code"> | ||||
| 		 | ||||
| 		<mkdir dir="${build.folder}" /> | ||||
| 		<csc target="library" output="${build.folder}DotZLib.dll" debug="${debug}"> | ||||
| 			<references basedir="${nunit.location}"> | ||||
| 				<includes if="${nunit}" name="nunit.framework.dll" /> | ||||
| 			</references> | ||||
| 			<sources> | ||||
| 				<includes name="*.cs" /> | ||||
| 				<excludes name="UnitTests.cs" unless="${nunit}" /> | ||||
| 			</sources> | ||||
| 			<arg value="/d:nunit" if="${nunit}" /> | ||||
| 		</csc> | ||||
| 	</target> | ||||
|  | ||||
| </project> | ||||
							
								
								
									
										
											BIN
										
									
								
								contrib/dotzlib/DotZLib.chm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								contrib/dotzlib/DotZLib.chm
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										21
									
								
								contrib/dotzlib/DotZLib.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								contrib/dotzlib/DotZLib.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| Microsoft Visual Studio Solution File, Format Version 8.00 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotZLib", "DotZLib\DotZLib.csproj", "{BB1EE0B1-1808-46CB-B786-949D91117FC5}" | ||||
| 	ProjectSection(ProjectDependencies) = postProject | ||||
| 	EndProjectSection | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfiguration) = preSolution | ||||
| 		Debug = Debug | ||||
| 		Release = Release | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfiguration) = postSolution | ||||
| 		{BB1EE0B1-1808-46CB-B786-949D91117FC5}.Debug.ActiveCfg = Debug|.NET | ||||
| 		{BB1EE0B1-1808-46CB-B786-949D91117FC5}.Debug.Build.0 = Debug|.NET | ||||
| 		{BB1EE0B1-1808-46CB-B786-949D91117FC5}.Release.ActiveCfg = Release|.NET | ||||
| 		{BB1EE0B1-1808-46CB-B786-949D91117FC5}.Release.Build.0 = Release|.NET | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ExtensibilityAddIns) = postSolution | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
							
								
								
									
										58
									
								
								contrib/dotzlib/DotZLib/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								contrib/dotzlib/DotZLib/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| using System.Reflection; | ||||
| using System.Runtime.CompilerServices; | ||||
|  | ||||
| // | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| // | ||||
| [assembly: AssemblyTitle("DotZLib")] | ||||
| [assembly: AssemblyDescription(".Net bindings for ZLib compression dll 1.2.x")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("Henrik Ravn")] | ||||
| [assembly: AssemblyProduct("")] | ||||
| [assembly: AssemblyCopyright("(c) 2004 by Henrik Ravn")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")]		 | ||||
|  | ||||
| // | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
|  | ||||
| [assembly: AssemblyVersion("1.0.*")] | ||||
|  | ||||
| // | ||||
| // In order to sign your assembly you must specify a key to use. Refer to the  | ||||
| // Microsoft .NET Framework documentation for more information on assembly signing. | ||||
| // | ||||
| // Use the attributes below to control which key is used for signing.  | ||||
| // | ||||
| // Notes:  | ||||
| //   (*) If no key is specified, the assembly is not signed. | ||||
| //   (*) KeyName refers to a key that has been installed in the Crypto Service | ||||
| //       Provider (CSP) on your machine. KeyFile refers to a file which contains | ||||
| //       a key. | ||||
| //   (*) If the KeyFile and the KeyName values are both specified, the  | ||||
| //       following processing occurs: | ||||
| //       (1) If the KeyName can be found in the CSP, that key is used. | ||||
| //       (2) If the KeyName does not exist and the KeyFile does exist, the key  | ||||
| //           in the KeyFile is installed into the CSP and used. | ||||
| //   (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. | ||||
| //       When specifying the KeyFile, the location of the KeyFile should be | ||||
| //       relative to the project output directory which is | ||||
| //       %Project Directory%\obj\<configuration>. For example, if your KeyFile is | ||||
| //       located in the project directory, you would specify the AssemblyKeyFile  | ||||
| //       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] | ||||
| //   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework | ||||
| //       documentation for more information on this. | ||||
| // | ||||
| [assembly: AssemblyDelaySign(false)] | ||||
| [assembly: AssemblyKeyFile("")] | ||||
| [assembly: AssemblyKeyName("")] | ||||
							
								
								
									
										202
									
								
								contrib/dotzlib/DotZLib/ChecksumImpl.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								contrib/dotzlib/DotZLib/ChecksumImpl.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,202 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.Runtime.InteropServices; | ||||
| using System.Text; | ||||
|  | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
|     #region ChecksumGeneratorBase | ||||
|     /// <summary> | ||||
|     /// Implements the common functionality needed for all <see cref="ChecksumGenerator"/>s | ||||
|     /// </summary> | ||||
|     /// <example></example> | ||||
|     public abstract class ChecksumGeneratorBase : ChecksumGenerator | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The value of the current checksum | ||||
|         /// </summary> | ||||
|         protected uint _current; | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the checksum generator base - the current checksum is  | ||||
|         /// set to zero | ||||
|         /// </summary> | ||||
|         public ChecksumGeneratorBase() | ||||
|         { | ||||
|             _current = 0; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the checksum generator basewith a specified value | ||||
|         /// </summary> | ||||
|         /// <param name="initialValue">The value to set the current checksum to</param> | ||||
|         public ChecksumGeneratorBase(uint initialValue) | ||||
|         { | ||||
|             _current = initialValue; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Resets the current checksum to zero | ||||
|         /// </summary> | ||||
|         public void Reset() { _current = 0; } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the current checksum value | ||||
|         /// </summary> | ||||
|         public uint Value { get { return _current; } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with part of an array of bytes | ||||
|         /// </summary> | ||||
|         /// <param name="data">The data to update the checksum with</param> | ||||
|         /// <param name="offset">Where in <c>data</c> to start updating</param> | ||||
|         /// <param name="count">The number of bytes from <c>data</c> to use</param> | ||||
|         /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> | ||||
|         /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception> | ||||
|         /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> | ||||
|         /// <remarks>All the other <c>Update</c> methods are implmeneted in terms of this one.  | ||||
|         /// This is therefore the only method a derived class has to implement</remarks> | ||||
|         public abstract void Update(byte[] data, int offset, int count); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with an array of bytes. | ||||
|         /// </summary> | ||||
|         /// <param name="data">The data to update the checksum with</param> | ||||
|         public void Update(byte[] data) | ||||
|         { | ||||
|             Update(data, 0, data.Length); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with the data from a string | ||||
|         /// </summary> | ||||
|         /// <param name="data">The string to update the checksum with</param> | ||||
|         /// <remarks>The characters in the string are converted by the UTF-8 encoding</remarks> | ||||
|         public void Update(string data) | ||||
|         { | ||||
| 			Update(Encoding.UTF8.GetBytes(data)); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with the data from a string, using a specific encoding | ||||
|         /// </summary> | ||||
|         /// <param name="data">The string to update the checksum with</param> | ||||
|         /// <param name="encoding">The encoding to use</param> | ||||
|         public void Update(string data, Encoding encoding) | ||||
|         { | ||||
|             Update(encoding.GetBytes(data)); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|     #endregion | ||||
|  | ||||
|     #region CRC32 | ||||
|     /// <summary> | ||||
|     /// Implements a CRC32 checksum generator | ||||
|     /// </summary> | ||||
|     public sealed class CRC32Checksum : ChecksumGeneratorBase     | ||||
|     { | ||||
|         #region DLL imports | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern uint crc32(uint crc, int data, uint length); | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the CRC32 checksum generator | ||||
|         /// </summary> | ||||
|         public CRC32Checksum() : base() {} | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the CRC32 checksum generator with a specified value | ||||
|         /// </summary> | ||||
|         /// <param name="initialValue">The value to set the current checksum to</param> | ||||
|         public CRC32Checksum(uint initialValue) : base(initialValue) {} | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with part of an array of bytes | ||||
|         /// </summary> | ||||
|         /// <param name="data">The data to update the checksum with</param> | ||||
|         /// <param name="offset">Where in <c>data</c> to start updating</param> | ||||
|         /// <param name="count">The number of bytes from <c>data</c> to use</param> | ||||
|         /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> | ||||
|         /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception> | ||||
|         /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> | ||||
|         public override void Update(byte[] data, int offset, int count) | ||||
|         { | ||||
|             if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); | ||||
|             if ((offset+count) > data.Length) throw new ArgumentException(); | ||||
|             GCHandle hData = GCHandle.Alloc(data, GCHandleType.Pinned); | ||||
|             try | ||||
|             { | ||||
|                 _current = crc32(_current, hData.AddrOfPinnedObject().ToInt32()+offset, (uint)count); | ||||
|             } | ||||
|             finally | ||||
|             { | ||||
|                 hData.Free(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } | ||||
|     #endregion | ||||
|  | ||||
|     #region Adler | ||||
|     /// <summary> | ||||
|     /// Implements a checksum generator that computes the Adler checksum on data | ||||
|     /// </summary> | ||||
|     public sealed class AdlerChecksum : ChecksumGeneratorBase     | ||||
|     { | ||||
|         #region DLL imports | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern uint adler32(uint adler, int data, uint length); | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the Adler checksum generator | ||||
|         /// </summary> | ||||
|         public AdlerChecksum() : base() {} | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the Adler checksum generator with a specified value | ||||
|         /// </summary> | ||||
|         /// <param name="initialValue">The value to set the current checksum to</param> | ||||
|         public AdlerChecksum(uint initialValue) : base(initialValue) {} | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with part of an array of bytes | ||||
|         /// </summary> | ||||
|         /// <param name="data">The data to update the checksum with</param> | ||||
|         /// <param name="offset">Where in <c>data</c> to start updating</param> | ||||
|         /// <param name="count">The number of bytes from <c>data</c> to use</param> | ||||
|         /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> | ||||
|         /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception> | ||||
|         /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> | ||||
|         public override void Update(byte[] data, int offset, int count) | ||||
|         { | ||||
|             if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); | ||||
|             if ((offset+count) > data.Length) throw new ArgumentException(); | ||||
|             GCHandle hData = GCHandle.Alloc(data, GCHandleType.Pinned); | ||||
|             try | ||||
|             { | ||||
|                 _current = adler32(_current, hData.AddrOfPinnedObject().ToInt32()+offset, (uint)count); | ||||
|             } | ||||
|             finally | ||||
|             { | ||||
|                 hData.Free(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } | ||||
|     #endregion | ||||
|  | ||||
| } | ||||
							
								
								
									
										83
									
								
								contrib/dotzlib/DotZLib/CircularBuffer.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								contrib/dotzlib/DotZLib/CircularBuffer.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.Diagnostics; | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
|  | ||||
| 	/// <summary> | ||||
| 	/// This class implements a circular buffer | ||||
| 	/// </summary> | ||||
| 	internal class CircularBuffer | ||||
| 	{ | ||||
|         #region Private data | ||||
|         private int _capacity; | ||||
|         private int _head; | ||||
|         private int _tail; | ||||
|         private int _size; | ||||
|         private byte[] _buffer; | ||||
|         #endregion | ||||
|  | ||||
|         public CircularBuffer(int capacity) | ||||
|         {     | ||||
|             Debug.Assert( capacity > 0 ); | ||||
|             _buffer = new byte[capacity]; | ||||
|             _capacity = capacity; | ||||
|             _head = 0; | ||||
|             _tail = 0; | ||||
|             _size = 0; | ||||
|         } | ||||
|  | ||||
|         public int Size { get { return _size; } } | ||||
|  | ||||
|         public int Put(byte[] source, int offset, int count) | ||||
|         { | ||||
|             Debug.Assert( count > 0 ); | ||||
|             int trueCount = Math.Min(count, _capacity - Size); | ||||
|             for (int i = 0; i < trueCount; ++i) | ||||
|                 _buffer[(_tail+i) % _capacity] = source[offset+i]; | ||||
|             _tail += trueCount; | ||||
|             _tail %= _capacity; | ||||
|             _size += trueCount; | ||||
|             return trueCount; | ||||
|         } | ||||
|  | ||||
|         public bool Put(byte b) | ||||
|         { | ||||
|             if (Size == _capacity) // no room | ||||
|                 return false; | ||||
|             _buffer[_tail++] = b; | ||||
|             _tail %= _capacity; | ||||
|             ++_size; | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         public int Get(byte[] destination, int offset, int count) | ||||
|         { | ||||
|             int trueCount = Math.Min(count,Size); | ||||
|             for (int i = 0; i < trueCount; ++i) | ||||
|                 destination[offset + i] = _buffer[(_head+i) % _capacity]; | ||||
|             _head += trueCount; | ||||
|             _head %= _capacity; | ||||
|             _size -= trueCount; | ||||
|             return trueCount; | ||||
|         } | ||||
|  | ||||
|         public int Get() | ||||
|         { | ||||
|             if (Size == 0) | ||||
|                 return -1; | ||||
|  | ||||
|             int result = (int)_buffer[_head++ % _capacity]; | ||||
|             --_size; | ||||
|             return result; | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
							
								
								
									
										198
									
								
								contrib/dotzlib/DotZLib/CodecBase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										198
									
								
								contrib/dotzlib/DotZLib/CodecBase.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,198 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.Runtime.InteropServices; | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// Implements the common functionality needed for all <see cref="Codec"/>s | ||||
| 	/// </summary> | ||||
| 	public abstract class CodecBase : Codec, IDisposable | ||||
| 	{ | ||||
|  | ||||
|         #region Data members | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Instance of the internal zlib buffer structure that is  | ||||
|         /// passed to all functions in the zlib dll | ||||
|         /// </summary> | ||||
|         internal ZStream _ztream = new ZStream(); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// True if the object instance has been disposed, false otherwise | ||||
|         /// </summary> | ||||
|         protected bool _isDisposed = false; | ||||
|  | ||||
|         /// <summary> | ||||
|         /// The size of the internal buffers | ||||
|         /// </summary> | ||||
|         protected const int kBufferSize = 16384; | ||||
|  | ||||
|         private byte[] _outBuffer = new byte[kBufferSize]; | ||||
|         private byte[] _inBuffer = new byte[kBufferSize]; | ||||
|  | ||||
|         private GCHandle _hInput; | ||||
|         private GCHandle _hOutput; | ||||
|  | ||||
|         private uint _checksum = 0; | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the <c>CodeBase</c> class.  | ||||
|         /// </summary> | ||||
| 		public CodecBase() | ||||
| 		{ | ||||
|             try | ||||
|             { | ||||
|                 _hInput = GCHandle.Alloc(_inBuffer, GCHandleType.Pinned); | ||||
|                 _hOutput = GCHandle.Alloc(_outBuffer, GCHandleType.Pinned); | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 CleanUp(false); | ||||
|                 throw; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         #region Codec Members | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Occurs when more processed data are available. | ||||
|         /// </summary> | ||||
|         public event DataAvailableHandler DataAvailable; | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Fires the <see cref="DataAvailable"/> event | ||||
|         /// </summary> | ||||
|         protected void OnDataAvailable() | ||||
|         { | ||||
|             if (_ztream.total_out > 0) | ||||
|             { | ||||
|                 if (DataAvailable != null) | ||||
|                     DataAvailable( _outBuffer, 0, (int)_ztream.total_out);  | ||||
|                 resetOutput(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Adds more data to the codec to be processed. | ||||
|         /// </summary> | ||||
|         /// <param name="data">Byte array containing the data to be added to the codec</param> | ||||
|         /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> | ||||
|         public void Add(byte[] data) | ||||
|         { | ||||
|             Add(data,0,data.Length); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Adds more data to the codec to be processed. | ||||
|         /// </summary> | ||||
|         /// <param name="data">Byte array containing the data to be added to the codec</param> | ||||
|         /// <param name="offset">The index of the first byte to add from <c>data</c></param> | ||||
|         /// <param name="count">The number of bytes to add</param> | ||||
|         /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> | ||||
|         /// <remarks>This must be implemented by a derived class</remarks> | ||||
|         public abstract void Add(byte[] data, int offset, int count); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Finishes up any pending data that needs to be processed and handled. | ||||
|         /// </summary> | ||||
|         /// <remarks>This must be implemented by a derived class</remarks> | ||||
|         public abstract void Finish(); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the checksum of the data that has been added so far | ||||
|         /// </summary> | ||||
|         public uint Checksum { get { return _checksum; } } | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         #region Destructor & IDisposable stuff | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Destroys this instance | ||||
|         /// </summary> | ||||
|         ~CodecBase() | ||||
|         { | ||||
|             CleanUp(false); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Releases any unmanaged resources and calls the <see cref="CleanUp()"/> method of the derived class | ||||
|         /// </summary> | ||||
|         public void Dispose() | ||||
|         { | ||||
|             CleanUp(true); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Performs any codec specific cleanup | ||||
|         /// </summary> | ||||
|         /// <remarks>This must be implemented by a derived class</remarks> | ||||
|         protected abstract void CleanUp(); | ||||
|  | ||||
|         // performs the release of the handles and calls the dereived CleanUp() | ||||
|         private void CleanUp(bool isDisposing) | ||||
|         { | ||||
|             if (!_isDisposed) | ||||
|             { | ||||
|                 CleanUp(); | ||||
|                 if (_hInput.IsAllocated) | ||||
|                     _hInput.Free(); | ||||
|                 if (_hOutput.IsAllocated) | ||||
|                     _hOutput.Free(); | ||||
|  | ||||
|                 _isDisposed = true; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         #region Helper methods | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Copies a number of bytes to the internal codec buffer - ready for proccesing | ||||
|         /// </summary> | ||||
|         /// <param name="data">The byte array that contains the data to copy</param> | ||||
|         /// <param name="startIndex">The index of the first byte to copy</param> | ||||
|         /// <param name="count">The number of bytes to copy from <c>data</c></param> | ||||
|         protected void copyInput(byte[] data, int startIndex, int count) | ||||
|         { | ||||
|             Array.Copy(data, startIndex, _inBuffer,0, count); | ||||
|             _ztream.next_in = _hInput.AddrOfPinnedObject(); | ||||
|             _ztream.total_in = 0; | ||||
|             _ztream.avail_in = (uint)count; | ||||
|  | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Resets the internal output buffers to a known state - ready for processing | ||||
|         /// </summary> | ||||
|         protected void resetOutput() | ||||
|         { | ||||
|             _ztream.total_out = 0; | ||||
|             _ztream.avail_out = kBufferSize; | ||||
|             _ztream.next_out = _hOutput.AddrOfPinnedObject(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the running checksum property | ||||
|         /// </summary> | ||||
|         /// <param name="newSum">The new checksum value</param> | ||||
|         protected void setChecksum(uint newSum) | ||||
|         { | ||||
|             _checksum = newSum; | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|     } | ||||
| } | ||||
							
								
								
									
										106
									
								
								contrib/dotzlib/DotZLib/Deflater.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								contrib/dotzlib/DotZLib/Deflater.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.Diagnostics; | ||||
| using System.Runtime.InteropServices; | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
|  | ||||
|     /// <summary> | ||||
|     /// Implements a data compressor, using the deflate algorithm in the ZLib dll | ||||
|     /// </summary> | ||||
| 	public sealed class Deflater : CodecBase | ||||
| 	{ | ||||
|         #region Dll imports | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] | ||||
|         private static extern int deflateInit_(ref ZStream sz, int level, string vs, int size); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int deflate(ref ZStream sz, int flush); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int deflateReset(ref ZStream sz); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int deflateEnd(ref ZStream sz); | ||||
|         #endregion | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Constructs an new instance of the <c>Deflater</c> | ||||
|         /// </summary> | ||||
|         /// <param name="level">The compression level to use for this <c>Deflater</c></param> | ||||
| 		public Deflater(CompressLevel level) : base() | ||||
| 		{ | ||||
|             int retval = deflateInit_(ref _ztream, (int)level, Info.Version, Marshal.SizeOf(_ztream)); | ||||
|             if (retval != 0) | ||||
|                 throw new ZLibException(retval, "Could not initialize deflater"); | ||||
|  | ||||
|             resetOutput(); | ||||
| 		} | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Adds more data to the codec to be processed. | ||||
|         /// </summary> | ||||
|         /// <param name="data">Byte array containing the data to be added to the codec</param> | ||||
|         /// <param name="offset">The index of the first byte to add from <c>data</c></param> | ||||
|         /// <param name="count">The number of bytes to add</param> | ||||
|         /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> | ||||
|         public override void Add(byte[] data, int offset, int count) | ||||
|         { | ||||
|             if (data == null) throw new ArgumentNullException(); | ||||
|             if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); | ||||
|             if ((offset+count) > data.Length) throw new ArgumentException(); | ||||
|              | ||||
|             int total = count; | ||||
|             int inputIndex = offset; | ||||
|             int err = 0; | ||||
|  | ||||
|             while (err >= 0 && inputIndex < total) | ||||
|             { | ||||
|                 copyInput(data, inputIndex, Math.Min(total - inputIndex, kBufferSize)); | ||||
|                 while (err >= 0 && _ztream.avail_in > 0) | ||||
|                 { | ||||
|                     err = deflate(ref _ztream, (int)FlushTypes.None); | ||||
|                     if (err == 0) | ||||
|                         while (_ztream.avail_out == 0) | ||||
|                         { | ||||
|                             OnDataAvailable(); | ||||
|                             err = deflate(ref _ztream, (int)FlushTypes.None); | ||||
|                         } | ||||
|                     inputIndex += (int)_ztream.total_in; | ||||
|                 } | ||||
|             } | ||||
|             setChecksum( _ztream.adler ); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Finishes up any pending data that needs to be processed and handled. | ||||
|         /// </summary> | ||||
|         public override void Finish() | ||||
|         { | ||||
|             int err; | ||||
|             do  | ||||
|             { | ||||
|                 err = deflate(ref _ztream, (int)FlushTypes.Finish); | ||||
|                 OnDataAvailable(); | ||||
|             } | ||||
|             while (err == 0); | ||||
|             setChecksum( _ztream.adler ); | ||||
|             deflateReset(ref _ztream); | ||||
|             resetOutput(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Closes the internal zlib deflate stream | ||||
|         /// </summary> | ||||
|         protected override void CleanUp() { deflateEnd(ref _ztream); } | ||||
|  | ||||
|     } | ||||
| } | ||||
							
								
								
									
										288
									
								
								contrib/dotzlib/DotZLib/DotZLib.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										288
									
								
								contrib/dotzlib/DotZLib/DotZLib.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,288 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.IO; | ||||
| using System.Runtime.InteropServices; | ||||
| using System.Text; | ||||
|  | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
|  | ||||
|     #region Internal types | ||||
|  | ||||
|     /// <summary> | ||||
|     /// Defines constants for the various flush types used with zlib | ||||
|     /// </summary> | ||||
|     internal enum FlushTypes  | ||||
|     { | ||||
|         None,  Partial,  Sync,  Full,  Finish,  Block | ||||
|     } | ||||
|  | ||||
|     #region ZStream structure | ||||
|     // internal mapping of the zlib zstream structure for marshalling | ||||
|     [StructLayoutAttribute(LayoutKind.Sequential, Pack=4, Size=0, CharSet=CharSet.Ansi)] | ||||
|     internal struct ZStream | ||||
|     { | ||||
|         public IntPtr next_in; | ||||
|         public uint avail_in; | ||||
|         public uint total_in; | ||||
|  | ||||
|         public IntPtr next_out; | ||||
|         public uint avail_out; | ||||
|         public uint total_out; | ||||
|  | ||||
|         [MarshalAs(UnmanagedType.LPStr)] | ||||
|         string msg;  | ||||
|         uint state; | ||||
|  | ||||
|         uint zalloc; | ||||
|         uint zfree; | ||||
|         uint opaque; | ||||
|  | ||||
|         int data_type; | ||||
|         public uint adler; | ||||
|         uint reserved; | ||||
|     } | ||||
|  | ||||
|     #endregion | ||||
|      | ||||
|     #endregion | ||||
|  | ||||
|     #region Public enums | ||||
|     /// <summary> | ||||
|     /// Defines constants for the available compression levels in zlib | ||||
|     /// </summary> | ||||
|     public enum CompressLevel : int | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The default compression level with a reasonable compromise between compression and speed | ||||
|         /// </summary> | ||||
|         Default = -1,    | ||||
|         /// <summary> | ||||
|         /// No compression at all. The data are passed straight through. | ||||
|         /// </summary> | ||||
|         None = 0, | ||||
|         /// <summary> | ||||
|         /// The maximum compression rate available. | ||||
|         /// </summary> | ||||
|         Best = 9,    | ||||
|         /// <summary> | ||||
|         /// The fastest available compression level. | ||||
|         /// </summary> | ||||
|         Fastest = 1 | ||||
|     } | ||||
|     #endregion | ||||
|  | ||||
|     #region Exception classes | ||||
|     /// <summary> | ||||
|     /// The exception that is thrown when an error occurs on the zlib dll | ||||
|     /// </summary> | ||||
|     public class ZLibException : ApplicationException | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the <see cref="ZLibException"/> class with a specified  | ||||
|         /// error message and error code | ||||
|         /// </summary> | ||||
|         /// <param name="errorCode">The zlib error code that caused the exception</param> | ||||
|         /// <param name="msg">A message that (hopefully) describes the error</param> | ||||
|         public ZLibException(int errorCode, string msg) : base(String.Format("ZLib error {0} {1}", errorCode, msg)) | ||||
|         { | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the <see cref="ZLibException"/> class with a specified  | ||||
|         /// error code | ||||
|         /// </summary> | ||||
|         /// <param name="errorCode">The zlib error code that caused the exception</param> | ||||
|         public ZLibException(int errorCode) : base(String.Format("ZLib error {0}", errorCode)) | ||||
|         { | ||||
|         } | ||||
|     } | ||||
|     #endregion | ||||
|  | ||||
|     #region Interfaces | ||||
|  | ||||
|     /// <summary> | ||||
|     /// Declares methods and properties that enables a running checksum to be calculated  | ||||
|     /// </summary> | ||||
|     public interface ChecksumGenerator | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Gets the current value of the checksum | ||||
|         /// </summary> | ||||
|         uint Value { get; } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Clears the current checksum to 0 | ||||
|         /// </summary> | ||||
|         void Reset(); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with an array of bytes | ||||
|         /// </summary> | ||||
|         /// <param name="data">The data to update the checksum with</param> | ||||
|         void Update(byte[] data); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with part of an array of bytes | ||||
|         /// </summary> | ||||
|         /// <param name="data">The data to update the checksum with</param> | ||||
|         /// <param name="offset">Where in <c>data</c> to start updating</param> | ||||
|         /// <param name="count">The number of bytes from <c>data</c> to use</param> | ||||
|         /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> | ||||
|         /// <exception cref="ArgumentNullException"><c>data</c> is a null reference</exception> | ||||
|         /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> | ||||
|         void Update(byte[] data, int offset, int count); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with the data from a string | ||||
|         /// </summary> | ||||
|         /// <param name="data">The string to update the checksum with</param> | ||||
|         /// <remarks>The characters in the string are converted by the UTF-8 encoding</remarks> | ||||
|         void Update(string data); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates the current checksum with the data from a string, using a specific encoding | ||||
|         /// </summary> | ||||
|         /// <param name="data">The string to update the checksum with</param> | ||||
|         /// <param name="encoding">The encoding to use</param> | ||||
|         void Update(string data, Encoding encoding); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// Represents the method that will be called from a codec when new data | ||||
|     /// are available. | ||||
|     /// </summary> | ||||
|     /// <paramref name="data">The byte array containing the processed data</paramref> | ||||
|     /// <paramref name="startIndex">The index of the first processed byte in <c>data</c></paramref> | ||||
|     /// <paramref name="count">The number of processed bytes available</paramref> | ||||
|     /// <remarks>On return from this method, the data may be overwritten, so grab it while you can.  | ||||
|     /// You cannot assume that startIndex will be zero. | ||||
|     /// </remarks> | ||||
|     public delegate void DataAvailableHandler(byte[] data, int startIndex, int count); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// Declares methods and events for implementing compressors/decompressors | ||||
|     /// </summary> | ||||
|     public interface Codec | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Occurs when more processed data are available. | ||||
|         /// </summary> | ||||
|         event DataAvailableHandler DataAvailable; | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Adds more data to the codec to be processed. | ||||
|         /// </summary> | ||||
|         /// <param name="data">Byte array containing the data to be added to the codec</param> | ||||
|         /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> | ||||
|         void Add(byte[] data); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Adds more data to the codec to be processed. | ||||
|         /// </summary> | ||||
|         /// <param name="data">Byte array containing the data to be added to the codec</param> | ||||
|         /// <param name="offset">The index of the first byte to add from <c>data</c></param> | ||||
|         /// <param name="count">The number of bytes to add</param> | ||||
|         /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> | ||||
|         void Add(byte[] data, int offset, int count); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Finishes up any pending data that needs to be processed and handled. | ||||
|         /// </summary> | ||||
|         void Finish(); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the checksum of the data that has been added so far | ||||
|         /// </summary> | ||||
|         uint Checksum { get; } | ||||
|  | ||||
|  | ||||
|     } | ||||
|  | ||||
|     #endregion | ||||
|  | ||||
|     #region Classes | ||||
|     /// <summary> | ||||
|     /// Encapsulates general information about the ZLib library | ||||
|     /// </summary> | ||||
|     public class Info | ||||
|     { | ||||
|         #region DLL imports | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern uint zlibCompileFlags(); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern string zlibVersion(); | ||||
|         #endregion | ||||
|  | ||||
|         #region Private stuff | ||||
|         private uint _flags; | ||||
|  | ||||
|         // helper function that unpacks a bitsize mask | ||||
|         private static int bitSize(uint bits) | ||||
|         { | ||||
|             switch (bits) | ||||
|             { | ||||
|                 case 0: return 16; | ||||
|                 case 1: return 32; | ||||
|                 case 2: return 64; | ||||
|             } | ||||
|             return -1; | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Constructs an instance of the <c>Info</c> class. | ||||
|         /// </summary> | ||||
|         public Info() | ||||
|         { | ||||
|             _flags = zlibCompileFlags(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// True if the library is compiled with debug info | ||||
|         /// </summary> | ||||
|         public bool HasDebugInfo { get { return 0 != (_flags & 0x100); } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// True if the library is compiled with assembly optimizations | ||||
|         /// </summary> | ||||
|         public bool UsesAssemblyCode { get { return 0 != (_flags & 0x200); } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the size of the unsigned int that was compiled into Zlib | ||||
|         /// </summary> | ||||
|         public int SizeOfUInt { get { return bitSize(_flags & 3); } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the size of the unsigned long that was compiled into Zlib | ||||
|         /// </summary> | ||||
|         public int SizeOfULong { get { return bitSize((_flags >> 2) & 3); } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the size of the pointers that were compiled into Zlib | ||||
|         /// </summary> | ||||
|         public int SizeOfPointer { get { return bitSize((_flags >> 4) & 3); } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the size of the z_off_t type that was compiled into Zlib | ||||
|         /// </summary> | ||||
|         public int SizeOfOffset { get { return bitSize((_flags >> 6) & 3); } } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the version of ZLib as a string, e.g. "1.2.1" | ||||
|         /// </summary> | ||||
|         public static string Version { get { return zlibVersion(); } } | ||||
|     } | ||||
|  | ||||
|     #endregion | ||||
|  | ||||
| } | ||||
							
								
								
									
										141
									
								
								contrib/dotzlib/DotZLib/DotZLib.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								contrib/dotzlib/DotZLib/DotZLib.csproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | ||||
| <VisualStudioProject> | ||||
|     <CSHARP | ||||
|         ProjectType = "Local" | ||||
|         ProductVersion = "7.10.3077" | ||||
|         SchemaVersion = "2.0" | ||||
|         ProjectGuid = "{BB1EE0B1-1808-46CB-B786-949D91117FC5}" | ||||
|     > | ||||
|         <Build> | ||||
|             <Settings | ||||
|                 ApplicationIcon = "" | ||||
|                 AssemblyKeyContainerName = "" | ||||
|                 AssemblyName = "DotZLib" | ||||
|                 AssemblyOriginatorKeyFile = "" | ||||
|                 DefaultClientScript = "JScript" | ||||
|                 DefaultHTMLPageLayout = "Grid" | ||||
|                 DefaultTargetSchema = "IE50" | ||||
|                 DelaySign = "false" | ||||
|                 OutputType = "Library" | ||||
|                 PreBuildEvent = "" | ||||
|                 PostBuildEvent = "" | ||||
|                 RootNamespace = "DotZLib" | ||||
|                 RunPostBuildEvent = "OnBuildSuccess" | ||||
|                 StartupObject = "" | ||||
|             > | ||||
|                 <Config | ||||
|                     Name = "Debug" | ||||
|                     AllowUnsafeBlocks = "false" | ||||
|                     BaseAddress = "285212672" | ||||
|                     CheckForOverflowUnderflow = "false" | ||||
|                     ConfigurationOverrideFile = "" | ||||
|                     DefineConstants = "DEBUG;TRACE" | ||||
|                     DocumentationFile = "docs\DotZLib.xml" | ||||
|                     DebugSymbols = "true" | ||||
|                     FileAlignment = "4096" | ||||
|                     IncrementalBuild = "false" | ||||
|                     NoStdLib = "false" | ||||
|                     NoWarn = "1591" | ||||
|                     Optimize = "false" | ||||
|                     OutputPath = "bin\Debug\" | ||||
|                     RegisterForComInterop = "false" | ||||
|                     RemoveIntegerChecks = "false" | ||||
|                     TreatWarningsAsErrors = "false" | ||||
|                     WarningLevel = "4" | ||||
|                 /> | ||||
|                 <Config | ||||
|                     Name = "Release" | ||||
|                     AllowUnsafeBlocks = "false" | ||||
|                     BaseAddress = "285212672" | ||||
|                     CheckForOverflowUnderflow = "false" | ||||
|                     ConfigurationOverrideFile = "" | ||||
|                     DefineConstants = "TRACE" | ||||
|                     DocumentationFile = "docs\DotZLib.xml" | ||||
|                     DebugSymbols = "false" | ||||
|                     FileAlignment = "4096" | ||||
|                     IncrementalBuild = "false" | ||||
|                     NoStdLib = "false" | ||||
|                     NoWarn = "" | ||||
|                     Optimize = "true" | ||||
|                     OutputPath = "bin\Release\" | ||||
|                     RegisterForComInterop = "false" | ||||
|                     RemoveIntegerChecks = "false" | ||||
|                     TreatWarningsAsErrors = "false" | ||||
|                     WarningLevel = "4" | ||||
|                 /> | ||||
|             </Settings> | ||||
|             <References> | ||||
|                 <Reference | ||||
|                     Name = "System" | ||||
|                     AssemblyName = "System" | ||||
|                     HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll" | ||||
|                 /> | ||||
|                 <Reference | ||||
|                     Name = "System.Data" | ||||
|                     AssemblyName = "System.Data" | ||||
|                     HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll" | ||||
|                 /> | ||||
|                 <Reference | ||||
|                     Name = "System.XML" | ||||
|                     AssemblyName = "System.Xml" | ||||
|                     HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" | ||||
|                 /> | ||||
|                 <Reference | ||||
|                     Name = "nunit.framework" | ||||
|                     AssemblyName = "nunit.framework" | ||||
|                     HintPath = "E:\apps\NUnit V2.1\\bin\nunit.framework.dll" | ||||
|                     AssemblyFolderKey = "hklm\dn\nunit.framework" | ||||
|                 /> | ||||
|             </References> | ||||
|         </Build> | ||||
|         <Files> | ||||
|             <Include> | ||||
|                 <File | ||||
|                     RelPath = "AssemblyInfo.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "ChecksumImpl.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "CircularBuffer.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "CodecBase.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "Deflater.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "DotZLib.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "GZipStream.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "Inflater.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|                 <File | ||||
|                     RelPath = "UnitTests.cs" | ||||
|                     SubType = "Code" | ||||
|                     BuildAction = "Compile" | ||||
|                 /> | ||||
|             </Include> | ||||
|         </Files> | ||||
|     </CSHARP> | ||||
| </VisualStudioProject> | ||||
|  | ||||
							
								
								
									
										301
									
								
								contrib/dotzlib/DotZLib/GZipStream.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										301
									
								
								contrib/dotzlib/DotZLib/GZipStream.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,301 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.IO; | ||||
| using System.Runtime.InteropServices; | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// Implements a compressed <see cref="Stream"/>, in GZip (.gz) format. | ||||
| 	/// </summary> | ||||
| 	public class GZipStream : Stream, IDisposable | ||||
| 	{ | ||||
|         #region Dll Imports | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] | ||||
|         private static extern IntPtr gzopen(string name, string mode); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int gzclose(IntPtr gzFile); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int gzwrite(IntPtr gzFile, int data, int length); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int gzread(IntPtr gzFile, int data, int length); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int gzgetc(IntPtr gzFile); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int gzputc(IntPtr gzFile, int c); | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         #region Private data | ||||
|         private IntPtr _gzFile; | ||||
|         private bool _isDisposed = false; | ||||
|         private bool _isWriting; | ||||
|         #endregion | ||||
|  | ||||
|         #region Constructors | ||||
|         /// <summary> | ||||
|         /// Creates a new file as a writeable GZipStream | ||||
|         /// </summary> | ||||
|         /// <param name="fileName">The name of the compressed file to create</param> | ||||
|         /// <param name="level">The compression level to use when adding data</param> | ||||
|         /// <exception cref="ZLibException">If an error occurred in the internal zlib function</exception> | ||||
| 		public GZipStream(string fileName, CompressLevel level) | ||||
| 		{ | ||||
|             _isWriting = true; | ||||
|             _gzFile = gzopen(fileName, String.Format("wb{0}", (int)level)); | ||||
|             if (_gzFile == IntPtr.Zero) | ||||
|                 throw new ZLibException(-1, "Could not open " + fileName); | ||||
| 		} | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Opens an existing file as a readable GZipStream | ||||
|         /// </summary> | ||||
|         /// <param name="fileName">The name of the file to open</param> | ||||
|         /// <exception cref="ZLibException">If an error occurred in the internal zlib function</exception> | ||||
|         public GZipStream(string fileName) | ||||
|         { | ||||
|             _isWriting = false; | ||||
|             _gzFile = gzopen(fileName, "rb"); | ||||
|             if (_gzFile == IntPtr.Zero) | ||||
|                 throw new ZLibException(-1, "Could not open " + fileName); | ||||
|  | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|         #region Access properties | ||||
|         /// <summary> | ||||
|         /// Returns true of this stream can be read from, false otherwise | ||||
|         /// </summary> | ||||
|         public override bool CanRead | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return !_isWriting; | ||||
|             } | ||||
|         } | ||||
|      | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Returns false. | ||||
|         /// </summary> | ||||
|         public override bool CanSeek | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|      | ||||
|         /// <summary> | ||||
|         /// Returns true if this tsream is writeable, false otherwise | ||||
|         /// </summary> | ||||
|         public override bool CanWrite | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return _isWriting; | ||||
|             } | ||||
|         } | ||||
|         #endregion | ||||
|      | ||||
|         #region Destructor & IDispose stuff | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Destroys this instance | ||||
|         /// </summary> | ||||
|         ~GZipStream() | ||||
|         { | ||||
|             cleanUp(false); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Closes the external file handle | ||||
|         /// </summary> | ||||
|         public void Dispose() | ||||
|         { | ||||
|             cleanUp(true); | ||||
|         } | ||||
|  | ||||
|         // Does the actual closing of the file handle. | ||||
|         private void cleanUp(bool isDisposing) | ||||
|         { | ||||
|             if (!_isDisposed) | ||||
|             { | ||||
|                 gzclose(_gzFile); | ||||
|                 _isDisposed = true; | ||||
|             } | ||||
|         } | ||||
|         #endregion | ||||
|      | ||||
|         #region Basic reading and writing | ||||
|         /// <summary> | ||||
|         /// Attempts to read a number of bytes from the stream. | ||||
|         /// </summary> | ||||
|         /// <param name="buffer">The destination data buffer</param> | ||||
|         /// <param name="offset">The index of the first destination byte in <c>buffer</c></param> | ||||
|         /// <param name="count">The number of bytes requested</param> | ||||
|         /// <returns>The number of bytes read</returns> | ||||
|         /// <exception cref="ArgumentNullException">If <c>buffer</c> is null</exception> | ||||
|         /// <exception cref="ArgumentOutOfRangeException">If <c>count</c> or <c>offset</c> are negative</exception> | ||||
|         /// <exception cref="ArgumentException">If <c>offset</c>  + <c>count</c> is > buffer.Length</exception> | ||||
|         /// <exception cref="NotSupportedException">If this stream is not readable.</exception> | ||||
|         /// <exception cref="ObjectDisposedException">If this stream has been disposed.</exception> | ||||
|         public override int Read(byte[] buffer, int offset, int count) | ||||
|         { | ||||
|             if (!CanRead) throw new NotSupportedException(); | ||||
|             if (buffer == null) throw new ArgumentNullException(); | ||||
|             if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); | ||||
|             if ((offset+count) > buffer.Length) throw new ArgumentException(); | ||||
|             if (_isDisposed) throw new ObjectDisposedException("GZipStream"); | ||||
|  | ||||
|             GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned); | ||||
|             int result; | ||||
|             try | ||||
|             { | ||||
|                 result = gzread(_gzFile, h.AddrOfPinnedObject().ToInt32() + offset, count); | ||||
|                 if (result < 0) | ||||
|                     throw new IOException(); | ||||
|             } | ||||
|             finally | ||||
|             { | ||||
|                 h.Free(); | ||||
|             } | ||||
|             return result; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Attempts to read a single byte from the stream. | ||||
|         /// </summary> | ||||
|         /// <returns>The byte that was read, or -1 in case of error or End-Of-File</returns> | ||||
|         public override int ReadByte() | ||||
|         { | ||||
|             if (!CanRead) throw new NotSupportedException(); | ||||
|             if (_isDisposed) throw new ObjectDisposedException("GZipStream"); | ||||
|             return gzgetc(_gzFile); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Writes a number of bytes to the stream | ||||
|         /// </summary> | ||||
|         /// <param name="buffer"></param> | ||||
|         /// <param name="offset"></param> | ||||
|         /// <param name="count"></param> | ||||
|         /// <exception cref="ArgumentNullException">If <c>buffer</c> is null</exception> | ||||
|         /// <exception cref="ArgumentOutOfRangeException">If <c>count</c> or <c>offset</c> are negative</exception> | ||||
|         /// <exception cref="ArgumentException">If <c>offset</c>  + <c>count</c> is > buffer.Length</exception> | ||||
|         /// <exception cref="NotSupportedException">If this stream is not writeable.</exception> | ||||
|         /// <exception cref="ObjectDisposedException">If this stream has been disposed.</exception> | ||||
|         public override void Write(byte[] buffer, int offset, int count) | ||||
|         { | ||||
|             if (!CanWrite) throw new NotSupportedException(); | ||||
|             if (buffer == null) throw new ArgumentNullException(); | ||||
|             if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); | ||||
|             if ((offset+count) > buffer.Length) throw new ArgumentException(); | ||||
|             if (_isDisposed) throw new ObjectDisposedException("GZipStream"); | ||||
|  | ||||
|             GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned); | ||||
|             try | ||||
|             { | ||||
|                 int result = gzwrite(_gzFile, h.AddrOfPinnedObject().ToInt32() + offset, count); | ||||
|                 if (result < 0) | ||||
|                     throw new IOException(); | ||||
|             } | ||||
|             finally | ||||
|             { | ||||
|                 h.Free(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Writes a single byte to the stream | ||||
|         /// </summary> | ||||
|         /// <param name="value">The byte to add to the stream.</param> | ||||
|         /// <exception cref="NotSupportedException">If this stream is not writeable.</exception> | ||||
|         /// <exception cref="ObjectDisposedException">If this stream has been disposed.</exception> | ||||
|         public override void WriteByte(byte value) | ||||
|         { | ||||
|             if (!CanWrite) throw new NotSupportedException(); | ||||
|             if (_isDisposed) throw new ObjectDisposedException("GZipStream"); | ||||
|  | ||||
|             int result = gzputc(_gzFile, (int)value); | ||||
|             if (result < 0) | ||||
|                 throw new IOException(); | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|         #region Position & length stuff | ||||
|         /// <summary> | ||||
|         /// Not supported. | ||||
|         /// </summary> | ||||
|         /// <param name="value"></param> | ||||
|         /// <exception cref="NotSupportedException">Always thrown</exception> | ||||
|         public override void SetLength(long value) | ||||
|         { | ||||
|             throw new NotSupportedException(); | ||||
|         } | ||||
|      | ||||
|         /// <summary> | ||||
|         ///  Not suppported. | ||||
|         /// </summary> | ||||
|         /// <param name="offset"></param> | ||||
|         /// <param name="origin"></param> | ||||
|         /// <returns></returns> | ||||
|         /// <exception cref="NotSupportedException">Always thrown</exception> | ||||
|         public override long Seek(long offset, SeekOrigin origin) | ||||
|         { | ||||
|             throw new NotSupportedException(); | ||||
|         } | ||||
|      | ||||
|         /// <summary> | ||||
|         /// Flushes the <c>GZipStream</c>. | ||||
|         /// </summary> | ||||
|         /// <remarks>In this implementation, this method does nothing. This is because excessive | ||||
|         /// flushing may degrade the achievable compression rates.</remarks> | ||||
|         public override void Flush() | ||||
|         { | ||||
|             // left empty on purpose | ||||
|         } | ||||
|      | ||||
|         /// <summary> | ||||
|         /// Gets/sets the current position in the <c>GZipStream</c>. Not suppported. | ||||
|         /// </summary> | ||||
|         /// <remarks>In this implementation this property is not supported</remarks> | ||||
|         /// <exception cref="NotSupportedException">Always thrown</exception> | ||||
|         public override long Position | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 throw new NotSupportedException(); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 throw new NotSupportedException(); | ||||
|             } | ||||
|         } | ||||
|      | ||||
|         /// <summary> | ||||
|         /// Gets the size of the stream. Not suppported. | ||||
|         /// </summary> | ||||
|         /// <remarks>In this implementation this property is not supported</remarks> | ||||
|         /// <exception cref="NotSupportedException">Always thrown</exception> | ||||
|         public override long Length | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 throw new NotSupportedException(); | ||||
|             } | ||||
|         } | ||||
|         #endregion | ||||
|     } | ||||
| } | ||||
							
								
								
									
										105
									
								
								contrib/dotzlib/DotZLib/Inflater.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								contrib/dotzlib/DotZLib/Inflater.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.Diagnostics; | ||||
| using System.Runtime.InteropServices; | ||||
|  | ||||
| namespace DotZLib | ||||
| { | ||||
|      | ||||
|     /// <summary> | ||||
|     /// Implements a data decompressor, using the inflate algorithm in the ZLib dll | ||||
|     /// </summary> | ||||
|     public class Inflater : CodecBase | ||||
| 	{ | ||||
|         #region Dll imports | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] | ||||
|         private static extern int inflateInit_(ref ZStream sz, string vs, int size); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int inflate(ref ZStream sz, int flush); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int inflateReset(ref ZStream sz); | ||||
|  | ||||
|         [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] | ||||
|         private static extern int inflateEnd(ref ZStream sz); | ||||
|         #endregion | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Constructs an new instance of the <c>Inflater</c> | ||||
|         /// </summary> | ||||
|         public Inflater() : base() | ||||
| 		{ | ||||
|             int retval = inflateInit_(ref _ztream, Info.Version, Marshal.SizeOf(_ztream)); | ||||
|             if (retval != 0) | ||||
|                 throw new ZLibException(retval, "Could not initialize inflater"); | ||||
|  | ||||
|             resetOutput(); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Adds more data to the codec to be processed. | ||||
|         /// </summary> | ||||
|         /// <param name="data">Byte array containing the data to be added to the codec</param> | ||||
|         /// <param name="offset">The index of the first byte to add from <c>data</c></param> | ||||
|         /// <param name="count">The number of bytes to add</param> | ||||
|         /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> | ||||
|         public override void Add(byte[] data, int offset, int count) | ||||
|         { | ||||
|             if (data == null) throw new ArgumentNullException(); | ||||
|             if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); | ||||
|             if ((offset+count) > data.Length) throw new ArgumentException(); | ||||
|  | ||||
|             int total = count; | ||||
|             int inputIndex = offset; | ||||
|             int err = 0; | ||||
|  | ||||
|             while (err >= 0 && inputIndex < total) | ||||
|             { | ||||
|                 copyInput(data, inputIndex, Math.Min(total - inputIndex, kBufferSize)); | ||||
|                 err = inflate(ref _ztream, (int)FlushTypes.None); | ||||
|                 if (err == 0) | ||||
|                     while (_ztream.avail_out == 0) | ||||
|                     { | ||||
|                         OnDataAvailable(); | ||||
|                         err = inflate(ref _ztream, (int)FlushTypes.None); | ||||
|                     } | ||||
|  | ||||
|                 inputIndex += (int)_ztream.total_in; | ||||
|             } | ||||
|             setChecksum( _ztream.adler ); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Finishes up any pending data that needs to be processed and handled. | ||||
|         /// </summary> | ||||
|         public override void Finish() | ||||
|         { | ||||
|             int err; | ||||
|             do  | ||||
|             { | ||||
|                 err = inflate(ref _ztream, (int)FlushTypes.Finish); | ||||
|                 OnDataAvailable(); | ||||
|             } | ||||
|             while (err == 0); | ||||
|             setChecksum( _ztream.adler ); | ||||
|             inflateReset(ref _ztream); | ||||
|             resetOutput(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Closes the internal zlib inflate stream | ||||
|         /// </summary> | ||||
|         protected override void CleanUp() { inflateEnd(ref _ztream); } | ||||
|  | ||||
|  | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										274
									
								
								contrib/dotzlib/DotZLib/UnitTests.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								contrib/dotzlib/DotZLib/UnitTests.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,274 @@ | ||||
| // | ||||
| // <20> Copyright Henrik Ravn 2004 | ||||
| // | ||||
| // Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| // | ||||
|  | ||||
| using System; | ||||
| using System.Collections; | ||||
| using System.IO; | ||||
|  | ||||
| // uncomment the define below to include unit tests | ||||
| //#define nunit | ||||
| #if nunit | ||||
| using NUnit.Framework; | ||||
|  | ||||
| // Unit tests for the DotZLib class library | ||||
| // ---------------------------------------- | ||||
| // | ||||
| // Use this with NUnit 2 from http://www.nunit.org | ||||
| // | ||||
|  | ||||
| namespace DotZLibTests | ||||
| { | ||||
|     using DotZLib; | ||||
|  | ||||
|     // helper methods | ||||
|     internal class Utils | ||||
|     { | ||||
|         public static bool byteArrEqual( byte[] lhs, byte[] rhs ) | ||||
|         { | ||||
|             if (lhs.Length != rhs.Length) | ||||
|                 return false; | ||||
|             for (int i = lhs.Length-1; i >= 0; --i) | ||||
|                 if (lhs[i] != rhs[i]) | ||||
|                     return false; | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|     [TestFixture] | ||||
|     public class CircBufferTests | ||||
|     { | ||||
|         #region Circular buffer tests | ||||
|         [Test] | ||||
|         public void SinglePutGet() | ||||
|         { | ||||
|             CircularBuffer buf = new CircularBuffer(10); | ||||
|             Assert.AreEqual( 0, buf.Size ); | ||||
|             Assert.AreEqual( -1, buf.Get() ); | ||||
|  | ||||
|             Assert.IsTrue(buf.Put( 1 )); | ||||
|             Assert.AreEqual( 1, buf.Size ); | ||||
|             Assert.AreEqual( 1, buf.Get() ); | ||||
|             Assert.AreEqual( 0, buf.Size ); | ||||
|             Assert.AreEqual( -1, buf.Get() ); | ||||
|         } | ||||
|  | ||||
|         [Test] | ||||
|         public void BlockPutGet() | ||||
|         { | ||||
|             CircularBuffer buf = new CircularBuffer(10); | ||||
|             byte[] arr = {1,2,3,4,5,6,7,8,9,10}; | ||||
|             Assert.AreEqual( 10, buf.Put(arr,0,10) ); | ||||
|             Assert.AreEqual( 10, buf.Size ); | ||||
|             Assert.IsFalse( buf.Put(11) ); | ||||
|             Assert.AreEqual( 1, buf.Get() ); | ||||
|             Assert.IsTrue( buf.Put(11) ); | ||||
|  | ||||
|             byte[] arr2 = (byte[])arr.Clone(); | ||||
|             Assert.AreEqual( 9, buf.Get(arr2,1,9) ); | ||||
|             Assert.IsTrue( Utils.byteArrEqual(arr,arr2) ); | ||||
|         } | ||||
|  | ||||
|         #endregion | ||||
|     } | ||||
|  | ||||
|     [TestFixture] | ||||
|     public class ChecksumTests | ||||
|     { | ||||
|         #region CRC32 Tests | ||||
|         [Test] | ||||
|         public void CRC32_Null() | ||||
|         { | ||||
|             CRC32Checksum crc32 = new CRC32Checksum(); | ||||
|             Assert.AreEqual( 0, crc32.Value ); | ||||
|  | ||||
|             crc32 = new CRC32Checksum(1); | ||||
|             Assert.AreEqual( 1, crc32.Value ); | ||||
|  | ||||
|             crc32 = new CRC32Checksum(556); | ||||
|             Assert.AreEqual( 556, crc32.Value ); | ||||
|         } | ||||
|  | ||||
|         [Test] | ||||
|         public void CRC32_Data() | ||||
|         { | ||||
|             CRC32Checksum crc32 = new CRC32Checksum(); | ||||
|             byte[] data = { 1,2,3,4,5,6,7 }; | ||||
|             crc32.Update(data); | ||||
|             Assert.AreEqual( 0x70e46888, crc32.Value  ); | ||||
|  | ||||
|             crc32 = new CRC32Checksum(); | ||||
|             crc32.Update("penguin"); | ||||
|             Assert.AreEqual( 0x0e5c1a120, crc32.Value ); | ||||
|  | ||||
|             crc32 = new CRC32Checksum(1); | ||||
|             crc32.Update("penguin"); | ||||
|             Assert.AreEqual(0x43b6aa94, crc32.Value); | ||||
|  | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|         #region Adler tests | ||||
|  | ||||
|         [Test] | ||||
|         public void Adler_Null() | ||||
|         { | ||||
|             AdlerChecksum adler = new AdlerChecksum(); | ||||
|             Assert.AreEqual(0, adler.Value); | ||||
|  | ||||
|             adler = new AdlerChecksum(1); | ||||
|             Assert.AreEqual( 1, adler.Value ); | ||||
|  | ||||
|             adler = new AdlerChecksum(556); | ||||
|             Assert.AreEqual( 556, adler.Value ); | ||||
|         } | ||||
|  | ||||
|         [Test] | ||||
|         public void Adler_Data() | ||||
|         { | ||||
|             AdlerChecksum adler = new AdlerChecksum(1); | ||||
|             byte[] data = { 1,2,3,4,5,6,7 }; | ||||
|             adler.Update(data); | ||||
|             Assert.AreEqual( 0x5b001d, adler.Value  ); | ||||
|  | ||||
|             adler = new AdlerChecksum(); | ||||
|             adler.Update("penguin"); | ||||
|             Assert.AreEqual(0x0bcf02f6, adler.Value ); | ||||
|  | ||||
|             adler = new AdlerChecksum(1); | ||||
|             adler.Update("penguin"); | ||||
|             Assert.AreEqual(0x0bd602f7, adler.Value); | ||||
|  | ||||
|         } | ||||
|         #endregion | ||||
|     } | ||||
|  | ||||
|     [TestFixture] | ||||
|     public class InfoTests | ||||
|     { | ||||
|         #region Info tests | ||||
|         [Test] | ||||
|         public void Info_Version() | ||||
|         { | ||||
|             Info info = new Info(); | ||||
|             Assert.AreEqual("1.2.2", Info.Version); | ||||
|             Assert.AreEqual(32, info.SizeOfUInt); | ||||
|             Assert.AreEqual(32, info.SizeOfULong); | ||||
|             Assert.AreEqual(32, info.SizeOfPointer); | ||||
|             Assert.AreEqual(32, info.SizeOfOffset); | ||||
|         } | ||||
|         #endregion | ||||
|     } | ||||
|  | ||||
|     [TestFixture] | ||||
|     public class DeflateInflateTests | ||||
|     { | ||||
|         #region Deflate tests | ||||
|         [Test] | ||||
|         public void Deflate_Init() | ||||
|         { | ||||
|             using (Deflater def = new Deflater(CompressLevel.Default)) | ||||
|             { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private ArrayList compressedData = new ArrayList(); | ||||
|         private uint adler1; | ||||
|  | ||||
|         private ArrayList uncompressedData = new ArrayList(); | ||||
|         private uint adler2; | ||||
|  | ||||
|         public void CDataAvail(byte[] data, int startIndex, int count) | ||||
|         { | ||||
|             for (int i = 0; i < count; ++i) | ||||
|                 compressedData.Add(data[i+startIndex]); | ||||
|         } | ||||
|  | ||||
|         [Test] | ||||
|         public void Deflate_Compress() | ||||
|         { | ||||
|             compressedData.Clear(); | ||||
|  | ||||
|             byte[] testData = new byte[35000]; | ||||
|             for (int i = 0; i < testData.Length; ++i) | ||||
|                 testData[i] = 5; | ||||
|  | ||||
|             using (Deflater def = new Deflater((CompressLevel)5)) | ||||
|             { | ||||
|                 def.DataAvailable += new DataAvailableHandler(CDataAvail); | ||||
|                 def.Add(testData); | ||||
|                 def.Finish(); | ||||
|                 adler1 = def.Checksum; | ||||
|             } | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|         #region Inflate tests | ||||
|         [Test] | ||||
|         public void Inflate_Init() | ||||
|         { | ||||
|             using (Inflater inf = new Inflater()) | ||||
|             { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void DDataAvail(byte[] data, int startIndex, int count) | ||||
|         { | ||||
|             for (int i = 0; i < count; ++i) | ||||
|                 uncompressedData.Add(data[i+startIndex]); | ||||
|         } | ||||
|  | ||||
|         [Test] | ||||
|         public void Inflate_Expand() | ||||
|         {  | ||||
|             uncompressedData.Clear(); | ||||
|  | ||||
|             using (Inflater inf = new Inflater()) | ||||
|             { | ||||
|                 inf.DataAvailable += new DataAvailableHandler(DDataAvail); | ||||
|                 inf.Add((byte[])compressedData.ToArray(typeof(byte))); | ||||
|                 inf.Finish(); | ||||
|                 adler2 = inf.Checksum; | ||||
|             } | ||||
|             Assert.AreEqual( adler1, adler2 ); | ||||
|         } | ||||
|         #endregion | ||||
|     } | ||||
|  | ||||
|     [TestFixture] | ||||
|     public class GZipStreamTests | ||||
|     { | ||||
|         #region GZipStream test | ||||
|         [Test] | ||||
|         public void GZipStream_WriteRead() | ||||
|         { | ||||
|             using (GZipStream gzOut = new GZipStream("gzstream.gz", CompressLevel.Best)) | ||||
|             { | ||||
|                 BinaryWriter writer = new BinaryWriter(gzOut); | ||||
|                 writer.Write("hi there"); | ||||
|                 writer.Write(Math.PI); | ||||
|                 writer.Write(42); | ||||
|             } | ||||
|  | ||||
|             using (GZipStream gzIn = new GZipStream("gzstream.gz")) | ||||
|             { | ||||
|                 BinaryReader reader = new BinaryReader(gzIn); | ||||
|                 string s = reader.ReadString(); | ||||
|                 Assert.AreEqual("hi there",s); | ||||
|                 double d = reader.ReadDouble(); | ||||
|                 Assert.AreEqual(Math.PI, d); | ||||
|                 int i = reader.ReadInt32(); | ||||
|                 Assert.AreEqual(42,i); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         #endregion | ||||
| 	} | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										23
									
								
								contrib/dotzlib/LICENSE_1_0.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								contrib/dotzlib/LICENSE_1_0.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| Boost Software License - Version 1.0 - August 17th, 2003 | ||||
|  | ||||
| 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. | ||||
							
								
								
									
										58
									
								
								contrib/dotzlib/readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								contrib/dotzlib/readme.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| This directory contains a .Net wrapper class library for the ZLib1.dll | ||||
|  | ||||
| The wrapper includes support for inflating/deflating memory buffers,  | ||||
| .Net streaming wrappers for the gz streams part of zlib, and wrappers | ||||
| for the checksum parts of zlib. See DotZLib/UnitTests.cs for examples. | ||||
|  | ||||
| Directory structure: | ||||
| -------------------- | ||||
|  | ||||
| LICENSE_1_0.txt       - License file. | ||||
| readme.txt            - This file. | ||||
| DotZLib.chm           - Class library documentation | ||||
| DotZLib.build         - NAnt build file | ||||
| DotZLib.sln           - Microsoft Visual Studio 2003 solution file | ||||
|  | ||||
| DotZLib\*.cs          - Source files for the class library | ||||
|  | ||||
| Unit tests: | ||||
| ----------- | ||||
| The file DotZLib/UnitTests.cs contains unit tests for use with NUnit 2.1 or higher. | ||||
| To include unit tests in the build, define nunit before building. | ||||
|  | ||||
|  | ||||
| Build instructions: | ||||
| ------------------- | ||||
|  | ||||
| 1. Using Visual Studio.Net 2003: | ||||
|    Open DotZLib.sln in VS.Net and build from there. Output file (DotZLib.dll) | ||||
|    will be found ./DotZLib/bin/release or ./DotZLib/bin/debug, depending on  | ||||
|    you are building the release or debug version of the library. Check  | ||||
|    DotZLib/UnitTests.cs for instructions on how to include unit tests in the | ||||
|    build. | ||||
|     | ||||
| 2. Using NAnt: | ||||
|    Open a command prompt with access to the build environment and run nant | ||||
|    in the same directory as the DotZLib.build file. | ||||
|    You can define 2 properties on the nant command-line to control the build: | ||||
|    debug={true|false} to toggle between release/debug builds (default=true). | ||||
|    nunit={true|false} to include or esclude unit tests (default=true). | ||||
|    Also the target clean will remove binaries. | ||||
|    Output file (DotZLib.dll) will be found in either ./DotZLib/bin/release  | ||||
|    or ./DotZLib/bin/debug, depending on whether you are building the release  | ||||
|    or debug version of the library. | ||||
|  | ||||
|    Examples:  | ||||
|      nant -D:debug=false -D:nunit=false | ||||
|        will build a release mode version of the library without unit tests. | ||||
|      nant | ||||
|        will build a debug version of the library with unit tests  | ||||
|      nant clean | ||||
|        will remove all previously built files. | ||||
|  | ||||
|  | ||||
| --------------------------------- | ||||
| Copyright (c) Henrik Ravn 2004 | ||||
|  | ||||
| Use, modification and distribution are subject to the Boost Software License, Version 1.0.  | ||||
| (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
| @@ -48,10 +48,10 @@ | ||||
|    unfriendly behavior that if gzappend fails, the gzip file is corrupted. | ||||
|  | ||||
|    This program was written to illustrate the use of the new Z_BLOCK option of | ||||
|    zlib 1.2.1's inflate() function.  This option returns from inflate() at each | ||||
|    zlib 1.2.x's inflate() function.  This option returns from inflate() at each | ||||
|    block boundary to facilitate locating and modifying the last block bit at | ||||
|    the start of the final deflate block.  Also whether using Z_BLOCK or not, | ||||
|    another required feature of zlib 1.2.1 is that inflate() now provides the | ||||
|    another required feature of zlib 1.2.x is that inflate() now provides the | ||||
|    number of unusued bits in the last input byte used.  gzappend will not work | ||||
|    with versions of zlib earlier than 1.2.1. | ||||
|  | ||||
|   | ||||
| @@ -430,8 +430,8 @@ void FAR *out_desc; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| 	    /* handle error breaks in while */ | ||||
| 	    if (mode == BAD) break; | ||||
|             /* handle error breaks in while */ | ||||
|             if (mode == BAD) break; | ||||
|  | ||||
|             /* build code tables */ | ||||
|             state->next = state->codes; | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| #define MAXBITS 15 | ||||
|  | ||||
| const char inflate9_copyright[] = | ||||
|    " inflate9 1.2.1.2 Copyright 1995-2004 Mark Adler "; | ||||
|    " inflate9 1.2.2 Copyright 1995-2004 Mark Adler "; | ||||
| /* | ||||
|   If you use the zlib library in a product, an acknowledgment is welcome | ||||
|   in the documentation of your product. If for some reason you cannot | ||||
| @@ -64,7 +64,7 @@ unsigned short FAR *work; | ||||
|     static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | ||||
|         128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, | ||||
|         130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, | ||||
|         133, 133, 133, 133, 144, 77, 194}; | ||||
|         133, 133, 133, 133, 144, 199, 198}; | ||||
|     static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ | ||||
|         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, | ||||
|         65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, | ||||
|   | ||||
| @@ -94,7 +94,7 @@ uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) | ||||
|    uLong size; | ||||
| { | ||||
|     uLong ret; | ||||
|     ret = fread(buf, 1, (size_t)size, (FILE *)stream); | ||||
|     ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| @@ -106,7 +106,7 @@ uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) | ||||
|    uLong size; | ||||
| { | ||||
|     uLong ret; | ||||
|     ret = fwrite(buf, 1, (size_t)size, (FILE *)stream); | ||||
|     ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -317,7 +317,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password) | ||||
|  | ||||
|                     printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ",write_filename); | ||||
|                     ret = scanf("%1s",answer); | ||||
|                     if (ret != 1)  | ||||
|                     if (ret != 1) | ||||
|                     { | ||||
|                        exit(EXIT_FAILURE); | ||||
|                     } | ||||
| @@ -567,7 +567,7 @@ int main(argc,argv) | ||||
|         return do_list(uf); | ||||
|     else if (opt_do_extract==1) | ||||
|     { | ||||
|         if (opt_extractdir && chdir(dirname))  | ||||
|         if (opt_extractdir && chdir(dirname)) | ||||
|         { | ||||
|           printf("Error changing into %s, aborting\n", dirname); | ||||
|           exit(-1); | ||||
|   | ||||
| @@ -62,7 +62,7 @@ uLong* bytesRecovered; | ||||
|         unsigned int fnsize = READ_16(header + 26); /* file name length */ | ||||
|         unsigned int extsize = READ_16(header + 28); /* extra field length */ | ||||
|         filename[0] = extra[0] = '\0'; | ||||
|          | ||||
|  | ||||
|         /* Header */ | ||||
|         if (fwrite(header, 1, 30, fpOut) == 30) { | ||||
|           offset += 30; | ||||
| @@ -70,7 +70,7 @@ uLong* bytesRecovered; | ||||
|           err = Z_ERRNO; | ||||
|           break; | ||||
|         } | ||||
|          | ||||
|  | ||||
|         /* Filename */ | ||||
|         if (fnsize > 0) { | ||||
|           if (fread(filename, 1, fnsize, fpZip) == fnsize) { | ||||
| @@ -103,7 +103,7 @@ uLong* bytesRecovered; | ||||
|             break; | ||||
|           } | ||||
|         } | ||||
|          | ||||
|  | ||||
|         /* Data */ | ||||
|         { | ||||
|           int dataSize = cpsize; | ||||
| @@ -133,7 +133,7 @@ uLong* bytesRecovered; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|          | ||||
|  | ||||
|         /* Central directory entry */ | ||||
|         { | ||||
|           char header[46]; | ||||
| @@ -159,7 +159,7 @@ uLong* bytesRecovered; | ||||
|           /* Header */ | ||||
|           if (fwrite(header, 1, 46, fpOutCD) == 46) { | ||||
|             offsetCD += 46; | ||||
|              | ||||
|  | ||||
|             /* Filename */ | ||||
|             if (fnsize > 0) { | ||||
|               if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { | ||||
| @@ -172,7 +172,7 @@ uLong* bytesRecovered; | ||||
|               err = Z_STREAM_ERROR; | ||||
|               break; | ||||
|             } | ||||
|              | ||||
|  | ||||
|             /* Extra field */ | ||||
|             if (extsize > 0) { | ||||
|               if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { | ||||
| @@ -182,7 +182,7 @@ uLong* bytesRecovered; | ||||
|                 break; | ||||
|               } | ||||
|             } | ||||
|              | ||||
|  | ||||
|             /* Comment field */ | ||||
|             if (comsize > 0) { | ||||
|               if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { | ||||
| @@ -192,8 +192,8 @@ uLong* bytesRecovered; | ||||
|                 break; | ||||
|               } | ||||
|             } | ||||
|              | ||||
|              | ||||
|  | ||||
|  | ||||
|           } else { | ||||
|             err = Z_ERRNO; | ||||
|             break; | ||||
| @@ -225,17 +225,17 @@ uLong* bytesRecovered; | ||||
|       WRITE_32(header + 12, offsetCD);    /* size of CD */ | ||||
|       WRITE_32(header + 16, offset);      /* offset to CD */ | ||||
|       WRITE_16(header + 20, comsize);     /* comment */ | ||||
|        | ||||
|  | ||||
|       /* Header */ | ||||
|       if (fwrite(header, 1, 22, fpOutCD) == 22) { | ||||
|          | ||||
|  | ||||
|         /* Comment field */ | ||||
|         if (comsize > 0) { | ||||
|           if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { | ||||
|             err = Z_ERRNO; | ||||
|           } | ||||
|         } | ||||
|          | ||||
|  | ||||
|       } else { | ||||
|         err = Z_ERRNO; | ||||
|       } | ||||
| @@ -257,14 +257,14 @@ uLong* bytesRecovered; | ||||
|         fclose(fpOutCD); | ||||
|       } | ||||
|     } | ||||
|      | ||||
|  | ||||
|     /* Close */ | ||||
|     fclose(fpZip); | ||||
|     fclose(fpOut); | ||||
|      | ||||
|  | ||||
|     /* Wipe temporary file */ | ||||
|     (void)remove(fileOutTmp); | ||||
|      | ||||
|  | ||||
|     /* Number of recovered entries */ | ||||
|     if (err == Z_OK) { | ||||
|       if (nRecovered != NULL) { | ||||
|   | ||||
| @@ -17,14 +17,14 @@ extern "C" { | ||||
|  | ||||
| #include "unzip.h" | ||||
|  | ||||
| /* Repair a ZIP file (missing central directory)  | ||||
| /* Repair a ZIP file (missing central directory) | ||||
|    file: file to recover | ||||
|    fileOut: output file after recovery | ||||
|    fileOutTmp: temporary file name used for recovery | ||||
| */ | ||||
| extern int ZEXPORT unzRepair(const char* file,  | ||||
|                              const char* fileOut,  | ||||
|                              const char* fileOutTmp,  | ||||
| extern int ZEXPORT unzRepair(const char* file, | ||||
|                              const char* fileOut, | ||||
|                              const char* fileOutTmp, | ||||
|                              uLong* nRecovered, | ||||
|                              uLong* bytesRecovered); | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* unzip.c -- IO for uncompress .zip files using zlib | ||||
|    Version 1.01c, August 23th, 2004 | ||||
|    Version 1.01d, September 22th, 2004 | ||||
|  | ||||
|    Copyright (C) 1998-2004 Gilles Vollant | ||||
|  | ||||
| @@ -1250,10 +1250,12 @@ extern int ZEXPORT unzReadCurrentFile  (file, buf, len) | ||||
|         pfile_in_zip_read_info->stream.avail_out = | ||||
|             (uInt)pfile_in_zip_read_info->rest_read_uncompressed; | ||||
|  | ||||
|     if ((len>pfile_in_zip_read_info->rest_read_compressed) && | ||||
|         (pfile_in_zip_read_info->raw)) | ||||
|     if ((len>pfile_in_zip_read_info->rest_read_compressed+ | ||||
|            pfile_in_zip_read_info->stream.avail_in) && | ||||
|          (pfile_in_zip_read_info->raw)) | ||||
|         pfile_in_zip_read_info->stream.avail_out = | ||||
|             (uInt)pfile_in_zip_read_info->rest_read_compressed;  | ||||
|             (uInt)pfile_in_zip_read_info->rest_read_compressed+ | ||||
|             pfile_in_zip_read_info->stream.avail_in; | ||||
|  | ||||
|     while (pfile_in_zip_read_info->stream.avail_out>0) | ||||
|     { | ||||
|   | ||||
| @@ -717,9 +717,9 @@ extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi, | ||||
|     if (comment==NULL) | ||||
|         size_comment = 0; | ||||
|     else | ||||
|         size_comment = strlen(comment); | ||||
|         size_comment = (uInt)strlen(comment); | ||||
|  | ||||
|     size_filename = strlen(filename); | ||||
|     size_filename = (uInt)strlen(filename); | ||||
|  | ||||
|     if (zipfi == NULL) | ||||
|         zi->ci.dosDate = 0; | ||||
| @@ -1126,7 +1126,7 @@ extern int ZEXPORT zipClose (file, global_comment) | ||||
|     if (global_comment==NULL) | ||||
|         size_global_comment = 0; | ||||
|     else | ||||
|         size_global_comment = strlen(global_comment); | ||||
|         size_global_comment = (uInt)strlen(global_comment); | ||||
|  | ||||
|  | ||||
|     centraldir_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream); | ||||
|   | ||||
| @@ -97,7 +97,7 @@ struct attr_item | ||||
|   struct attr_item  *next; | ||||
|   char              *fname; | ||||
|   int                mode; | ||||
|   time_t             time;  | ||||
|   time_t             time; | ||||
| }; | ||||
|  | ||||
| enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID }; | ||||
|   | ||||
| @@ -2,8 +2,8 @@ | ||||
|  | ||||
| #define IDR_VERSION1  1 | ||||
| IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE | ||||
|   FILEVERSION	 1,2,1,2 | ||||
|   PRODUCTVERSION 1,2,1,2 | ||||
|   FILEVERSION	 1,2,2 | ||||
|   PRODUCTVERSION 1,2,2 | ||||
|   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK | ||||
|   FILEFLAGS	0 | ||||
|   FILEOS	VOS_DOS_WINDOWS32 | ||||
| @@ -17,7 +17,7 @@ BEGIN | ||||
|  | ||||
|     BEGIN | ||||
|       VALUE "FileDescription", "zlib data compression library\0" | ||||
|       VALUE "FileVersion",	"1.2.1.2\0" | ||||
|       VALUE "FileVersion",	"1.2.2\0" | ||||
|       VALUE "InternalName",	"zlib\0" | ||||
|       VALUE "OriginalFilename",	"zlib.dll\0" | ||||
|       VALUE "ProductName",	"ZLib.DLL\0" | ||||
|   | ||||
							
								
								
									
										88
									
								
								crc32.c
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								crc32.c
									
									
									
									
									
								
							| @@ -12,11 +12,11 @@ | ||||
| /* @(#) $Id$ */ | ||||
|  | ||||
| /* | ||||
|   Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore protection | ||||
|   on the static variables used to control the first-use generation of the crc | ||||
|   tables.  Therefore if you #define DYNAMIC_CRC_TABLE, you should first call | ||||
|   get_crc_table() to initialize the tables before allowing more than on thread | ||||
|   to use crc32(). | ||||
|   Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore | ||||
|   protection on the static variables used to control the first-use generation | ||||
|   of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should | ||||
|   first call get_crc_table() to initialize the tables before allowing more than | ||||
|   one thread to use crc32(). | ||||
|  */ | ||||
|  | ||||
| #ifdef MAKECRCH | ||||
| @@ -103,51 +103,51 @@ local void make_crc_table() | ||||
| { | ||||
|     unsigned long c; | ||||
|     int n, k; | ||||
|     unsigned long poly;				/* polynomial exclusive-or pattern */ | ||||
|     unsigned long poly;                 /* polynomial exclusive-or pattern */ | ||||
|     /* terms of polynomial defining this crc (except x^32): */ | ||||
| 	static volatile int first = 1;		/* flag to limit concurrent making */ | ||||
|     static volatile int first = 1;      /* flag to limit concurrent making */ | ||||
|     static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; | ||||
|  | ||||
| 	/* See if another task is already doing this (not thread-safe, but better | ||||
| 	   than nothing -- significantly reduces duration of vulnerability in | ||||
| 	   case the advice about DYNAMIC_CRC_TABLE is ignored) */ | ||||
| 	if (first) { | ||||
| 		first = 0; | ||||
|     /* See if another task is already doing this (not thread-safe, but better | ||||
|        than nothing -- significantly reduces duration of vulnerability in | ||||
|        case the advice about DYNAMIC_CRC_TABLE is ignored) */ | ||||
|     if (first) { | ||||
|         first = 0; | ||||
|  | ||||
| 		/* make exclusive-or pattern from polynomial (0xedb88320UL) */ | ||||
| 		poly = 0UL; | ||||
| 		for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++) | ||||
| 			poly |= 1UL << (31 - p[n]); | ||||
|         /* make exclusive-or pattern from polynomial (0xedb88320UL) */ | ||||
|         poly = 0UL; | ||||
|         for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++) | ||||
|             poly |= 1UL << (31 - p[n]); | ||||
|  | ||||
| 		/* generate a crc for every 8-bit value */ | ||||
| 		for (n = 0; n < 256; n++) { | ||||
| 			c = (unsigned long)n; | ||||
| 			for (k = 0; k < 8; k++) | ||||
| 				c = c & 1 ? poly ^ (c >> 1) : c >> 1; | ||||
| 			crc_table[0][n] = c; | ||||
| 		} | ||||
|         /* generate a crc for every 8-bit value */ | ||||
|         for (n = 0; n < 256; n++) { | ||||
|             c = (unsigned long)n; | ||||
|             for (k = 0; k < 8; k++) | ||||
|                 c = c & 1 ? poly ^ (c >> 1) : c >> 1; | ||||
|             crc_table[0][n] = c; | ||||
|         } | ||||
|  | ||||
| #ifdef BYFOUR | ||||
| 		/* generate crc for each value followed by one, two, and three zeros, and | ||||
| 		   then the byte reversal of those as well as the first table */ | ||||
| 		for (n = 0; n < 256; n++) { | ||||
| 			c = crc_table[0][n]; | ||||
| 			crc_table[4][n] = REV(c); | ||||
| 			for (k = 1; k < 4; k++) { | ||||
| 				c = crc_table[0][c & 0xff] ^ (c >> 8); | ||||
| 				crc_table[k][n] = c; | ||||
| 				crc_table[k + 4][n] = REV(c); | ||||
| 			} | ||||
| 		} | ||||
|         /* generate crc for each value followed by one, two, and three zeros, | ||||
|            and then the byte reversal of those as well as the first table */ | ||||
|         for (n = 0; n < 256; n++) { | ||||
|             c = crc_table[0][n]; | ||||
|             crc_table[4][n] = REV(c); | ||||
|             for (k = 1; k < 4; k++) { | ||||
|                 c = crc_table[0][c & 0xff] ^ (c >> 8); | ||||
|                 crc_table[k][n] = c; | ||||
|                 crc_table[k + 4][n] = REV(c); | ||||
|             } | ||||
|         } | ||||
| #endif /* BYFOUR */ | ||||
|  | ||||
| 		crc_table_empty = 0; | ||||
| 	} | ||||
| 	else {		/* not first */ | ||||
| 		/* wait for the other guy to finish (not exactly efficient, but rare) */ | ||||
| 		while (crc_table_empty) | ||||
| 			; | ||||
| 	} | ||||
|         crc_table_empty = 0; | ||||
|     } | ||||
|     else {      /* not first */ | ||||
|         /* wait for the other guy to finish (not efficient, but rare) */ | ||||
|         while (crc_table_empty) | ||||
|             ; | ||||
|     } | ||||
|  | ||||
| #ifdef MAKECRCH | ||||
|     /* write out CRC tables to crc32.h */ | ||||
| @@ -201,10 +201,10 @@ local void write_table(out, table) | ||||
| const unsigned long FAR * ZEXPORT get_crc_table() | ||||
| { | ||||
| #ifdef DYNAMIC_CRC_TABLE | ||||
| 	if (crc_table_empty) | ||||
| 		make_crc_table(); | ||||
|     if (crc_table_empty) | ||||
|         make_crc_table(); | ||||
| #endif /* DYNAMIC_CRC_TABLE */ | ||||
| 	return (const unsigned long FAR *)crc_table; | ||||
|     return (const unsigned long FAR *)crc_table; | ||||
| } | ||||
|  | ||||
| /* ========================================================================= */ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* deflate.c -- compress data using the deflation algorithm | ||||
|  * Copyright (C) 1995-2003 Jean-loup Gailly. | ||||
|  * Copyright (C) 1995-2004 Jean-loup Gailly. | ||||
|  * For conditions of distribution and use, see copyright notice in zlib.h | ||||
|  */ | ||||
|  | ||||
| @@ -52,7 +52,7 @@ | ||||
| #include "deflate.h" | ||||
|  | ||||
| const char deflate_copyright[] = | ||||
|    " deflate 1.2.1.2 Copyright 1995-2004 Jean-loup Gailly "; | ||||
|    " deflate 1.2.2 Copyright 1995-2004 Jean-loup Gailly "; | ||||
| /* | ||||
|   If you use the zlib library in a product, an acknowledgment is welcome | ||||
|   in the documentation of your product. If for some reason you cannot | ||||
|   | ||||
							
								
								
									
										8
									
								
								gzio.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								gzio.c
									
									
									
									
									
								
							| @@ -455,10 +455,10 @@ int ZEXPORT gzread (file, buf, len) | ||||
|                     s->z_err = Z_ERRNO; | ||||
|                     break; | ||||
|                 } | ||||
| 		if (feof(s->file)) {	    /* avoid error for empty file */ | ||||
| 		    s->z_err = Z_STREAM_END; | ||||
| 		    break; | ||||
| 		} | ||||
|                 if (feof(s->file)) {        /* avoid error for empty file */ | ||||
|                     s->z_err = Z_STREAM_END; | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|             s->stream.next_in = s->inbuf; | ||||
|         } | ||||
|   | ||||
| @@ -434,8 +434,8 @@ void FAR *out_desc; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| 	    /* handle error breaks in while */ | ||||
| 	    if (state->mode == BAD) break; | ||||
|             /* handle error breaks in while */ | ||||
|             if (state->mode == BAD) break; | ||||
|  | ||||
|             /* build code tables */ | ||||
|             state->next = state->codes; | ||||
|   | ||||
| @@ -109,6 +109,7 @@ z_streamp strm; | ||||
|     state = (struct inflate_state FAR *)strm->state; | ||||
|     strm->total_in = strm->total_out = state->total = 0; | ||||
|     strm->msg = Z_NULL; | ||||
|     strm->adler = 1;        /* to support ill-conceived Java test suite */ | ||||
|     state->mode = HEAD; | ||||
|     state->last = 0; | ||||
|     state->havedict = 0; | ||||
| @@ -861,8 +862,8 @@ int flush; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| 	    /* handle error breaks in while */ | ||||
| 	    if (state->mode == BAD) break; | ||||
|             /* handle error breaks in while */ | ||||
|             if (state->mode == BAD) break; | ||||
|  | ||||
|             /* build code tables */ | ||||
|             state->next = state->codes; | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| #define MAXBITS 15 | ||||
|  | ||||
| const char inflate_copyright[] = | ||||
|    " inflate 1.2.1.2 Copyright 1995-2004 Mark Adler "; | ||||
|    " inflate 1.2.2 Copyright 1995-2004 Mark Adler "; | ||||
| /* | ||||
|   If you use the zlib library in a product, an acknowledgment is welcome | ||||
|   in the documentation of your product. If for some reason you cannot | ||||
| @@ -62,7 +62,7 @@ unsigned short FAR *work; | ||||
|         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; | ||||
|     static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | ||||
|         16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, | ||||
|         19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 194}; | ||||
|         19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 198}; | ||||
|     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ | ||||
|         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, | ||||
|         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| This directory contains files that have not been updated for zlib 1.2.1 | ||||
| This directory contains files that have not been updated for zlib 1.2.x | ||||
|  | ||||
| (Volunteers are encouraged to help clean this up.  Thanks.) | ||||
|   | ||||
| @@ -418,7 +418,73 @@ SOURCE=..\..\win32\zlib1.rc | ||||
| # Begin Source File | ||||
|  | ||||
| SOURCE=..\..\contrib\masmx86\gvmat32.asm | ||||
|  | ||||
| !IF  "$(CFG)" == "zlib - Win32 DLL Release" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Release" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_DLL_ASM_Release | ||||
| InputPath=..\..\contrib\masmx86\gvmat32.asm | ||||
| InputName=gvmat32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_DLL_ASM_Debug | ||||
| InputPath=..\..\contrib\masmx86\gvmat32.asm | ||||
| InputName=gvmat32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_LIB_ASM_Release | ||||
| InputPath=..\..\contrib\masmx86\gvmat32.asm | ||||
| InputName=gvmat32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_LIB_ASM_Debug | ||||
| InputPath=..\..\contrib\masmx86\gvmat32.asm | ||||
| InputName=gvmat32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ENDIF  | ||||
|  | ||||
| # End Source File | ||||
| # Begin Source File | ||||
|  | ||||
| @@ -466,11 +532,6 @@ SOURCE=..\..\contrib\masmx86\gvmat32c.c | ||||
| # Begin Source File | ||||
|  | ||||
| SOURCE=..\..\contrib\masmx86\inffas32.asm | ||||
| # PROP Exclude_From_Build 1 | ||||
| # End Source File | ||||
| # Begin Source File | ||||
|  | ||||
| SOURCE=..\..\contrib\masmx86\gvmat32.obj | ||||
|  | ||||
| !IF  "$(CFG)" == "zlib - Win32 DLL Release" | ||||
|  | ||||
| @@ -482,8 +543,28 @@ SOURCE=..\..\contrib\masmx86\gvmat32.obj | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Release" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_DLL_ASM_Release | ||||
| InputPath=..\..\contrib\masmx86\inffas32.asm | ||||
| InputName=inffas32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_DLL_ASM_Debug | ||||
| InputPath=..\..\contrib\masmx86\inffas32.asm | ||||
| InputName=inffas32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
| @@ -494,39 +575,28 @@ SOURCE=..\..\contrib\masmx86\gvmat32.obj | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release" | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug" | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_LIB_ASM_Release | ||||
| InputPath=..\..\contrib\masmx86\inffas32.asm | ||||
| InputName=inffas32 | ||||
|  | ||||
| !ENDIF  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Source File | ||||
| # Begin Source File | ||||
|  | ||||
| SOURCE=..\..\contrib\masmx86\inffas32.obj | ||||
|  | ||||
| !IF  "$(CFG)" == "zlib - Win32 DLL Release" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Release" | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug" | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug" | ||||
|  | ||||
| # PROP Exclude_From_Build 1 | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release" | ||||
| # End Custom Build | ||||
|  | ||||
| !ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug" | ||||
|  | ||||
| # Begin Custom Build - Assembling... | ||||
| IntDir=.\Win32_LIB_ASM_Debug | ||||
| InputPath=..\..\contrib\masmx86\inffas32.asm | ||||
| InputName=inffas32 | ||||
|  | ||||
| "$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | ||||
| 	ml /nologo /c /Cx /coff /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)" | ||||
|  | ||||
| # End Custom Build | ||||
|  | ||||
| !ENDIF  | ||||
|  | ||||
| # End Source File | ||||
|   | ||||
| @@ -25,10 +25,10 @@ | ||||
|       <QPG:Files> | ||||
|          <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/> | ||||
|          <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/> | ||||
|          <QPG:Add file="../libz.so.1.2.1.2" install="/opt/lib/" user="root:bin" permission="644"/> | ||||
|          <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.1.2"/> | ||||
|          <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.1.2"/> | ||||
|          <QPG:Add file="../libz.so.1.2.1.2" install="/opt/lib/" component="slib"/> | ||||
|          <QPG:Add file="../libz.so.1.2.2" install="/opt/lib/" user="root:bin" permission="644"/> | ||||
|          <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.2"/> | ||||
|          <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.2"/> | ||||
|          <QPG:Add file="../libz.so.1.2.2" install="/opt/lib/" component="slib"/> | ||||
|       </QPG:Files> | ||||
|  | ||||
|       <QPG:PackageFilter> | ||||
| @@ -63,7 +63,7 @@ | ||||
|             </QPM:ProductDescription> | ||||
|  | ||||
|             <QPM:ReleaseDescription> | ||||
|                <QPM:ReleaseVersion>1.2.1.2</QPM:ReleaseVersion> | ||||
|                <QPM:ReleaseVersion>1.2.2</QPM:ReleaseVersion> | ||||
|                <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> | ||||
|                <QPM:ReleaseStability>Stable</QPM:ReleaseStability> | ||||
|                <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> | ||||
|   | ||||
| @@ -175,7 +175,7 @@ in the zlib distribution, or at the following location: | ||||
|     zlib in other programming languages.  Some of them, like Ada | ||||
|     (GNAT) and Fortran (GNU G77), have C bindings implemented | ||||
|     initially on Unix, and relying on the C calling convention. | ||||
|     On the other hand, the pre- .NET versions of Microsoft Visual | ||||
|     On the other hand, the pre- .Net versions of Microsoft Visual | ||||
|     Basic require STDCALL, while Borland Delphi prefers, although | ||||
|     it does not require, FASTCALL. | ||||
|  | ||||
| @@ -203,13 +203,11 @@ in the zlib distribution, or at the following location: | ||||
|     zlib distribution. | ||||
|  | ||||
|  | ||||
|  8. I need a DLL for my Microsoft .NET project.  What can I do? | ||||
|  8. I need to use zlib in my Microsoft .Net project.  What can I | ||||
|     do? | ||||
|  | ||||
|   - We did not implement a COM wrapper around zlib, so you will | ||||
|     have to develop it yourself, or to get it from somewhere else. | ||||
|  | ||||
|     If you would be so generous as to contribute such a wrapper, | ||||
|     we would like to include it in a future zlib version. | ||||
|   - Henrik Ravn has contributed a .Net wrapper around zlib.  Look | ||||
|     into contrib/dotzlib/, inside the zlib distribution. | ||||
|  | ||||
|  | ||||
|  9. If my application uses ZLIB1.DLL, should I link it to | ||||
|   | ||||
							
								
								
									
										3
									
								
								win32/VisualC.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								win32/VisualC.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
|  | ||||
| To build zlib using the Microsoft Visual C++ environment, | ||||
| use the appropriate project from the projects/ directory. | ||||
| @@ -5,8 +5,8 @@ VS_VERSION_INFO		VERSIONINFO | ||||
| #else | ||||
| VS_VERSION_INFO		VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE | ||||
| #endif | ||||
|   FILEVERSION		1,2,1,2 | ||||
|   PRODUCTVERSION	1,2,1,2 | ||||
|   FILEVERSION		1,2,2 | ||||
|   PRODUCTVERSION	1,2,2 | ||||
|   FILEFLAGSMASK		VS_FFI_FILEFLAGSMASK | ||||
| #ifdef _DEBUG | ||||
|   FILEFLAGS		1 | ||||
| @@ -23,12 +23,12 @@ BEGIN | ||||
|     //language ID = U.S. English, char set = Windows, Multilingual | ||||
|     BEGIN | ||||
|       VALUE "FileDescription",	"zlib data compression library\0" | ||||
|       VALUE "FileVersion",	"1.2.1.2\0" | ||||
|       VALUE "FileVersion",	"1.2.2\0" | ||||
|       VALUE "InternalName",	"zlib1.dll\0" | ||||
|       VALUE "LegalCopyright",	"(C) 1995-2004 Jean-loup Gailly & Mark Adler\0" | ||||
|       VALUE "OriginalFilename",	"zlib1.dll\0" | ||||
|       VALUE "ProductName",	"zlib\0" | ||||
|       VALUE "ProductVersion",	"1.2.1.2\0" | ||||
|       VALUE "ProductVersion",	"1.2.2\0" | ||||
|       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" | ||||
|     END | ||||
|   END | ||||
|   | ||||
							
								
								
									
										4
									
								
								zlib.3
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								zlib.3
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| .TH ZLIB 3 "9 September 2004" | ||||
| .TH ZLIB 3 "3 October 2004" | ||||
| .SH NAME | ||||
| zlib \- compression/decompression library | ||||
| .SH SYNOPSIS | ||||
| @@ -133,7 +133,7 @@ before asking for help. | ||||
| Send questions and/or comments to zlib@gzip.org, | ||||
| or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). | ||||
| .SH AUTHORS | ||||
| Version 1.2.1.2 | ||||
| Version 1.2.2 | ||||
| Copyright (C) 1995-2004 Jean-loup Gailly (jloup@gzip.org) | ||||
| and Mark Adler (madler@alumni.caltech.edu). | ||||
| .LP | ||||
|   | ||||
							
								
								
									
										24
									
								
								zlib.h
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								zlib.h
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| /* zlib.h -- interface of the 'zlib' general purpose compression library | ||||
|   version 1.2.1.2, September 9th, 2004 | ||||
|   version 1.2.2, October 3rd, 2004 | ||||
|  | ||||
|   Copyright (C) 1995-2004 Jean-loup Gailly and Mark Adler | ||||
|  | ||||
| @@ -37,8 +37,8 @@ | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #define ZLIB_VERSION "1.2.1.2" | ||||
| #define ZLIB_VERNUM 0x1212 | ||||
| #define ZLIB_VERSION "1.2.2" | ||||
| #define ZLIB_VERNUM 0x1220 | ||||
|  | ||||
| /* | ||||
|      The 'zlib' compression library provides in-memory compression and | ||||
| @@ -53,24 +53,22 @@ extern "C" { | ||||
|   application must provide more input and/or consume the output | ||||
|   (providing more output space) before each call. | ||||
|  | ||||
|      The compressed data format used by the in-memory functions is the zlib | ||||
|   format, which is a zlib wrapper documented in RFC 1950, wrapped around a | ||||
|   deflate stream, which is itself documented in RFC 1951. | ||||
|      The compressed data format used by default by the in-memory functions is | ||||
|   the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped | ||||
|   around a deflate stream, which is itself documented in RFC 1951. | ||||
|  | ||||
|      The library also supports reading and writing files in gzip (.gz) format | ||||
|   with an interface similar to that of stdio using the functions that start | ||||
|   with "gz".  The gzip format is different from the zlib format.  gzip is a | ||||
|   gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. | ||||
|  | ||||
|      This library can optionally read and write gzip streams in memory as well. | ||||
|  | ||||
|      The zlib format was designed to be compact and fast for use in memory | ||||
|   and on communications channels.  The gzip format was designed for single- | ||||
|   file compression on file systems, has a larger header than zlib to maintain | ||||
|   directory information, and uses a different, slower check method than zlib. | ||||
|  | ||||
|      This library does not provide any functions to write gzip files in memory. | ||||
|   However such functions could be easily written using zlib's deflate function, | ||||
|   the documentation in the gzip RFC, and the examples in gzio.c. | ||||
|  | ||||
|      The library does not install any signal handler. The decoder checks | ||||
|   the consistency of the compressed data, so the library should never | ||||
|   crash even in case of corrupted input. | ||||
| @@ -478,7 +476,8 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, | ||||
|    16 to windowBits to write a simple gzip header and trailer around the | ||||
|    compressed data instead of a zlib wrapper. The gzip header will have no | ||||
|    file name, no extra data, no comment, no modification time (set to zero), | ||||
|    no header crc, and the operating system will be set to 255 (unknown). | ||||
|    no header crc, and the operating system will be set to 255 (unknown).  If a | ||||
|    gzip stream is being written, strm->adler is a crc32 instead of an adler32. | ||||
|  | ||||
|      The memLevel parameter specifies how much memory should be allocated | ||||
|    for the internal compression state. memLevel=1 uses minimum memory but | ||||
| @@ -649,7 +648,8 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, | ||||
|      windowBits can also be greater than 15 for optional gzip decoding. Add | ||||
|    32 to windowBits to enable zlib and gzip decoding with automatic header | ||||
|    detection, or add 16 to decode only the gzip format (the zlib format will | ||||
|    return a Z_DATA_ERROR). | ||||
|    return a Z_DATA_ERROR.  If a gzip stream is being decoded, strm->adler is | ||||
|    a crc32 instead of an adler32. | ||||
|  | ||||
|      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough | ||||
|    memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative | ||||
|   | ||||
		Reference in New Issue
	
	Block a user