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. */
(file)
| 893 | If there is no error and the file is opened, the return value is UNZ_OK. |
| 894 | */ |
| 895 | extern int ZEXPORT unzOpenCurrentFile (file) |
| 896 | unzFile file; |
| 897 | { |
| 898 | int err=UNZ_OK; |
| 899 | int Store; |
| 900 | uInt iSizeVar; |
| 901 | unz_s* s; |
| 902 | file_in_zip_read_info_s* pfile_in_zip_read_info; |
| 903 | uLong offset_local_extrafield; /* offset of the local extra field */ |
| 904 | uInt size_local_extrafield; /* size of the local extra field */ |
| 905 | |
| 906 | if (file==NULL) |
| 907 | return UNZ_PARAMERROR; |
| 908 | s=(unz_s*)file; |
| 909 | if (!s->current_file_ok) |
| 910 | return UNZ_PARAMERROR; |
| 911 | |
| 912 | if (s->pfile_in_zip_read != NULL) |
| 913 | unzCloseCurrentFile(file); |
| 914 | |
| 915 | if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, |
| 916 | &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) |
| 917 | return UNZ_BADZIPFILE; |
| 918 | |
| 919 | pfile_in_zip_read_info = (file_in_zip_read_info_s*) |
| 920 | ALLOC(sizeof(file_in_zip_read_info_s)); |
| 921 | if (pfile_in_zip_read_info==NULL) |
| 922 | return UNZ_INTERNALERROR; |
| 923 | |
| 924 | pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); |
| 925 | pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; |
| 926 | pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; |
| 927 | pfile_in_zip_read_info->pos_local_extrafield=0; |
| 928 | |
| 929 | if (pfile_in_zip_read_info->read_buffer==NULL) |
| 930 | { |
| 931 | TRYFREE(pfile_in_zip_read_info); |
| 932 | return UNZ_INTERNALERROR; |
| 933 | } |
| 934 | |
| 935 | pfile_in_zip_read_info->stream_initialised=0; |
| 936 | |
| 937 | if ((s->cur_file_info.compression_method!=0) && |
| 938 | (s->cur_file_info.compression_method!=Z_DEFLATED)) |
| 939 | err=UNZ_BADZIPFILE; |
| 940 | Store = s->cur_file_info.compression_method==0; |
| 941 | |
| 942 | pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; |
| 943 | pfile_in_zip_read_info->crc32=0; |
| 944 | pfile_in_zip_read_info->compression_method = |
| 945 | s->cur_file_info.compression_method; |
| 946 | pfile_in_zip_read_info->file=s->file; |
| 947 | pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; |
| 948 | |
| 949 | pfile_in_zip_read_info->stream.total_out = 0; |
| 950 | |
| 951 | if (!Store) |
| 952 | { |
no test coverage detected