/
| 847 | |
| 848 | /************************************************************/ |
| 849 | extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) |
| 850 | { |
| 851 | zip64_internal ziinit; |
| 852 | zip64_internal* zi; |
| 853 | int err=ZIP_OK; |
| 854 | |
| 855 | ziinit.z_filefunc.zseek32_file = NULL; |
| 856 | ziinit.z_filefunc.ztell32_file = NULL; |
| 857 | if (pzlib_filefunc64_32_def==NULL) |
| 858 | fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64); |
| 859 | else |
| 860 | ziinit.z_filefunc = *pzlib_filefunc64_32_def; |
| 861 | |
| 862 | ziinit.filestream = ZOPEN64(ziinit.z_filefunc, |
| 863 | pathname, |
| 864 | (append == APPEND_STATUS_CREATE) ? |
| 865 | (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) : |
| 866 | (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING)); |
| 867 | |
| 868 | if (ziinit.filestream == NULL) |
| 869 | return NULL; |
| 870 | |
| 871 | if (append == APPEND_STATUS_CREATEAFTER) |
| 872 | ZSEEK64(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END); |
| 873 | |
| 874 | ziinit.begin_pos = ZTELL64(ziinit.z_filefunc,ziinit.filestream); |
| 875 | ziinit.in_opened_file_inzip = 0; |
| 876 | ziinit.ci.stream_initialised = 0; |
| 877 | ziinit.number_entry = 0; |
| 878 | ziinit.add_position_when_writing_offset = 0; |
| 879 | init_linkedlist(&(ziinit.central_dir)); |
| 880 | |
| 881 | |
| 882 | |
| 883 | zi = (zip64_internal*)ALLOC(sizeof(zip64_internal)); |
| 884 | if (zi==NULL) |
| 885 | { |
| 886 | ZCLOSE64(ziinit.z_filefunc,ziinit.filestream); |
| 887 | return NULL; |
| 888 | } |
| 889 | |
| 890 | /* now we add file in a zipfile */ |
| 891 | # ifndef NO_ADDFILEINEXISTINGZIP |
| 892 | ziinit.globalcomment = NULL; |
| 893 | if (append == APPEND_STATUS_ADDINZIP) |
| 894 | { |
| 895 | // Read and Cache Central Directory Records |
| 896 | err = LoadCentralDirectoryRecord(&ziinit); |
| 897 | } |
| 898 | |
| 899 | if (globalcomment) |
| 900 | { |
| 901 | *globalcomment = ziinit.globalcomment; |
| 902 | } |
| 903 | # endif /* !NO_ADDFILEINEXISTINGZIP*/ |
| 904 | |
| 905 | if (err != ZIP_OK) |
| 906 | { |
no test coverage detected