MCPcopy Create free account
hub / github.com/cinience/RedisStudio / unzOpenCurrentFile

Function unzOpenCurrentFile

DuiLib/Utils/XUnzip.cpp:3582–3667  ·  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

3580// Open for reading data the current file in the zipfile.
3581// If there is no error and the file is opened, the return value is UNZ_OK.
3582int unzOpenCurrentFile (unzFile file)
3583{
3584 int err;
3585 int Store;
3586 uInt iSizeVar;
3587 unz_s* s;
3588 file_in_zip_read_info_s* pfile_in_zip_read_info;
3589 uLong offset_local_extrafield; // offset of the local extra field
3590 uInt size_local_extrafield; // size of the local extra field
3591
3592 if (file==NULL)
3593 return UNZ_PARAMERROR;
3594 s=(unz_s*)file;
3595 if (!s->current_file_ok)
3596 return UNZ_PARAMERROR;
3597
3598 if (s->pfile_in_zip_read != NULL)
3599 unzCloseCurrentFile(file);
3600
3601 if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar,
3602 &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
3603 return UNZ_BADZIPFILE;
3604
3605 pfile_in_zip_read_info = (file_in_zip_read_info_s*)zmalloc(sizeof(file_in_zip_read_info_s));
3606 if (pfile_in_zip_read_info==NULL)
3607 return UNZ_INTERNALERROR;
3608
3609 pfile_in_zip_read_info->read_buffer=(char*)zmalloc(UNZ_BUFSIZE);
3610 pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield;
3611 pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield;
3612 pfile_in_zip_read_info->pos_local_extrafield=0;
3613
3614 if (pfile_in_zip_read_info->read_buffer==NULL)
3615 {
3616 if (pfile_in_zip_read_info!=0) zfree(pfile_in_zip_read_info); //unused pfile_in_zip_read_info=0;
3617 return UNZ_INTERNALERROR;
3618 }
3619
3620 pfile_in_zip_read_info->stream_initialised=0;
3621
3622 if ((s->cur_file_info.compression_method!=0) && (s->cur_file_info.compression_method!=Z_DEFLATED))
3623 { // unused err=UNZ_BADZIPFILE;
3624 }
3625 Store = s->cur_file_info.compression_method==0;
3626
3627 pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc;
3628 pfile_in_zip_read_info->crc32=0;
3629 pfile_in_zip_read_info->compression_method =
3630 s->cur_file_info.compression_method;
3631 pfile_in_zip_read_info->file=s->file;
3632 pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile;
3633
3634 pfile_in_zip_read_info->stream.total_out = 0;
3635
3636 if (!Store)
3637 {
3638 pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
3639 pfile_in_zip_read_info->stream.zfree = (free_func)0;

Callers 1

UnzipMethod · 0.85

Calls 5

unzCloseCurrentFileFunction · 0.85
zmallocFunction · 0.85
zfreeFunction · 0.85
inflateInit2Function · 0.85

Tested by

no test coverage detected