a3dc7b3f48
hondacrx: - Initial commit: Switch to .Net Core 2.0 - Fix build and removed not needed files Fabi: - Updated solution platforms. - Changed folder structure. - Change library target framework to netstandard2.0. - Updated solution platforms again... - Removed windows specific kernel32 function usage (Ctrl-C handler).
106 lines
3.7 KiB
C#
106 lines
3.7 KiB
C#
// zutil.cs -- target dependent utility functions for the compression library
|
|
// Copyright (C) 1995-2005, 2010 Jean-loup Gailly.
|
|
// Copyright (C) 2007-2011 by the Authors
|
|
// For conditions of distribution and use, see copyright notice in License.txt
|
|
|
|
using System;
|
|
|
|
namespace Framework.IO
|
|
{
|
|
public static partial class ZLib
|
|
{
|
|
private const int OS_CODE=0x0b;
|
|
|
|
static readonly string[] z_errmsg=new string[9]
|
|
{
|
|
"need dictionary", // Z_NEED_DICT 2
|
|
"stream end", // Z_STREAM_END 1
|
|
"", // Z_OK 0
|
|
"file error", // Z_ERRNO -1
|
|
"stream error", // Z_STREAM_ERROR -2
|
|
"data error", // Z_DATA_ERROR -3
|
|
"insufficient memory", // Z_MEM_ERROR -4
|
|
"buffer error", // Z_BUF_ERROR -5
|
|
"incompatible version" // Z_VERSION_ERROR -6
|
|
};
|
|
|
|
// =========================================================================
|
|
|
|
// The application can compare zlibVersion and ZLIB_VERSION for consistency.
|
|
// If the first character differs, the library code actually used is
|
|
// not compatible with the zlib.h header file used by the application.
|
|
// This check is automatically made by deflateInit and inflateInit.
|
|
|
|
public static string zlibVersion()
|
|
{
|
|
return ZLIB_VERSION;
|
|
}
|
|
|
|
// =========================================================================
|
|
|
|
// Return flags indicating compile-time options.
|
|
//
|
|
// Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
|
|
// 1.0: size of ulong
|
|
// 3.2: size of uint
|
|
// 5.4: size of void* (pointer)
|
|
// 7.6: size of int
|
|
//
|
|
//Compiler, assembler, and debug options:
|
|
// (8: DEBUG)
|
|
// (9: ASMV or ASMINF -- use ASM code [not used in this port])
|
|
// (10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention [not used in this port])
|
|
// 11: 0 (reserved)
|
|
//
|
|
//One-time table building (smaller code, but not thread-safe if true):
|
|
// (12: BUILDFIXED -- build static block decoding tables when needed [not used in this port])
|
|
// (13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed [not used in this port])
|
|
// 14,15: 0 (reserved)
|
|
//
|
|
//Library content (indicates missing functionality):
|
|
// 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking deflate code when not needed)
|
|
// 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect and decode gzip streams (to avoid linking crc code)
|
|
// 18-19: 0 (reserved)
|
|
//
|
|
//Operation variations (changes in library functionality):
|
|
// (20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate [not used in this port])
|
|
// (21: FASTEST -- deflate algorithm with only one, lowest compression level [not used in this port])
|
|
// 22,23: 0 (reserved)
|
|
//
|
|
//The sprintf variant used by gzprintf (zero is best):
|
|
// (24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format [not used in this port])
|
|
// (25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! [not used in this port])
|
|
// (26: 0 = returns value, 1 = void -- 1 means inferred string length returned [not used in this port])
|
|
//
|
|
//Remainder:
|
|
// 27-31: 0 (reserved)
|
|
|
|
public static uint zlibCompileFlags()
|
|
{
|
|
uint flags=2;
|
|
flags+=1<<2;
|
|
|
|
switch(IntPtr.Size)
|
|
{
|
|
case 4: flags+=1<<4; break;
|
|
case 8: flags+=2<<4; break;
|
|
default: flags+=3<<4; break;
|
|
}
|
|
|
|
flags+=1<<6;
|
|
|
|
return flags;
|
|
}
|
|
|
|
// =========================================================================
|
|
|
|
// exported to allow conversion of error code to string for compress() and uncompress()
|
|
public static string zError(int err)
|
|
{
|
|
if(err<-6||err>2) throw new ArgumentOutOfRangeException("err", "must be -6<=err<=2");
|
|
|
|
return z_errmsg[2-err];
|
|
}
|
|
}
|
|
}
|