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