MCPcopy Create free account
hub / github.com/Squirrel/Squirrel.Windows / unzOpenCurrentFile

Function unzOpenCurrentFile

src/Setup/unzip.cpp:3371–3461  ·  view source on GitHub ↗

Open for reading data the current file in the zipfile. If there is no error and the file is opened, the return value is UNZ_OK.

Source from the content-addressed store, hash-verified

3369// Open for reading data the current file in the zipfile.
3370// If there is no error and the file is opened, the return value is UNZ_OK.
3371int unzOpenCurrentFile (unzFile file, const char *password)
3372{
3373 int err;
3374 int Store;
3375 uInt iSizeVar;
3376 unz_s* s;
3377 file_in_zip_read_info_s* pfile_in_zip_read_info;
3378 uLong offset_local_extrafield; // offset of the local extra field
3379 uInt size_local_extrafield; // size of the local extra field
3380
3381 if (file==NULL)
3382 return UNZ_PARAMERROR;
3383 s=(unz_s*)file;
3384 if (!s->current_file_ok)
3385 return UNZ_PARAMERROR;
3386
3387 if (s->pfile_in_zip_read != NULL)
3388 unzCloseCurrentFile(file);
3389
3390 if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar,
3391 &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
3392 return UNZ_BADZIPFILE;
3393
3394 pfile_in_zip_read_info = (file_in_zip_read_info_s*)zmalloc(sizeof(file_in_zip_read_info_s));
3395 if (pfile_in_zip_read_info==NULL)
3396 return UNZ_INTERNALERROR;
3397
3398 pfile_in_zip_read_info->read_buffer=(char*)zmalloc(UNZ_BUFSIZE);
3399 pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield;
3400 pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield;
3401 pfile_in_zip_read_info->pos_local_extrafield=0;
3402
3403 if (pfile_in_zip_read_info->read_buffer==NULL)
3404 {
3405 if (pfile_in_zip_read_info!=0) zfree(pfile_in_zip_read_info); //unused pfile_in_zip_read_info=0;
3406 return UNZ_INTERNALERROR;
3407 }
3408
3409 pfile_in_zip_read_info->stream_initialised=0;
3410
3411 if ((s->cur_file_info.compression_method!=0) && (s->cur_file_info.compression_method!=Z_DEFLATED))
3412 { // unused err=UNZ_BADZIPFILE;
3413 }
3414 Store = s->cur_file_info.compression_method==0;
3415
3416 pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc;
3417 pfile_in_zip_read_info->crc32=0;
3418 pfile_in_zip_read_info->compression_method = s->cur_file_info.compression_method;
3419 pfile_in_zip_read_info->file=s->file;
3420 pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile;
3421
3422 pfile_in_zip_read_info->stream.total_out = 0;
3423
3424 if (!Store)
3425 {
3426 pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
3427 pfile_in_zip_read_info->stream.zfree = (free_func)0;
3428 pfile_in_zip_read_info->stream.opaque = (voidpf)0;

Callers 1

UnzipMethod · 0.85

Calls 4

unzCloseCurrentFileFunction · 0.85
inflateInit2Function · 0.85
Uupdate_keysFunction · 0.85

Tested by

no test coverage detected