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.
| 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. |
| 3582 | int 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; |
no test coverage detected