core/zlib/zutil.c
branchsourcemod-1.1.0
changeset 2283 03a67e41afbc
parent 1951 c7b4237fff50
child 2287 017a725c9d17
     1.1 --- a/core/zlib/zutil.c	Fri Mar 28 06:21:34 2008 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,318 +0,0 @@
     1.4 -/* zutil.c -- target dependent utility functions for the compression library
     1.5 - * Copyright (C) 1995-2005 Jean-loup Gailly.
     1.6 - * For conditions of distribution and use, see copyright notice in zlib.h
     1.7 - */
     1.8 -
     1.9 -/* @(#) $Id$ */
    1.10 -
    1.11 -#include "zutil.h"
    1.12 -
    1.13 -#ifndef NO_DUMMY_DECL
    1.14 -struct internal_state      {int dummy;}; /* for buggy compilers */
    1.15 -#endif
    1.16 -
    1.17 -const char * const z_errmsg[10] = {
    1.18 -"need dictionary",     /* Z_NEED_DICT       2  */
    1.19 -"stream end",          /* Z_STREAM_END      1  */
    1.20 -"",                    /* Z_OK              0  */
    1.21 -"file error",          /* Z_ERRNO         (-1) */
    1.22 -"stream error",        /* Z_STREAM_ERROR  (-2) */
    1.23 -"data error",          /* Z_DATA_ERROR    (-3) */
    1.24 -"insufficient memory", /* Z_MEM_ERROR     (-4) */
    1.25 -"buffer error",        /* Z_BUF_ERROR     (-5) */
    1.26 -"incompatible version",/* Z_VERSION_ERROR (-6) */
    1.27 -""};
    1.28 -
    1.29 -
    1.30 -const char * ZEXPORT zlibVersion()
    1.31 -{
    1.32 -    return ZLIB_VERSION;
    1.33 -}
    1.34 -
    1.35 -uLong ZEXPORT zlibCompileFlags()
    1.36 -{
    1.37 -    uLong flags;
    1.38 -
    1.39 -    flags = 0;
    1.40 -    switch (sizeof(uInt)) {
    1.41 -    case 2:     break;
    1.42 -    case 4:     flags += 1;     break;
    1.43 -    case 8:     flags += 2;     break;
    1.44 -    default:    flags += 3;
    1.45 -    }
    1.46 -    switch (sizeof(uLong)) {
    1.47 -    case 2:     break;
    1.48 -    case 4:     flags += 1 << 2;        break;
    1.49 -    case 8:     flags += 2 << 2;        break;
    1.50 -    default:    flags += 3 << 2;
    1.51 -    }
    1.52 -    switch (sizeof(voidpf)) {
    1.53 -    case 2:     break;
    1.54 -    case 4:     flags += 1 << 4;        break;
    1.55 -    case 8:     flags += 2 << 4;        break;
    1.56 -    default:    flags += 3 << 4;
    1.57 -    }
    1.58 -    switch (sizeof(z_off_t)) {
    1.59 -    case 2:     break;
    1.60 -    case 4:     flags += 1 << 6;        break;
    1.61 -    case 8:     flags += 2 << 6;        break;
    1.62 -    default:    flags += 3 << 6;
    1.63 -    }
    1.64 -#ifdef DEBUG
    1.65 -    flags += 1 << 8;
    1.66 -#endif
    1.67 -#if defined(ASMV) || defined(ASMINF)
    1.68 -    flags += 1 << 9;
    1.69 -#endif
    1.70 -#ifdef ZLIB_WINAPI
    1.71 -    flags += 1 << 10;
    1.72 -#endif
    1.73 -#ifdef BUILDFIXED
    1.74 -    flags += 1 << 12;
    1.75 -#endif
    1.76 -#ifdef DYNAMIC_CRC_TABLE
    1.77 -    flags += 1 << 13;
    1.78 -#endif
    1.79 -#ifdef NO_GZCOMPRESS
    1.80 -    flags += 1L << 16;
    1.81 -#endif
    1.82 -#ifdef NO_GZIP
    1.83 -    flags += 1L << 17;
    1.84 -#endif
    1.85 -#ifdef PKZIP_BUG_WORKAROUND
    1.86 -    flags += 1L << 20;
    1.87 -#endif
    1.88 -#ifdef FASTEST
    1.89 -    flags += 1L << 21;
    1.90 -#endif
    1.91 -#ifdef STDC
    1.92 -#  ifdef NO_vsnprintf
    1.93 -        flags += 1L << 25;
    1.94 -#    ifdef HAS_vsprintf_void
    1.95 -        flags += 1L << 26;
    1.96 -#    endif
    1.97 -#  else
    1.98 -#    ifdef HAS_vsnprintf_void
    1.99 -        flags += 1L << 26;
   1.100 -#    endif
   1.101 -#  endif
   1.102 -#else
   1.103 -        flags += 1L << 24;
   1.104 -#  ifdef NO_snprintf
   1.105 -        flags += 1L << 25;
   1.106 -#    ifdef HAS_sprintf_void
   1.107 -        flags += 1L << 26;
   1.108 -#    endif
   1.109 -#  else
   1.110 -#    ifdef HAS_snprintf_void
   1.111 -        flags += 1L << 26;
   1.112 -#    endif
   1.113 -#  endif
   1.114 -#endif
   1.115 -    return flags;
   1.116 -}
   1.117 -
   1.118 -#ifdef DEBUG
   1.119 -
   1.120 -#  ifndef verbose
   1.121 -#    define verbose 0
   1.122 -#  endif
   1.123 -int z_verbose = verbose;
   1.124 -
   1.125 -void z_error (m)
   1.126 -    char *m;
   1.127 -{
   1.128 -    fprintf(stderr, "%s\n", m);
   1.129 -    exit(1);
   1.130 -}
   1.131 -#endif
   1.132 -
   1.133 -/* exported to allow conversion of error code to string for compress() and
   1.134 - * uncompress()
   1.135 - */
   1.136 -const char * ZEXPORT zError(err)
   1.137 -    int err;
   1.138 -{
   1.139 -    return ERR_MSG(err);
   1.140 -}
   1.141 -
   1.142 -#if defined(_WIN32_WCE)
   1.143 -    /* The Microsoft C Run-Time Library for Windows CE doesn't have
   1.144 -     * errno.  We define it as a global variable to simplify porting.
   1.145 -     * Its value is always 0 and should not be used.
   1.146 -     */
   1.147 -    int errno = 0;
   1.148 -#endif
   1.149 -
   1.150 -#ifndef HAVE_MEMCPY
   1.151 -
   1.152 -void zmemcpy(dest, source, len)
   1.153 -    Bytef* dest;
   1.154 -    const Bytef* source;
   1.155 -    uInt  len;
   1.156 -{
   1.157 -    if (len == 0) return;
   1.158 -    do {
   1.159 -        *dest++ = *source++; /* ??? to be unrolled */
   1.160 -    } while (--len != 0);
   1.161 -}
   1.162 -
   1.163 -int zmemcmp(s1, s2, len)
   1.164 -    const Bytef* s1;
   1.165 -    const Bytef* s2;
   1.166 -    uInt  len;
   1.167 -{
   1.168 -    uInt j;
   1.169 -
   1.170 -    for (j = 0; j < len; j++) {
   1.171 -        if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
   1.172 -    }
   1.173 -    return 0;
   1.174 -}
   1.175 -
   1.176 -void zmemzero(dest, len)
   1.177 -    Bytef* dest;
   1.178 -    uInt  len;
   1.179 -{
   1.180 -    if (len == 0) return;
   1.181 -    do {
   1.182 -        *dest++ = 0;  /* ??? to be unrolled */
   1.183 -    } while (--len != 0);
   1.184 -}
   1.185 -#endif
   1.186 -
   1.187 -
   1.188 -#ifdef SYS16BIT
   1.189 -
   1.190 -#ifdef __TURBOC__
   1.191 -/* Turbo C in 16-bit mode */
   1.192 -
   1.193 -#  define MY_ZCALLOC
   1.194 -
   1.195 -/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
   1.196 - * and farmalloc(64K) returns a pointer with an offset of 8, so we
   1.197 - * must fix the pointer. Warning: the pointer must be put back to its
   1.198 - * original form in order to free it, use zcfree().
   1.199 - */
   1.200 -
   1.201 -#define MAX_PTR 10
   1.202 -/* 10*64K = 640K */
   1.203 -
   1.204 -local int next_ptr = 0;
   1.205 -
   1.206 -typedef struct ptr_table_s {
   1.207 -    voidpf org_ptr;
   1.208 -    voidpf new_ptr;
   1.209 -} ptr_table;
   1.210 -
   1.211 -local ptr_table table[MAX_PTR];
   1.212 -/* This table is used to remember the original form of pointers
   1.213 - * to large buffers (64K). Such pointers are normalized with a zero offset.
   1.214 - * Since MSDOS is not a preemptive multitasking OS, this table is not
   1.215 - * protected from concurrent access. This hack doesn't work anyway on
   1.216 - * a protected system like OS/2. Use Microsoft C instead.
   1.217 - */
   1.218 -
   1.219 -voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
   1.220 -{
   1.221 -    voidpf buf = opaque; /* just to make some compilers happy */
   1.222 -    ulg bsize = (ulg)items*size;
   1.223 -
   1.224 -    /* If we allocate less than 65520 bytes, we assume that farmalloc
   1.225 -     * will return a usable pointer which doesn't have to be normalized.
   1.226 -     */
   1.227 -    if (bsize < 65520L) {
   1.228 -        buf = farmalloc(bsize);
   1.229 -        if (*(ush*)&buf != 0) return buf;
   1.230 -    } else {
   1.231 -        buf = farmalloc(bsize + 16L);
   1.232 -    }
   1.233 -    if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
   1.234 -    table[next_ptr].org_ptr = buf;
   1.235 -
   1.236 -    /* Normalize the pointer to seg:0 */
   1.237 -    *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
   1.238 -    *(ush*)&buf = 0;
   1.239 -    table[next_ptr++].new_ptr = buf;
   1.240 -    return buf;
   1.241 -}
   1.242 -
   1.243 -void  zcfree (voidpf opaque, voidpf ptr)
   1.244 -{
   1.245 -    int n;
   1.246 -    if (*(ush*)&ptr != 0) { /* object < 64K */
   1.247 -        farfree(ptr);
   1.248 -        return;
   1.249 -    }
   1.250 -    /* Find the original pointer */
   1.251 -    for (n = 0; n < next_ptr; n++) {
   1.252 -        if (ptr != table[n].new_ptr) continue;
   1.253 -
   1.254 -        farfree(table[n].org_ptr);
   1.255 -        while (++n < next_ptr) {
   1.256 -            table[n-1] = table[n];
   1.257 -        }
   1.258 -        next_ptr--;
   1.259 -        return;
   1.260 -    }
   1.261 -    ptr = opaque; /* just to make some compilers happy */
   1.262 -    Assert(0, "zcfree: ptr not found");
   1.263 -}
   1.264 -
   1.265 -#endif /* __TURBOC__ */
   1.266 -
   1.267 -
   1.268 -#ifdef M_I86
   1.269 -/* Microsoft C in 16-bit mode */
   1.270 -
   1.271 -#  define MY_ZCALLOC
   1.272 -
   1.273 -#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
   1.274 -#  define _halloc  halloc
   1.275 -#  define _hfree   hfree
   1.276 -#endif
   1.277 -
   1.278 -voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
   1.279 -{
   1.280 -    if (opaque) opaque = 0; /* to make compiler happy */
   1.281 -    return _halloc((long)items, size);
   1.282 -}
   1.283 -
   1.284 -void  zcfree (voidpf opaque, voidpf ptr)
   1.285 -{
   1.286 -    if (opaque) opaque = 0; /* to make compiler happy */
   1.287 -    _hfree(ptr);
   1.288 -}
   1.289 -
   1.290 -#endif /* M_I86 */
   1.291 -
   1.292 -#endif /* SYS16BIT */
   1.293 -
   1.294 -
   1.295 -#ifndef MY_ZCALLOC /* Any system without a special alloc function */
   1.296 -
   1.297 -#ifndef STDC
   1.298 -extern voidp  malloc OF((uInt size));
   1.299 -extern voidp  calloc OF((uInt items, uInt size));
   1.300 -extern void   free   OF((voidpf ptr));
   1.301 -#endif
   1.302 -
   1.303 -voidpf zcalloc (opaque, items, size)
   1.304 -    voidpf opaque;
   1.305 -    unsigned items;
   1.306 -    unsigned size;
   1.307 -{
   1.308 -    if (opaque) items += size - size; /* make compiler happy */
   1.309 -    return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
   1.310 -                              (voidpf)calloc(items, size);
   1.311 -}
   1.312 -
   1.313 -void  zcfree (opaque, ptr)
   1.314 -    voidpf opaque;
   1.315 -    voidpf ptr;
   1.316 -{
   1.317 -    free(ptr);
   1.318 -    if (opaque) return; /* make compiler happy */
   1.319 -}
   1.320 -
   1.321 -#endif /* MY_ZCALLOC */