aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/zip/MiniZip/mztools.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/zip/MiniZip/mztools.c')
-rw-r--r--src/core/zip/MiniZip/mztools.c125
1 files changed, 62 insertions, 63 deletions
diff --git a/src/core/zip/MiniZip/mztools.c b/src/core/zip/MiniZip/mztools.c
index b51d0e07..f9092e65 100644
--- a/src/core/zip/MiniZip/mztools.c
+++ b/src/core/zip/MiniZip/mztools.c
@@ -10,7 +10,6 @@
#include <string.h>
#include "zlib.h"
#include "unzip.h"
-#include "mztools.h"
#define READ_8(adr) ((unsigned char)*(adr))
#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) )
@@ -63,7 +62,7 @@ uLong* bytesRecovered;
unsigned int fnsize = READ_16(header + 26); /* file name length */
unsigned int extsize = READ_16(header + 28); /* extra field length */
filename[0] = extra[0] = '\0';
-
+
/* Header */
if (fwrite(header, 1, 30, fpOut) == 30) {
offset += 30;
@@ -71,7 +70,7 @@ uLong* bytesRecovered;
err = Z_ERRNO;
break;
}
-
+
/* Filename */
if (fnsize > 0) {
if (fread(filename, 1, fnsize, fpZip) == fnsize) {
@@ -104,7 +103,7 @@ uLong* bytesRecovered;
break;
}
}
-
+
/* Data */
{
int dataSize = cpsize;
@@ -134,33 +133,33 @@ uLong* bytesRecovered;
}
}
}
-
+
/* Central directory entry */
{
- char cdeHeader[46];
+ char header[46];
char* comment = "";
int comsize = (int) strlen(comment);
- WRITE_32(cdeHeader, 0x02014b50);
- WRITE_16(cdeHeader + 4, version);
- WRITE_16(cdeHeader + 6, version);
- WRITE_16(cdeHeader + 8, gpflag);
- WRITE_16(cdeHeader + 10, method);
- WRITE_16(cdeHeader + 12, filetime);
- WRITE_16(cdeHeader + 14, filedate);
- WRITE_32(cdeHeader + 16, crc);
- WRITE_32(cdeHeader + 20, cpsize);
- WRITE_32(cdeHeader + 24, uncpsize);
- WRITE_16(cdeHeader + 28, fnsize);
- WRITE_16(cdeHeader + 30, extsize);
- WRITE_16(cdeHeader + 32, comsize);
- WRITE_16(cdeHeader + 34, 0); /* disk # */
- WRITE_16(cdeHeader + 36, 0); /* int attrb */
- WRITE_32(cdeHeader + 38, 0); /* ext attrb */
- WRITE_32(cdeHeader + 42, currentOffset);
+ WRITE_32(header, 0x02014b50);
+ WRITE_16(header + 4, version);
+ WRITE_16(header + 6, version);
+ WRITE_16(header + 8, gpflag);
+ WRITE_16(header + 10, method);
+ WRITE_16(header + 12, filetime);
+ WRITE_16(header + 14, filedate);
+ WRITE_32(header + 16, crc);
+ WRITE_32(header + 20, cpsize);
+ WRITE_32(header + 24, uncpsize);
+ WRITE_16(header + 28, fnsize);
+ WRITE_16(header + 30, extsize);
+ WRITE_16(header + 32, comsize);
+ WRITE_16(header + 34, 0); /* disk # */
+ WRITE_16(header + 36, 0); /* int attrb */
+ WRITE_32(header + 38, 0); /* ext attrb */
+ WRITE_32(header + 42, currentOffset);
/* Header */
- if (fwrite(cdeHeader, 1, 46, fpOutCD) == 46) {
+ if (fwrite(header, 1, 46, fpOutCD) == 46) {
offsetCD += 46;
-
+
/* Filename */
if (fnsize > 0) {
if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) {
@@ -173,7 +172,7 @@ uLong* bytesRecovered;
err = Z_STREAM_ERROR;
break;
}
-
+
/* Extra field */
if (extsize > 0) {
if (fwrite(extra, 1, extsize, fpOutCD) == extsize) {
@@ -183,7 +182,7 @@ uLong* bytesRecovered;
break;
}
}
-
+
/* Comment field */
if (comsize > 0) {
if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) {
@@ -193,8 +192,8 @@ uLong* bytesRecovered;
break;
}
}
-
-
+
+
} else {
err = Z_ERRNO;
break;
@@ -209,38 +208,38 @@ uLong* bytesRecovered;
}
}
- /* Final central directory */
- {
- int entriesZip = entries;
- char fcdHeader[22];
- char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
- int comsize = (int) strlen(comment);
- if (entriesZip > 0xffff) {
- entriesZip = 0xffff;
- }
- WRITE_32(fcdHeader, 0x06054b50);
- WRITE_16(fcdHeader + 4, 0); /* disk # */
- WRITE_16(fcdHeader + 6, 0); /* disk # */
- WRITE_16(fcdHeader + 8, entriesZip); /* hack */
- WRITE_16(fcdHeader + 10, entriesZip); /* hack */
- WRITE_32(fcdHeader + 12, offsetCD); /* size of CD */
- WRITE_32(fcdHeader + 16, offset); /* offset to CD */
- WRITE_16(fcdHeader + 20, comsize); /* comment */
+ /* Final central directory */
+ {
+ int entriesZip = entries;
+ char header[22];
+ char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
+ int comsize = (int) strlen(comment);
+ if (entriesZip > 0xffff) {
+ entriesZip = 0xffff;
+ }
+ WRITE_32(header, 0x06054b50);
+ WRITE_16(header + 4, 0); /* disk # */
+ WRITE_16(header + 6, 0); /* disk # */
+ WRITE_16(header + 8, entriesZip); /* hack */
+ WRITE_16(header + 10, entriesZip); /* hack */
+ WRITE_32(header + 12, offsetCD); /* size of CD */
+ WRITE_32(header + 16, offset); /* offset to CD */
+ WRITE_16(header + 20, comsize); /* comment */
- /* Header */
- if (fwrite(fcdHeader, 1, 22, fpOutCD) == 22) {
-
- /* Comment field */
- if (comsize > 0) {
- if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
- err = Z_ERRNO;
- }
- }
-
- } else {
- err = Z_ERRNO;
- }
- }
+ /* Header */
+ if (fwrite(header, 1, 22, fpOutCD) == 22) {
+
+ /* Comment field */
+ if (comsize > 0) {
+ if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
+ err = Z_ERRNO;
+ }
+ }
+
+ } else {
+ err = Z_ERRNO;
+ }
+ }
/* Final merge (file + central directory) */
fclose(fpOutCD);
@@ -258,14 +257,14 @@ uLong* bytesRecovered;
fclose(fpOutCD);
}
}
-
+
/* Close */
fclose(fpZip);
fclose(fpOut);
-
+
/* Wipe temporary file */
(void)remove(fileOutTmp);
-
+
/* Number of recovered entries */
if (err == Z_OK) {
if (nRecovered != NULL) {