xref: /dflybsd-src/sbin/hammer2/zlib/hammer2_zlib_zutil.c (revision 3aa7d58aaff6ab8ddbde281fd648e7697e72a93a)
1*3aa7d58aSMatthew Dillon /* zutil.c -- target dependent utility functions for the compression library
2*3aa7d58aSMatthew Dillon  * Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly.
3*3aa7d58aSMatthew Dillon  * For conditions of distribution and use, see copyright notice in zlib.h
4*3aa7d58aSMatthew Dillon  */
5*3aa7d58aSMatthew Dillon 
6*3aa7d58aSMatthew Dillon /* @(#) $Id$ */
7*3aa7d58aSMatthew Dillon 
8*3aa7d58aSMatthew Dillon #include "hammer2_zlib_zutil.h"
9*3aa7d58aSMatthew Dillon 
10*3aa7d58aSMatthew Dillon #ifndef NO_DUMMY_DECL
11*3aa7d58aSMatthew Dillon struct internal_state      {int dummy;}; /* for buggy compilers */
12*3aa7d58aSMatthew Dillon #endif
13*3aa7d58aSMatthew Dillon 
14*3aa7d58aSMatthew Dillon z_const char * const z_errmsg[10] = {
15*3aa7d58aSMatthew Dillon "need dictionary",     /* Z_NEED_DICT       2  */
16*3aa7d58aSMatthew Dillon "stream end",          /* Z_STREAM_END      1  */
17*3aa7d58aSMatthew Dillon "",                    /* Z_OK              0  */
18*3aa7d58aSMatthew Dillon "file error",          /* Z_ERRNO         (-1) */
19*3aa7d58aSMatthew Dillon "stream error",        /* Z_STREAM_ERROR  (-2) */
20*3aa7d58aSMatthew Dillon "data error",          /* Z_DATA_ERROR    (-3) */
21*3aa7d58aSMatthew Dillon "insufficient memory", /* Z_MEM_ERROR     (-4) */
22*3aa7d58aSMatthew Dillon "buffer error",        /* Z_BUF_ERROR     (-5) */
23*3aa7d58aSMatthew Dillon "incompatible version",/* Z_VERSION_ERROR (-6) */
24*3aa7d58aSMatthew Dillon ""};
25*3aa7d58aSMatthew Dillon 
26*3aa7d58aSMatthew Dillon const char * zlibVersion(void);
27*3aa7d58aSMatthew Dillon uLong zlibCompileFlags(void);
28*3aa7d58aSMatthew Dillon const char * zError(int err);
29*3aa7d58aSMatthew Dillon 
30*3aa7d58aSMatthew Dillon const
31*3aa7d58aSMatthew Dillon char*
zlibVersion(void)32*3aa7d58aSMatthew Dillon zlibVersion(void)
33*3aa7d58aSMatthew Dillon {
34*3aa7d58aSMatthew Dillon     return ZLIB_VERSION;
35*3aa7d58aSMatthew Dillon }
36*3aa7d58aSMatthew Dillon 
37*3aa7d58aSMatthew Dillon uLong
zlibCompileFlags(void)38*3aa7d58aSMatthew Dillon zlibCompileFlags(void)
39*3aa7d58aSMatthew Dillon {
40*3aa7d58aSMatthew Dillon     uLong flags;
41*3aa7d58aSMatthew Dillon 
42*3aa7d58aSMatthew Dillon     flags = 0;
43*3aa7d58aSMatthew Dillon     switch ((int)(sizeof(uInt))) {
44*3aa7d58aSMatthew Dillon     case 2:     break;
45*3aa7d58aSMatthew Dillon     case 4:     flags += 1;     break;
46*3aa7d58aSMatthew Dillon     case 8:     flags += 2;     break;
47*3aa7d58aSMatthew Dillon     default:    flags += 3;
48*3aa7d58aSMatthew Dillon     }
49*3aa7d58aSMatthew Dillon     switch ((int)(sizeof(uLong))) {
50*3aa7d58aSMatthew Dillon     case 2:     break;
51*3aa7d58aSMatthew Dillon     case 4:     flags += 1 << 2;        break;
52*3aa7d58aSMatthew Dillon     case 8:     flags += 2 << 2;        break;
53*3aa7d58aSMatthew Dillon     default:    flags += 3 << 2;
54*3aa7d58aSMatthew Dillon     }
55*3aa7d58aSMatthew Dillon     switch ((int)(sizeof(voidpf))) {
56*3aa7d58aSMatthew Dillon     case 2:     break;
57*3aa7d58aSMatthew Dillon     case 4:     flags += 1 << 4;        break;
58*3aa7d58aSMatthew Dillon     case 8:     flags += 2 << 4;        break;
59*3aa7d58aSMatthew Dillon     default:    flags += 3 << 4;
60*3aa7d58aSMatthew Dillon     }
61*3aa7d58aSMatthew Dillon     switch ((int)(sizeof(z_off_t))) {
62*3aa7d58aSMatthew Dillon     case 2:     break;
63*3aa7d58aSMatthew Dillon     case 4:     flags += 1 << 6;        break;
64*3aa7d58aSMatthew Dillon     case 8:     flags += 2 << 6;        break;
65*3aa7d58aSMatthew Dillon     default:    flags += 3 << 6;
66*3aa7d58aSMatthew Dillon     }
67*3aa7d58aSMatthew Dillon #ifdef H2_ZLIB_DEBUG
68*3aa7d58aSMatthew Dillon     flags += 1 << 8;
69*3aa7d58aSMatthew Dillon #endif
70*3aa7d58aSMatthew Dillon #if defined(ASMV) || defined(ASMINF)
71*3aa7d58aSMatthew Dillon     flags += 1 << 9;
72*3aa7d58aSMatthew Dillon #endif
73*3aa7d58aSMatthew Dillon #ifdef ZLIB_WINAPI
74*3aa7d58aSMatthew Dillon     flags += 1 << 10;
75*3aa7d58aSMatthew Dillon #endif
76*3aa7d58aSMatthew Dillon #ifdef BUILDFIXED
77*3aa7d58aSMatthew Dillon     flags += 1 << 12;
78*3aa7d58aSMatthew Dillon #endif
79*3aa7d58aSMatthew Dillon #ifdef DYNAMIC_CRC_TABLE
80*3aa7d58aSMatthew Dillon     flags += 1 << 13;
81*3aa7d58aSMatthew Dillon #endif
82*3aa7d58aSMatthew Dillon #ifdef NO_GZCOMPRESS
83*3aa7d58aSMatthew Dillon     flags += 1L << 16;
84*3aa7d58aSMatthew Dillon #endif
85*3aa7d58aSMatthew Dillon #ifdef NO_GZIP
86*3aa7d58aSMatthew Dillon     flags += 1L << 17;
87*3aa7d58aSMatthew Dillon #endif
88*3aa7d58aSMatthew Dillon #ifdef PKZIP_BUG_WORKAROUND
89*3aa7d58aSMatthew Dillon     flags += 1L << 20;
90*3aa7d58aSMatthew Dillon #endif
91*3aa7d58aSMatthew Dillon #ifdef FASTEST
92*3aa7d58aSMatthew Dillon     flags += 1L << 21;
93*3aa7d58aSMatthew Dillon #endif
94*3aa7d58aSMatthew Dillon #if defined(STDC) || defined(Z_HAVE_STDARG_H)
95*3aa7d58aSMatthew Dillon #  ifdef NO_vsnprintf
96*3aa7d58aSMatthew Dillon     flags += 1L << 25;
97*3aa7d58aSMatthew Dillon #    ifdef HAS_vsprintf_void
98*3aa7d58aSMatthew Dillon     flags += 1L << 26;
99*3aa7d58aSMatthew Dillon #    endif
100*3aa7d58aSMatthew Dillon #  else
101*3aa7d58aSMatthew Dillon #    ifdef HAS_vsnprintf_void
102*3aa7d58aSMatthew Dillon     flags += 1L << 26;
103*3aa7d58aSMatthew Dillon #    endif
104*3aa7d58aSMatthew Dillon #  endif
105*3aa7d58aSMatthew Dillon #else
106*3aa7d58aSMatthew Dillon     flags += 1L << 24;
107*3aa7d58aSMatthew Dillon #  ifdef NO_snprintf
108*3aa7d58aSMatthew Dillon     flags += 1L << 25;
109*3aa7d58aSMatthew Dillon #    ifdef HAS_sprintf_void
110*3aa7d58aSMatthew Dillon     flags += 1L << 26;
111*3aa7d58aSMatthew Dillon #    endif
112*3aa7d58aSMatthew Dillon #  else
113*3aa7d58aSMatthew Dillon #    ifdef HAS_snprintf_void
114*3aa7d58aSMatthew Dillon     flags += 1L << 26;
115*3aa7d58aSMatthew Dillon #    endif
116*3aa7d58aSMatthew Dillon #  endif
117*3aa7d58aSMatthew Dillon #endif
118*3aa7d58aSMatthew Dillon     return flags;
119*3aa7d58aSMatthew Dillon }
120*3aa7d58aSMatthew Dillon 
121*3aa7d58aSMatthew Dillon #ifdef H2_ZLIB_DEBUG
122*3aa7d58aSMatthew Dillon 
123*3aa7d58aSMatthew Dillon #  ifndef verbose
124*3aa7d58aSMatthew Dillon #    define verbose 0
125*3aa7d58aSMatthew Dillon #  endif
126*3aa7d58aSMatthew Dillon int ZLIB_INTERNAL z_verbose = verbose;
127*3aa7d58aSMatthew Dillon 
z_error(char * m)128*3aa7d58aSMatthew Dillon void ZLIB_INTERNAL z_error (char *m)
129*3aa7d58aSMatthew Dillon {
130*3aa7d58aSMatthew Dillon #if defined(_KERNEL)
131*3aa7d58aSMatthew Dillon     panic("h2 %s: %s", __func__, m);
132*3aa7d58aSMatthew Dillon #else
133*3aa7d58aSMatthew Dillon     fprintf(stderr, "%s\n", m);
134*3aa7d58aSMatthew Dillon     exit(1);
135*3aa7d58aSMatthew Dillon #endif
136*3aa7d58aSMatthew Dillon }
137*3aa7d58aSMatthew Dillon #endif
138*3aa7d58aSMatthew Dillon 
139*3aa7d58aSMatthew Dillon /* exported to allow conversion of error code to string for compress() and
140*3aa7d58aSMatthew Dillon  * uncompress()
141*3aa7d58aSMatthew Dillon  */
142*3aa7d58aSMatthew Dillon const
143*3aa7d58aSMatthew Dillon char*
zError(int err)144*3aa7d58aSMatthew Dillon zError(int err)
145*3aa7d58aSMatthew Dillon {
146*3aa7d58aSMatthew Dillon     return ERR_MSG(err);
147*3aa7d58aSMatthew Dillon }
148*3aa7d58aSMatthew Dillon 
149*3aa7d58aSMatthew Dillon #ifndef HAVE_MEMCPY
150*3aa7d58aSMatthew Dillon 
151*3aa7d58aSMatthew Dillon void
152*3aa7d58aSMatthew Dillon ZLIB_INTERNAL
zmemcpy(Bytef * dest,const Bytef * source,uInt len)153*3aa7d58aSMatthew Dillon zmemcpy(Bytef* dest, const Bytef* source, uInt  len)
154*3aa7d58aSMatthew Dillon {
155*3aa7d58aSMatthew Dillon     if (len == 0) return;
156*3aa7d58aSMatthew Dillon     do {
157*3aa7d58aSMatthew Dillon         *dest++ = *source++; /* ??? to be unrolled */
158*3aa7d58aSMatthew Dillon     } while (--len != 0);
159*3aa7d58aSMatthew Dillon }
160*3aa7d58aSMatthew Dillon 
161*3aa7d58aSMatthew Dillon int
162*3aa7d58aSMatthew Dillon ZLIB_INTERNAL
zmemcmp(const Bytef * s1,const Bytef * s2,uInt len)163*3aa7d58aSMatthew Dillon zmemcmp(const Bytef* s1, const Bytef* s2, uInt len)
164*3aa7d58aSMatthew Dillon {
165*3aa7d58aSMatthew Dillon     uInt j;
166*3aa7d58aSMatthew Dillon 
167*3aa7d58aSMatthew Dillon     for (j = 0; j < len; j++) {
168*3aa7d58aSMatthew Dillon         if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
169*3aa7d58aSMatthew Dillon     }
170*3aa7d58aSMatthew Dillon     return 0;
171*3aa7d58aSMatthew Dillon }
172*3aa7d58aSMatthew Dillon 
173*3aa7d58aSMatthew Dillon void
174*3aa7d58aSMatthew Dillon ZLIB_INTERNAL
zmemzero(Bytef * dest,uInt len)175*3aa7d58aSMatthew Dillon zmemzero(Bytef* dest, uInt len)
176*3aa7d58aSMatthew Dillon {
177*3aa7d58aSMatthew Dillon     if (len == 0) return;
178*3aa7d58aSMatthew Dillon     do {
179*3aa7d58aSMatthew Dillon         *dest++ = 0;  /* ??? to be unrolled */
180*3aa7d58aSMatthew Dillon     } while (--len != 0);
181*3aa7d58aSMatthew Dillon }
182*3aa7d58aSMatthew Dillon #endif
183