Chameleon

Chameleon Svn Source Tree

Root/branches/meklortOld/i386/modules/KextPatcher/zutil.c

Source at commit 1146 created 12 years 10 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/* zutil.c -- target dependent utility functions for the compression library
2 * Copyright (C) 1995-2005, 2010 Jean-loup Gailly.
3 * For conditions of distribution and use, see copyright notice in zlib.h
4 */
5
6/* @(#) $Id$ */
7
8#include "zutil.h"
9
10extern void *calloc(size_t nmemb, size_t size);
11
12#ifndef NO_DUMMY_DECL
13struct internal_state {int dummy;}; /* for buggy compilers */
14#endif
15
16const char * const z_errmsg[10] = {
17"need dictionary", /* Z_NEED_DICT 2 */
18"stream end", /* Z_STREAM_END 1 */
19"", /* Z_OK 0 */
20"file error", /* Z_ERRNO (-1) */
21"stream error", /* Z_STREAM_ERROR (-2) */
22"data error", /* Z_DATA_ERROR (-3) */
23"insufficient memory", /* Z_MEM_ERROR (-4) */
24"buffer error", /* Z_BUF_ERROR (-5) */
25"incompatible version",/* Z_VERSION_ERROR (-6) */
26""};
27
28
29const char * ZEXPORT zlibVersion()
30{
31 return ZLIB_VERSION;
32}
33
34uLong ZEXPORT zlibCompileFlags()
35{
36 uLong flags;
37
38 flags = 0;
39 switch ((int)(sizeof(uInt))) {
40 case 2: break;
41 case 4: flags += 1; break;
42 case 8: flags += 2; break;
43 default: flags += 3;
44 }
45 switch ((int)(sizeof(uLong))) {
46 case 2: break;
47 case 4: flags += 1 << 2; break;
48 case 8: flags += 2 << 2; break;
49 default: flags += 3 << 2;
50 }
51 switch ((int)(sizeof(voidpf))) {
52 case 2: break;
53 case 4: flags += 1 << 4; break;
54 case 8: flags += 2 << 4; break;
55 default: flags += 3 << 4;
56 }
57 switch ((int)(sizeof(z_off_t))) {
58 case 2: break;
59 case 4: flags += 1 << 6; break;
60 case 8: flags += 2 << 6; break;
61 default: flags += 3 << 6;
62 }
63#ifdef DEBUG
64 flags += 1 << 8;
65#endif
66#if defined(ASMV) || defined(ASMINF)
67 flags += 1 << 9;
68#endif
69#ifdef ZLIB_WINAPI
70 flags += 1 << 10;
71#endif
72#ifdef BUILDFIXED
73 flags += 1 << 12;
74#endif
75#ifdef DYNAMIC_CRC_TABLE
76 flags += 1 << 13;
77#endif
78#ifdef NO_GZCOMPRESS
79 flags += 1L << 16;
80#endif
81#ifdef NO_GZIP
82 flags += 1L << 17;
83#endif
84#ifdef PKZIP_BUG_WORKAROUND
85 flags += 1L << 20;
86#endif
87#ifdef FASTEST
88 flags += 1L << 21;
89#endif
90#ifdef STDC
91# ifdef NO_vsnprintf
92 flags += 1L << 25;
93# ifdef HAS_vsprintf_void
94 flags += 1L << 26;
95# endif
96# else
97# ifdef HAS_vsnprintf_void
98 flags += 1L << 26;
99# endif
100# endif
101#else
102 flags += 1L << 24;
103# ifdef NO_snprintf
104 flags += 1L << 25;
105# ifdef HAS_sprintf_void
106 flags += 1L << 26;
107# endif
108# else
109# ifdef HAS_snprintf_void
110 flags += 1L << 26;
111# endif
112# endif
113#endif
114 return flags;
115}
116
117#ifdef DEBUG
118
119# ifndef verbose
120# define verbose 0
121# endif
122int ZLIB_INTERNAL z_verbose = verbose;
123
124void ZLIB_INTERNAL z_error (m)
125 char *m;
126{
127 fprintf(stderr, "%s\n", m);
128 exit(1);
129}
130#endif
131
132/* exported to allow conversion of error code to string for compress() and
133 * uncompress()
134 */
135const char * ZEXPORT zError(err)
136 int err;
137{
138 return ERR_MSG(err);
139}
140
141#if defined(_WIN32_WCE)
142 /* The Microsoft C Run-Time Library for Windows CE doesn't have
143 * errno. We define it as a global variable to simplify porting.
144 * Its value is always 0 and should not be used.
145 */
146 int errno = 0;
147#endif
148
149#ifndef HAVE_MEMCPY
150
151void ZLIB_INTERNAL zmemcpy(dest, source, len)
152 Bytef* dest;
153 const Bytef* source;
154 uInt len;
155{
156 if (len == 0) return;
157 do {
158 *dest++ = *source++; /* ??? to be unrolled */
159 } while (--len != 0);
160}
161
162int ZLIB_INTERNAL zmemcmp(s1, s2, len)
163 const Bytef* s1;
164 const Bytef* s2;
165 uInt len;
166{
167 uInt j;
168
169 for (j = 0; j < len; j++) {
170 if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
171 }
172 return 0;
173}
174
175void ZLIB_INTERNAL zmemzero(dest, len)
176 Bytef* dest;
177 uInt len;
178{
179 if (len == 0) return;
180 do {
181 *dest++ = 0; /* ??? to be unrolled */
182 } while (--len != 0);
183}
184#endif
185
186
187#ifdef SYS16BIT
188
189#ifdef __TURBOC__
190/* Turbo C in 16-bit mode */
191
192# define MY_ZCALLOC
193
194/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
195 * and farmalloc(64K) returns a pointer with an offset of 8, so we
196 * must fix the pointer. Warning: the pointer must be put back to its
197 * original form in order to free it, use zcfree().
198 */
199
200#define MAX_PTR 10
201/* 10*64K = 640K */
202
203local int next_ptr = 0;
204
205typedef struct ptr_table_s {
206 voidpf org_ptr;
207 voidpf new_ptr;
208} ptr_table;
209
210local ptr_table table[MAX_PTR];
211/* This table is used to remember the original form of pointers
212 * to large buffers (64K). Such pointers are normalized with a zero offset.
213 * Since MSDOS is not a preemptive multitasking OS, this table is not
214 * protected from concurrent access. This hack doesn't work anyway on
215 * a protected system like OS/2. Use Microsoft C instead.
216 */
217
218voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
219{
220 voidpf buf = opaque; /* just to make some compilers happy */
221 ulg bsize = (ulg)items*size;
222
223 /* If we allocate less than 65520 bytes, we assume that farmalloc
224 * will return a usable pointer which doesn't have to be normalized.
225 */
226 if (bsize < 65520L) {
227 buf = farmalloc(bsize);
228 if (*(ush*)&buf != 0) return buf;
229 } else {
230 buf = farmalloc(bsize + 16L);
231 }
232 if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
233 table[next_ptr].org_ptr = buf;
234
235 /* Normalize the pointer to seg:0 */
236 *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
237 *(ush*)&buf = 0;
238 table[next_ptr++].new_ptr = buf;
239 return buf;
240}
241
242void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
243{
244 int n;
245 if (*(ush*)&ptr != 0) { /* object < 64K */
246 farfree(ptr);
247 return;
248 }
249 /* Find the original pointer */
250 for (n = 0; n < next_ptr; n++) {
251 if (ptr != table[n].new_ptr) continue;
252
253 farfree(table[n].org_ptr);
254 while (++n < next_ptr) {
255 table[n-1] = table[n];
256 }
257 next_ptr--;
258 return;
259 }
260 ptr = opaque; /* just to make some compilers happy */
261 Assert(0, "zcfree: ptr not found");
262}
263
264#endif /* __TURBOC__ */
265
266
267#ifdef M_I86
268/* Microsoft C in 16-bit mode */
269
270# define MY_ZCALLOC
271
272#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
273# define _halloc halloc
274# define _hfree hfree
275#endif
276
277voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
278{
279 if (opaque) opaque = 0; /* to make compiler happy */
280 return _halloc((long)items, size);
281}
282
283void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
284{
285 if (opaque) opaque = 0; /* to make compiler happy */
286 _hfree(ptr);
287}
288
289#endif /* M_I86 */
290
291#endif /* SYS16BIT */
292
293
294#ifndef MY_ZCALLOC /* Any system without a special alloc function */
295
296#ifndef STDC
297//extern voidp malloc OF((uInt size));
298//extern voidp calloc OF((uInt items, uInt size));
299//extern void free OF((voidpf ptr));
300#endif
301
302voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
303 voidpf opaque;
304 unsigned items;
305 unsigned size;
306{
307 if (opaque) items += size - size; /* make compiler happy */
308 return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
309 (voidpf)calloc(items, size);
310}
311
312void ZLIB_INTERNAL zcfree (opaque, ptr)
313 voidpf opaque;
314 voidpf ptr;
315{
316 free(ptr);
317 if (opaque) return; /* make compiler happy */
318}
319
320#endif /* MY_ZCALLOC */
321

Archive Download this file

Revision: 1146