| OLD | NEW |
| 1 /* | 1 /* |
| 2 minizip.c | 2 minizip.c |
| 3 Version 1.1, February 14h, 2010 | 3 Version 1.1, February 14h, 2010 |
| 4 sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizi
p.html ) | 4 sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizi
p.html ) |
| 5 | 5 |
| 6 Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.
com/zLibDll/minizip.html ) | 6 Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.
com/zLibDll/minizip.html ) |
| 7 | 7 |
| 8 Modifications of Unzip for Zip64 | 8 Modifications of Unzip for Zip64 |
| 9 Copyright (C) 2007-2008 Even Rouault | 9 Copyright (C) 2007-2008 Even Rouault |
| 10 | 10 |
| 11 Modifications for Zip64 support on both zip and unzip | 11 Modifications for Zip64 support on both zip and unzip |
| 12 Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) | 12 Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) |
| 13 */ | 13 */ |
| 14 | 14 |
| 15 | 15 |
| 16 #if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) | 16 #ifndef _WIN32 |
| 17 #ifndef __USE_FILE_OFFSET64 | 17 #ifndef __USE_FILE_OFFSET64 |
| 18 #define __USE_FILE_OFFSET64 | 18 #define __USE_FILE_OFFSET64 |
| 19 #endif | 19 #endif |
| 20 #ifndef __USE_LARGEFILE64 | 20 #ifndef __USE_LARGEFILE64 |
| 21 #define __USE_LARGEFILE64 | 21 #define __USE_LARGEFILE64 |
| 22 #endif | 22 #endif |
| 23 #ifndef _LARGEFILE64_SOURCE | 23 #ifndef _LARGEFILE64_SOURCE |
| 24 #define _LARGEFILE64_SOURCE | 24 #define _LARGEFILE64_SOURCE |
| 25 #endif | 25 #endif |
| 26 #ifndef _FILE_OFFSET_BIT | 26 #ifndef _FILE_OFFSET_BIT |
| 27 #define _FILE_OFFSET_BIT 64 | 27 #define _FILE_OFFSET_BIT 64 |
| 28 #endif | 28 #endif |
| 29 #endif | 29 #endif |
| 30 | 30 |
| 31 #ifdef __APPLE__ | |
| 32 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no ne
ed for specific 64 bit functions | |
| 33 #define FOPEN_FUNC(filename, mode) fopen(filename, mode) | |
| 34 #define FTELLO_FUNC(stream) ftello(stream) | |
| 35 #define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) | |
| 36 #else | |
| 37 #define FOPEN_FUNC(filename, mode) fopen64(filename, mode) | |
| 38 #define FTELLO_FUNC(stream) ftello64(stream) | |
| 39 #define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) | |
| 40 #endif | |
| 41 | |
| 42 | |
| 43 | |
| 44 #include <stdio.h> | 31 #include <stdio.h> |
| 45 #include <stdlib.h> | 32 #include <stdlib.h> |
| 46 #include <string.h> | 33 #include <string.h> |
| 47 #include <time.h> | 34 #include <time.h> |
| 48 #include <errno.h> | 35 #include <errno.h> |
| 49 #include <fcntl.h> | 36 #include <fcntl.h> |
| 50 | 37 |
| 51 #ifdef _WIN32 | 38 #ifdef unix |
| 52 # include <direct.h> | |
| 53 # include <io.h> | |
| 54 #else | |
| 55 # include <unistd.h> | 39 # include <unistd.h> |
| 56 # include <utime.h> | 40 # include <utime.h> |
| 57 # include <sys/types.h> | 41 # include <sys/types.h> |
| 58 # include <sys/stat.h> | 42 # include <sys/stat.h> |
| 43 #else |
| 44 # include <direct.h> |
| 45 # include <io.h> |
| 59 #endif | 46 #endif |
| 60 | 47 |
| 61 #include "zip.h" | 48 #include "zip.h" |
| 62 | 49 |
| 63 #ifdef _WIN32 | 50 #ifdef _WIN32 |
| 64 #define USEWIN32IOAPI | 51 #define USEWIN32IOAPI |
| 65 #include "iowin32.h" | 52 #include "iowin32.h" |
| 66 #endif | 53 #endif |
| 67 | 54 |
| 68 | 55 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 87 { | 74 { |
| 88 FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); | 75 FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); |
| 89 FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); | 76 FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); |
| 90 FindClose(hFind); | 77 FindClose(hFind); |
| 91 ret = 1; | 78 ret = 1; |
| 92 } | 79 } |
| 93 } | 80 } |
| 94 return ret; | 81 return ret; |
| 95 } | 82 } |
| 96 #else | 83 #else |
| 97 #ifdef unix || __APPLE__ | 84 #ifdef unix |
| 98 uLong filetime(f, tmzip, dt) | 85 uLong filetime(f, tmzip, dt) |
| 99 char *f; /* name of file to get info on */ | 86 char *f; /* name of file to get info on */ |
| 100 tm_zip *tmzip; /* return value: access, modific. and creation times
*/ | 87 tm_zip *tmzip; /* return value: access, modific. and creation times
*/ |
| 101 uLong *dt; /* dostime */ | 88 uLong *dt; /* dostime */ |
| 102 { | 89 { |
| 103 int ret=0; | 90 int ret=0; |
| 104 struct stat s; /* results of stat() */ | 91 struct stat s; /* results of stat() */ |
| 105 struct tm* filedate; | 92 struct tm* filedate; |
| 106 time_t tm_t=0; | 93 time_t tm_t=0; |
| 107 | 94 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 #endif | 135 #endif |
| 149 | 136 |
| 150 | 137 |
| 151 | 138 |
| 152 | 139 |
| 153 int check_exist_file(filename) | 140 int check_exist_file(filename) |
| 154 const char* filename; | 141 const char* filename; |
| 155 { | 142 { |
| 156 FILE* ftestexist; | 143 FILE* ftestexist; |
| 157 int ret = 1; | 144 int ret = 1; |
| 158 ftestexist = FOPEN_FUNC(filename,"rb"); | 145 ftestexist = fopen64(filename,"rb"); |
| 159 if (ftestexist==NULL) | 146 if (ftestexist==NULL) |
| 160 ret = 0; | 147 ret = 0; |
| 161 else | 148 else |
| 162 fclose(ftestexist); | 149 fclose(ftestexist); |
| 163 return ret; | 150 return ret; |
| 164 } | 151 } |
| 165 | 152 |
| 166 void do_banner() | 153 void do_banner() |
| 167 { | 154 { |
| 168 printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vol
lant\n"); | 155 printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vol
lant\n"); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 179 " -9 Compress better\n\n" \ | 166 " -9 Compress better\n\n" \ |
| 180 " -j exclude path. store only the file name.\n\n"); | 167 " -j exclude path. store only the file name.\n\n"); |
| 181 } | 168 } |
| 182 | 169 |
| 183 /* calculate the CRC32 of a file, | 170 /* calculate the CRC32 of a file, |
| 184 because to encrypt a file, we need known the CRC32 of the file before */ | 171 because to encrypt a file, we need known the CRC32 of the file before */ |
| 185 int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
d long* result_crc) | 172 int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
d long* result_crc) |
| 186 { | 173 { |
| 187 unsigned long calculate_crc=0; | 174 unsigned long calculate_crc=0; |
| 188 int err=ZIP_OK; | 175 int err=ZIP_OK; |
| 189 FILE * fin = FOPEN_FUNC(filenameinzip,"rb"); | 176 FILE * fin = fopen64(filenameinzip,"rb"); |
| 190 | |
| 191 unsigned long size_read = 0; | 177 unsigned long size_read = 0; |
| 192 unsigned long total_read = 0; | 178 unsigned long total_read = 0; |
| 193 if (fin==NULL) | 179 if (fin==NULL) |
| 194 { | 180 { |
| 195 err = ZIP_ERRNO; | 181 err = ZIP_ERRNO; |
| 196 } | 182 } |
| 197 | 183 |
| 198 if (err == ZIP_OK) | 184 if (err == ZIP_OK) |
| 199 do | 185 do |
| 200 { | 186 { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 218 | 204 |
| 219 *result_crc=calculate_crc; | 205 *result_crc=calculate_crc; |
| 220 printf("file %s crc %lx\n", filenameinzip, calculate_crc); | 206 printf("file %s crc %lx\n", filenameinzip, calculate_crc); |
| 221 return err; | 207 return err; |
| 222 } | 208 } |
| 223 | 209 |
| 224 int isLargeFile(const char* filename) | 210 int isLargeFile(const char* filename) |
| 225 { | 211 { |
| 226 int largeFile = 0; | 212 int largeFile = 0; |
| 227 ZPOS64_T pos = 0; | 213 ZPOS64_T pos = 0; |
| 228 FILE* pFile = FOPEN_FUNC(filename, "rb"); | 214 FILE* pFile = fopen64(filename, "rb"); |
| 229 | 215 |
| 230 if(pFile != NULL) | 216 if(pFile != NULL) |
| 231 { | 217 { |
| 232 int n = FSEEKO_FUNC(pFile, 0, SEEK_END); | 218 int n = fseeko64(pFile, 0, SEEK_END); |
| 233 pos = FTELLO_FUNC(pFile); | 219 |
| 220 pos = ftello64(pFile); |
| 234 | 221 |
| 235 printf("File : %s is %lld bytes\n", filename, pos); | 222 printf("File : %s is %lld bytes\n", filename, pos); |
| 236 | 223 |
| 237 if(pos >= 0xffffffff) | 224 if(pos >= 0xffffffff) |
| 238 largeFile = 1; | 225 largeFile = 1; |
| 239 | 226 |
| 240 fclose(pFile); | 227 fclose(pFile); |
| 241 } | 228 } |
| 242 | 229 |
| 243 return largeFile; | 230 return largeFile; |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 (opt_compress_level != 0) ? Z_DEFLATED : 0, | 440 (opt_compress_level != 0) ? Z_DEFLATED : 0, |
| 454 opt_compress_level,0, | 441 opt_compress_level,0, |
| 455 /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEG
Y, */ | 442 /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEG
Y, */ |
| 456 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, | 443 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, |
| 457 password,crcFile, zip64); | 444 password,crcFile, zip64); |
| 458 | 445 |
| 459 if (err != ZIP_OK) | 446 if (err != ZIP_OK) |
| 460 printf("error in opening %s in zipfile\n",filenameinzip); | 447 printf("error in opening %s in zipfile\n",filenameinzip); |
| 461 else | 448 else |
| 462 { | 449 { |
| 463 fin = FOPEN_FUNC(filenameinzip,"rb"); | 450 fin = fopen64(filenameinzip,"rb"); |
| 464 if (fin==NULL) | 451 if (fin==NULL) |
| 465 { | 452 { |
| 466 err=ZIP_ERRNO; | 453 err=ZIP_ERRNO; |
| 467 printf("error in opening %s for reading\n",filenameinzip
); | 454 printf("error in opening %s for reading\n",filenameinzip
); |
| 468 } | 455 } |
| 469 } | 456 } |
| 470 | 457 |
| 471 if (err == ZIP_OK) | 458 if (err == ZIP_OK) |
| 472 do | 459 do |
| 473 { | 460 { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 printf("error in closing %s\n",filename_try); | 498 printf("error in closing %s\n",filename_try); |
| 512 } | 499 } |
| 513 else | 500 else |
| 514 { | 501 { |
| 515 do_help(); | 502 do_help(); |
| 516 } | 503 } |
| 517 | 504 |
| 518 free(buf); | 505 free(buf); |
| 519 return 0; | 506 return 0; |
| 520 } | 507 } |
| OLD | NEW |