diff options
author | Hoa V. Dinh <dinh.viet.hoa@gmail.com> | 2014-11-14 14:45:40 -0800 |
---|---|---|
committer | Hoa V. Dinh <dinh.viet.hoa@gmail.com> | 2014-11-14 14:45:40 -0800 |
commit | d5f966fd2a4a79369ea8d1df37846a5228c6a4e5 (patch) | |
tree | 255d4cc37f4cbefe8bf9643dc09ddb61a015a47f /src/core/zip/MiniZip/mztools.c | |
parent | 40cd8b05df153b2ae08758f346b7262a55ce5692 (diff) |
Port to win32
Diffstat (limited to 'src/core/zip/MiniZip/mztools.c')
-rw-r--r-- | src/core/zip/MiniZip/mztools.c | 125 |
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) { |