Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Side by Side Diff: third_party/zlib/contrib/minizip/mztools.c

Issue 8806004: Update zlib to 1.2.5. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/zlib/contrib/minizip/mztools.h ('k') | third_party/zlib/contrib/minizip/unzip.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 Additional tools for Minizip 2 Additional tools for Minizip
3 Code: Xavier Roche '2004 3 Code: Xavier Roche '2004
4 License: Same as ZLIB (www.gzip.org) 4 License: Same as ZLIB (www.gzip.org)
5 */ 5 */
6 6
7 /* Code */ 7 /* Code */
8 #include <stdio.h> 8 #include <stdio.h>
9 #include <stdlib.h> 9 #include <stdlib.h>
10 #include <string.h> 10 #include <string.h>
11
12 #if defined(USE_SYSTEM_ZLIB) 11 #if defined(USE_SYSTEM_ZLIB)
13 #include <zlib.h> 12 #include <zlib.h>
14 #else 13 #else
15 #include "third_party/zlib/zlib.h" 14 #include "third_party/zlib/zlib.h"
16 #endif 15 #endif
17 #include "unzip.h" 16 #include "unzip.h"
18 17
19 #define READ_8(adr) ((unsigned char)*(adr)) 18 #define READ_8(adr) ((unsigned char)*(adr))
20 #define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) 19 #define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) )
21 #define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) 20 #define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) )
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 unsigned int gpflag = READ_16(header + 6); 59 unsigned int gpflag = READ_16(header + 6);
61 unsigned int method = READ_16(header + 8); 60 unsigned int method = READ_16(header + 8);
62 unsigned int filetime = READ_16(header + 10); 61 unsigned int filetime = READ_16(header + 10);
63 unsigned int filedate = READ_16(header + 12); 62 unsigned int filedate = READ_16(header + 12);
64 unsigned int crc = READ_32(header + 14); /* crc */ 63 unsigned int crc = READ_32(header + 14); /* crc */
65 unsigned int cpsize = READ_32(header + 18); /* compressed size */ 64 unsigned int cpsize = READ_32(header + 18); /* compressed size */
66 unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ 65 unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */
67 unsigned int fnsize = READ_16(header + 26); /* file name length */ 66 unsigned int fnsize = READ_16(header + 26); /* file name length */
68 unsigned int extsize = READ_16(header + 28); /* extra field length */ 67 unsigned int extsize = READ_16(header + 28); /* extra field length */
69 filename[0] = extra[0] = '\0'; 68 filename[0] = extra[0] = '\0';
70 69
71 /* Header */ 70 /* Header */
72 if (fwrite(header, 1, 30, fpOut) == 30) { 71 if (fwrite(header, 1, 30, fpOut) == 30) {
73 offset += 30; 72 offset += 30;
74 } else { 73 } else {
75 err = Z_ERRNO; 74 err = Z_ERRNO;
76 break; 75 break;
77 } 76 }
78 77
79 /* Filename */ 78 /* Filename */
80 if (fnsize > 0) { 79 if (fnsize > 0) {
81 if (fread(filename, 1, fnsize, fpZip) == fnsize) { 80 if (fread(filename, 1, fnsize, fpZip) == fnsize) {
82 if (fwrite(filename, 1, fnsize, fpOut) == fnsize) { 81 if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
83 offset += fnsize; 82 offset += fnsize;
84 } else { 83 } else {
85 err = Z_ERRNO; 84 err = Z_ERRNO;
86 break; 85 break;
87 } 86 }
88 } else { 87 } else {
(...skipping 12 matching lines...) Expand all
101 offset += extsize; 100 offset += extsize;
102 } else { 101 } else {
103 err = Z_ERRNO; 102 err = Z_ERRNO;
104 break; 103 break;
105 } 104 }
106 } else { 105 } else {
107 err = Z_ERRNO; 106 err = Z_ERRNO;
108 break; 107 break;
109 } 108 }
110 } 109 }
111 110
112 /* Data */ 111 /* Data */
113 { 112 {
114 int dataSize = cpsize; 113 int dataSize = cpsize;
115 if (dataSize == 0) { 114 if (dataSize == 0) {
116 dataSize = uncpsize; 115 dataSize = uncpsize;
117 } 116 }
118 if (dataSize > 0) { 117 if (dataSize > 0) {
119 char* data = malloc(dataSize); 118 char* data = malloc(dataSize);
120 if (data != NULL) { 119 if (data != NULL) {
121 if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { 120 if ((int)fread(data, 1, dataSize, fpZip) == dataSize) {
122 if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { 121 if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) {
123 offset += dataSize; 122 offset += dataSize;
124 totalBytes += dataSize; 123 totalBytes += dataSize;
125 } else { 124 } else {
126 err = Z_ERRNO; 125 err = Z_ERRNO;
127 } 126 }
128 } else { 127 } else {
129 err = Z_ERRNO; 128 err = Z_ERRNO;
130 } 129 }
131 free(data); 130 free(data);
132 if (err != Z_OK) { 131 if (err != Z_OK) {
133 break; 132 break;
134 } 133 }
135 } else { 134 } else {
136 err = Z_MEM_ERROR; 135 err = Z_MEM_ERROR;
137 break; 136 break;
138 } 137 }
139 } 138 }
140 } 139 }
141 140
142 /* Central directory entry */ 141 /* Central directory entry */
143 { 142 {
144 char header[46]; 143 char header[46];
145 char* comment = ""; 144 char* comment = "";
146 int comsize = (int) strlen(comment); 145 int comsize = (int) strlen(comment);
147 WRITE_32(header, 0x02014b50); 146 WRITE_32(header, 0x02014b50);
148 WRITE_16(header + 4, version); 147 WRITE_16(header + 4, version);
149 WRITE_16(header + 6, version); 148 WRITE_16(header + 6, version);
150 WRITE_16(header + 8, gpflag); 149 WRITE_16(header + 8, gpflag);
151 WRITE_16(header + 10, method); 150 WRITE_16(header + 10, method);
152 WRITE_16(header + 12, filetime); 151 WRITE_16(header + 12, filetime);
153 WRITE_16(header + 14, filedate); 152 WRITE_16(header + 14, filedate);
154 WRITE_32(header + 16, crc); 153 WRITE_32(header + 16, crc);
155 WRITE_32(header + 20, cpsize); 154 WRITE_32(header + 20, cpsize);
156 WRITE_32(header + 24, uncpsize); 155 WRITE_32(header + 24, uncpsize);
157 WRITE_16(header + 28, fnsize); 156 WRITE_16(header + 28, fnsize);
158 WRITE_16(header + 30, extsize); 157 WRITE_16(header + 30, extsize);
159 WRITE_16(header + 32, comsize); 158 WRITE_16(header + 32, comsize);
160 WRITE_16(header + 34, 0); /* disk # */ 159 WRITE_16(header + 34, 0); /* disk # */
161 WRITE_16(header + 36, 0); /* int attrb */ 160 WRITE_16(header + 36, 0); /* int attrb */
162 WRITE_32(header + 38, 0); /* ext attrb */ 161 WRITE_32(header + 38, 0); /* ext attrb */
163 WRITE_32(header + 42, currentOffset); 162 WRITE_32(header + 42, currentOffset);
164 /* Header */ 163 /* Header */
165 if (fwrite(header, 1, 46, fpOutCD) == 46) { 164 if (fwrite(header, 1, 46, fpOutCD) == 46) {
166 offsetCD += 46; 165 offsetCD += 46;
167 166
168 /* Filename */ 167 /* Filename */
169 if (fnsize > 0) { 168 if (fnsize > 0) {
170 if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { 169 if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) {
171 offsetCD += fnsize; 170 offsetCD += fnsize;
172 } else { 171 } else {
173 err = Z_ERRNO; 172 err = Z_ERRNO;
174 break; 173 break;
175 } 174 }
176 } else { 175 } else {
177 err = Z_STREAM_ERROR; 176 err = Z_STREAM_ERROR;
178 break; 177 break;
179 } 178 }
180 179
181 /* Extra field */ 180 /* Extra field */
182 if (extsize > 0) { 181 if (extsize > 0) {
183 if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { 182 if (fwrite(extra, 1, extsize, fpOutCD) == extsize) {
184 offsetCD += extsize; 183 offsetCD += extsize;
185 } else { 184 } else {
186 err = Z_ERRNO; 185 err = Z_ERRNO;
187 break; 186 break;
188 } 187 }
189 } 188 }
190 189
191 /* Comment field */ 190 /* Comment field */
192 if (comsize > 0) { 191 if (comsize > 0) {
193 if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { 192 if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) {
194 offsetCD += comsize; 193 offsetCD += comsize;
195 } else { 194 } else {
196 err = Z_ERRNO; 195 err = Z_ERRNO;
197 break; 196 break;
198 } 197 }
199 } 198 }
200 199
201 200
202 } else { 201 } else {
203 err = Z_ERRNO; 202 err = Z_ERRNO;
204 break; 203 break;
205 } 204 }
206 } 205 }
207 206
208 /* Success */ 207 /* Success */
209 entries++; 208 entries++;
210 209
211 } else { 210 } else {
(...skipping 11 matching lines...) Expand all
223 entriesZip = 0xffff; 222 entriesZip = 0xffff;
224 } 223 }
225 WRITE_32(header, 0x06054b50); 224 WRITE_32(header, 0x06054b50);
226 WRITE_16(header + 4, 0); /* disk # */ 225 WRITE_16(header + 4, 0); /* disk # */
227 WRITE_16(header + 6, 0); /* disk # */ 226 WRITE_16(header + 6, 0); /* disk # */
228 WRITE_16(header + 8, entriesZip); /* hack */ 227 WRITE_16(header + 8, entriesZip); /* hack */
229 WRITE_16(header + 10, entriesZip); /* hack */ 228 WRITE_16(header + 10, entriesZip); /* hack */
230 WRITE_32(header + 12, offsetCD); /* size of CD */ 229 WRITE_32(header + 12, offsetCD); /* size of CD */
231 WRITE_32(header + 16, offset); /* offset to CD */ 230 WRITE_32(header + 16, offset); /* offset to CD */
232 WRITE_16(header + 20, comsize); /* comment */ 231 WRITE_16(header + 20, comsize); /* comment */
233 232
234 /* Header */ 233 /* Header */
235 if (fwrite(header, 1, 22, fpOutCD) == 22) { 234 if (fwrite(header, 1, 22, fpOutCD) == 22) {
236 235
237 /* Comment field */ 236 /* Comment field */
238 if (comsize > 0) { 237 if (comsize > 0) {
239 if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { 238 if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
240 err = Z_ERRNO; 239 err = Z_ERRNO;
241 } 240 }
242 } 241 }
243 242
244 } else { 243 } else {
245 err = Z_ERRNO; 244 err = Z_ERRNO;
246 } 245 }
247 } 246 }
248 247
249 /* Final merge (file + central directory) */ 248 /* Final merge (file + central directory) */
250 fclose(fpOutCD); 249 fclose(fpOutCD);
251 if (err == Z_OK) { 250 if (err == Z_OK) {
252 fpOutCD = fopen(fileOutTmp, "rb"); 251 fpOutCD = fopen(fileOutTmp, "rb");
253 if (fpOutCD != NULL) { 252 if (fpOutCD != NULL) {
254 int nRead; 253 int nRead;
255 char buffer[8192]; 254 char buffer[8192];
256 while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { 255 while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) {
257 if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { 256 if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) {
258 err = Z_ERRNO; 257 err = Z_ERRNO;
259 break; 258 break;
260 } 259 }
261 } 260 }
262 fclose(fpOutCD); 261 fclose(fpOutCD);
263 } 262 }
264 } 263 }
265 264
266 /* Close */ 265 /* Close */
267 fclose(fpZip); 266 fclose(fpZip);
268 fclose(fpOut); 267 fclose(fpOut);
269 268
270 /* Wipe temporary file */ 269 /* Wipe temporary file */
271 (void)remove(fileOutTmp); 270 (void)remove(fileOutTmp);
272 271
273 /* Number of recovered entries */ 272 /* Number of recovered entries */
274 if (err == Z_OK) { 273 if (err == Z_OK) {
275 if (nRecovered != NULL) { 274 if (nRecovered != NULL) {
276 *nRecovered = entries; 275 *nRecovered = entries;
277 } 276 }
278 if (bytesRecovered != NULL) { 277 if (bytesRecovered != NULL) {
279 *bytesRecovered = totalBytes; 278 *bytesRecovered = totalBytes;
280 } 279 }
281 } 280 }
282 } else { 281 } else {
283 err = Z_STREAM_ERROR; 282 err = Z_STREAM_ERROR;
284 } 283 }
285 return err; 284 return err;
286 } 285 }
OLDNEW
« no previous file with comments | « third_party/zlib/contrib/minizip/mztools.h ('k') | third_party/zlib/contrib/minizip/unzip.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698