annotate packages/redboot/current/src/decompress.c @ 1959:81a7ecadf7d3

* src/decompress.c (zcfree): Remove unnecessary variable reinitialisation.
author asl
date Thu, 21 Apr 2005 18:39:28 +0000
parents d5f61a251ca3
children 74dbf4c3f2e1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
2 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
3 // decompress.c
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
4 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
5 // RedBoot decompress support
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
6 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
8 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
9 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
12 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
14 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
20 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
21 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
22 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
26 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
27 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
28 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
29 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
30 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
31 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
32 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
33 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
34 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
35 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
37 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
38 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
39 //####ECOSGPLCOPYRIGHTEND####
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
40 //==========================================================================
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
41 //#####DESCRIPTIONBEGIN####
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
42 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
43 // Author(s): jskov
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
44 // Contributors: jskov, gthomas, tkoeller
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
45 // Date: 2001-03-08
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
46 // Purpose:
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
47 // Description:
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
48 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
49 // This code is part of RedBoot (tm).
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
50 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
51 //####DESCRIPTIONEND####
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
52 //
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
53 //==========================================================================
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
54
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
55 #include <redboot.h>
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
56
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
57 #ifdef CYGPKG_COMPRESS_ZLIB
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
58 #include <cyg/compress/zlib.h>
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
59 static z_stream stream;
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
60 static bool stream_end;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
61
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
62 #define __ZLIB_MAGIC__ 0x5A4C4942 // 'ZLIB'
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
63
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
64 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
65 // Free memory [blocks] are stored as a linked list of "struct _block"
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
66 // The 'magic' is kept to insure that the block being freed is reasonable
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
67 //
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
68 // One of either next or size might be removable, if a sentinal block
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
69 // is placed at the end of the region at initialisation time.
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
70 struct _block {
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
71 int size; // always the total length of the block, including this header
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
72 long magic; // Must be __ZLIB_MAGIC__ if allocated and 0 if free
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
73 struct _block *next;
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
74 struct _block *prev;
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
75 };
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
76 static struct _block *memlist;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
77
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
78 #ifdef CYGOPT_REDBOOT_FIS_ZLIB_COMMON_BUFFER
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
79 # define ZLIB_COMPRESSION_OVERHEAD CYGNUM_REDBOOT_FIS_ZLIB_COMMON_BUFFER_SIZE
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
80 #else
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
81 # define ZLIB_COMPRESSION_OVERHEAD 0xC000
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
82 #endif
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
83 static void *zlib_workspace;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
84
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
85 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
86 // This function is run as part of RedBoot's initialization.
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
87 // It will allocate some memory from the "workspace" pool for
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
88 // use by the gzip/zlib routines. This allows the memory usage
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
89 // of RedBoot to be more finely controlled than if we simply
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
90 // used the generic 'malloc() from the heap' functionality.
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
91 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
92 static void
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
93 _zlib_init(void)
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
94 {
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
95 struct _block *bp;
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
96 #ifdef CYGOPT_REDBOOT_FIS_ZLIB_COMMON_BUFFER
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
97 zlib_workspace = fis_zlib_common_buffer;
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
98 #else
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
99 // Allocate some RAM for use by the gzip/zlib routines
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
100 workspace_end -= ZLIB_COMPRESSION_OVERHEAD;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
101 zlib_workspace = workspace_end;
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 210
diff changeset
102 #endif
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
103 bp = (struct _block *)zlib_workspace;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
104 memlist = bp;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
105 bp->next = bp->prev = 0;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
106 bp->size = ZLIB_COMPRESSION_OVERHEAD;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
107 bp->magic = 0;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
108 #ifdef DEBUG_ZLIB_MALLOC
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
109 show_memlist(__FUNCTION__);
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
110 #endif
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
111 }
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
112
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
113 RedBoot_init(_zlib_init, RedBoot_INIT_FIRST);
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
114
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
115 // #define DEBUG_ZLIB_MALLOC
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
116 #ifdef DEBUG_ZLIB_MALLOC
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
117 static void
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
118 show_memlist(char *when)
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
119 {
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
120 struct _block *bp = memlist;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
121
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
122 diag_printf("memory list after %s\n", when);
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
123 diag_printf(" --START--- --END----- --SIZE---- --PREV---- --NEXT---- TYPE-----\n");
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
124 while (bp != (struct _block *)0) {
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
125 diag_printf(" %08p-%08p 0x%08x %08p %08p %s\n", bp, (unsigned char *)bp+bp->size,
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
126 bp->size, bp->prev, bp->next, bp->magic == 0 ? "FREE" : "ALLOCATED" );
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
127 bp = bp->next;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
128 }
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
129 diag_printf("\n");
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
130 }
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
131 #endif
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
132
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
133 // Note: these have to be global and match the prototype used by the
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
134 // gzip/zlib package since we are exactly replacing them.
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
135
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
136 void
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
137 *zcalloc(void *opaque, unsigned int items, unsigned int size)
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
138 {
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
139 voidpf res = 0;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
140 int len = (items*size) + sizeof(struct _block);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
141 struct _block *bp = memlist;
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
142 struct _block *nbp;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
143
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
144 #ifdef DEBUG_ZLIB_MALLOC
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
145 /* do this here because when int is called output is not setup yet */
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
146 static int first_alloc = 1;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
147 if ( first_alloc ) {
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
148 show_memlist("initialization");
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
149 first_alloc = 0;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
150 }
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
151 #endif
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
152
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
153 // Simple, first-fit algorithm
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
154 while (bp) {
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
155 if (bp->magic == 0 && bp->size > len) {
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
156 nbp = (struct _block *)((char *)bp + len);
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
157 /* link new block into chain */
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
158 nbp->next = bp->next;
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
159 bp->next = nbp;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
160 nbp->prev = bp;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
161 /* split size between the two blocks */
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
162 nbp->size = bp->size - len;
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
163 bp->size = len;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
164 /* mark the new block as free */
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
165 nbp->magic = 0;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
166 /* mark allocated block as allocated */
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
167 bp->magic = __ZLIB_MAGIC__;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
168 res = bp +1;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
169 memset(res, 0, len - sizeof(struct _block));
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
170 break;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
171 }
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
172 bp = bp->next;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
173 }
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
174 #ifdef DEBUG_ZLIB_MALLOC
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
175 diag_printf("%s(0x%x,0x%x) = %p\n", __FUNCTION__, items, size, res);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
176 show_memlist(__FUNCTION__);
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
177 #endif
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
178 if ( res == NULL )
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
179 diag_printf("zcalloc: failed to allocate 0x%x items of 0x%x bytes == 0x%x bytes\n", items, size, len);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
180 return res;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
181 }
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
182
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
183 void
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
184 zcfree(void *opaque, void *ptr)
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
185 {
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
186 struct _block *bp;
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
187
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
188 if (!ptr) return; // Safety
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
189 bp = (struct _block *)((char *)ptr - sizeof(struct _block));
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
190 if (bp->magic != __ZLIB_MAGIC__) {
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
191 diag_printf("%s(%p) - invalid block\n", __FUNCTION__, ptr);
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
192 return;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
193 }
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
194
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
195 /* mark as free */
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
196 bp->magic = 0;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
197
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
198 #ifdef DEBUG_ZLIB_MALLOC
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
199 diag_printf("%s(%p) = 0x%x bytes\n", __FUNCTION__, ptr, bp->size);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
200 #endif
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
201
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
202 while(bp->next && bp->next->magic == 0) {
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
203 #ifdef DEBUG_ZLIB_MALLOC
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
204 diag_printf(" merging %08p and %08p (after)\n", bp, bp->next);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
205 #endif
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
206 bp->size += bp->next->size;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
207 bp->next = bp->next->next;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
208 }
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
209
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
210 while(bp->prev && bp->prev->magic == 0) {
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
211 #ifdef DEBUG_ZLIB_MALLOC
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
212 diag_printf(" merging %08p and %08p (before)\n", bp->prev, bp);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
213 #endif
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
214 bp->prev->size += bp->size;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
215 bp->prev->next = bp->next;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
216 bp = bp->prev;
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
217 }
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
218
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
219 #ifdef DEBUG_ZLIB_MALLOC
1420
9721661d7ecc Fixes to zlib decompression - from Ian Campbell
gthomas
parents: 474
diff changeset
220 show_memlist(__FUNCTION__);
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
221 #endif
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
222 }
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
223
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
224 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
225 // This function is called to initialize a gzip/zlib stream.
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
226 //
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
227 static int
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
228 gzip_init(_pipe_t* p)
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
229 {
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
230 int err;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
231
1421
170fbc1a5bbc Clean up memory pool initialization
gthomas
parents: 1420
diff changeset
232 // Note: this code used to [re]initialize the memory pool used
170fbc1a5bbc Clean up memory pool initialization
gthomas
parents: 1420
diff changeset
233 // by zlib. This is now done in _zlib_init(), but only once.
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
234 stream.zalloc = zcalloc;
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
235 stream.zfree = zcfree;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
236 stream.next_in = NULL;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
237 stream.avail_in = 0;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
238 stream.next_out = NULL;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
239 stream.avail_out = 0;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
240 err = inflateInit(&stream);
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
241 stream_end = false;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
242
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
243 return err;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
244 }
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
245
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
246 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
247 // This function is called during the decompression cycle to
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
248 // actually cause a buffer to be filled with uncompressed data.
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
249 //
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
250 static int
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
251 gzip_inflate(_pipe_t* p)
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
252 {
330
2525052c5d76 Fix compressed file loads.
msalter
parents: 307
diff changeset
253 int err, bytes_out;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
254
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
255 if (stream_end)
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
256 return Z_STREAM_END;
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
257
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
258 stream.next_in = p->in_buf;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
259 stream.avail_in = p->in_avail;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
260 stream.next_out = p->out_buf;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
261 stream.avail_out = p->out_max;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
262 err = inflate(&stream, Z_SYNC_FLUSH);
330
2525052c5d76 Fix compressed file loads.
msalter
parents: 307
diff changeset
263 bytes_out = stream.next_out - p->out_buf;
2525052c5d76 Fix compressed file loads.
msalter
parents: 307
diff changeset
264 p->out_size += bytes_out;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
265 p->out_buf = stream.next_out;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
266 p->msg = stream.msg;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
267 p->in_avail = stream.avail_in;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 191
diff changeset
268 p->in_buf = stream.next_in;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
269
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
270 // Let upper layers process any inflated bytes at
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
271 // end of stream.
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
272 if (err == Z_STREAM_END && bytes_out) {
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
273 stream_end = true;
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
274 err = Z_OK;
330
2525052c5d76 Fix compressed file loads.
msalter
parents: 307
diff changeset
275 }
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
276
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
277 return err;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
278 }
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
279
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
280 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
281 // Called when the input data is completed or an error has
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
282 // occured. This allows for clean up as well as passing error
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
283 // information up.
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
284 //
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
285 static int
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
286 gzip_close(_pipe_t* p, int err)
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
287 {
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
288 switch (err) {
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
289 case Z_STREAM_END:
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
290 err = 0;
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
291 break;
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
292 case Z_OK:
474
f0d9ca957f47 Fix decompression problem - from Patrick Doyle.
gthomas
parents: 331
diff changeset
293 if (stream_end) {
f0d9ca957f47 Fix decompression problem - from Patrick Doyle.
gthomas
parents: 331
diff changeset
294 break;
f0d9ca957f47 Fix decompression problem - from Patrick Doyle.
gthomas
parents: 331
diff changeset
295 }
331
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
296 // Decompression didn't complete
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
297 p->msg = "premature end of input";
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
298 // fall-through
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
299 default:
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
300 err = -1;
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
301 break;
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
302 }
83cd88af1211 Fix xyzmodem compressed loads
msalter
parents: 330
diff changeset
303
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
304 inflateEnd(&stream);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
305
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
306 return err;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
307 }
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
308
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
309 //
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
310 // Exported interfaces
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 156
diff changeset
311 //
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
312 _decompress_fun_init* _dc_init = gzip_init;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
313 _decompress_fun_inflate* _dc_inflate = gzip_inflate;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
314 _decompress_fun_close* _dc_close = gzip_close;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
diff changeset
315 #endif // CYGPKG_COMPRESS_ZLIB