Lines Matching refs:zi
852 zip64_internal* zi;
883 zi = (zip64_internal*)ALLOC(sizeof(zip64_internal));
884 if (zi==NULL)
910 TRYFREE(zi);
915 *zi = ziinit;
916 return (zipFile)zi;
958 int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
965 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC, 4);
969 if(zi->ci.zip64)
970 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);/* version needed to extract */
972 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */
976 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2);
979 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2);
982 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4);
986 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */
989 if(zi->ci.zip64)
990 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* compressed size, unknown */
992 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */
996 if(zi->ci.zip64)
997 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* uncompressed size, unknown */
999 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */
1003 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2);
1005 if(zi->ci.zip64)
1011 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield,2);
1015 if (ZWRITE64(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename)
1021 if (ZWRITE64(zi->z_filefunc, zi->filestream, extrafield_local, size_extrafield_local) != size_extrafield_local)
1026 if ((err==ZIP_OK) && (zi->ci.zip64))
1035 zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream);
1037 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2);
1038 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2);
1040 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8);
1041 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8);
1063 zip64_internal* zi;
1086 zi = (zip64_internal*)file;
1088 if (zi->in_opened_file_inzip == 1)
1106 zi->ci.dosDate = 0;
1110 zi->ci.dosDate = zipfi->dosDate;
1112 zi->ci.dosDate = zip64local_TmzDateToDosDate(&zipfi->tmz_date);
1115 zi->ci.flag = flagBase;
1117 zi->ci.flag |= 2;
1119 zi->ci.flag |= 4;
1121 zi->ci.flag |= 6;
1123 zi->ci.flag |= 1;
1125 zi->ci.crc32 = 0;
1126 zi->ci.method = method;
1127 zi->ci.encrypt = 0;
1128 zi->ci.stream_initialised = 0;
1129 zi->ci.pos_in_buffered_data = 0;
1130 zi->ci.raw = raw;
1131 zi->ci.pos_local_header = ZTELL64(zi->z_filefunc,zi->filestream);
1133 zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global + size_comment;
1134 zi->ci.size_centralExtraFree = 32; // Extra space we have reserved in case we need to add ZIP64 extra info data
1136 zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralExtraFree);
1138 zi->ci.size_centralExtra = size_extrafield_global;
1139 zip64local_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4);
1141 zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)versionMadeBy,2);
1142 zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2);
1143 zip64local_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2);
1144 zip64local_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2);
1145 zip64local_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4);
1146 zip64local_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/
1147 zip64local_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/
1148 zip64local_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/
1149 zip64local_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2);
1150 zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2);
1151 zip64local_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2);
1152 zip64local_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/
1155 zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2);
1157 zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2);
1160 zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4);
1162 zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4);
1164 if(zi->ci.pos_local_header >= 0xffffffff)
1165 zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)0xffffffff,4);
1167 zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header - zi->add_position_when_writting_offset,4);
1170 *(zi->ci.central_header+SIZECENTRALHEADER+i) = *(filename+i);
1173 *(zi->ci.central_header+SIZECENTRALHEADER+size_filename+i) =
1177 *(zi->ci.central_header+SIZECENTRALHEADER+size_filename+
1179 if (zi->ci.central_header == NULL)
1182 zi->ci.zip64 = zip64;
1183 zi->ci.totalCompressedData = 0;
1184 zi->ci.totalUncompressedData = 0;
1185 zi->ci.pos_zip64extrainfo = 0;
1187 err = Write_LocalFileHeader(zi, filename, size_extrafield_local, extrafield_local);
1190 zi->ci.bstream.avail_in = (uInt)0;
1191 zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE;
1192 zi->ci.bstream.next_out = (char*)zi->ci.buffered_data;
1193 zi->ci.bstream.total_in_hi32 = 0;
1194 zi->ci.bstream.total_in_lo32 = 0;
1195 zi->ci.bstream.total_out_hi32 = 0;
1196 zi->ci.bstream.total_out_lo32 = 0;
1199 zi->ci.stream.avail_in = (uInt)0;
1200 zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
1201 zi->ci.stream.next_out = zi->ci.buffered_data;
1202 zi->ci.stream.total_in = 0;
1203 zi->ci.stream.total_out = 0;
1204 zi->ci.stream.data_type = Z_BINARY;
1207 if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED || zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw))
1209 if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
1212 if(zi->ci.method == Z_DEFLATED)
1214 zi->ci.stream.zalloc = (alloc_func)0;
1215 zi->ci.stream.zfree = (free_func)0;
1216 zi->ci.stream.opaque = (voidpf)0;
1221 err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy);
1224 zi->ci.stream_initialised = Z_DEFLATED;
1226 else if(zi->ci.method == Z_BZIP2ED)
1230 zi->ci.bstream.bzalloc = 0;
1231 zi->ci.bstream.bzfree = 0;
1232 zi->ci.bstream.opaque = (voidpf)0;
1234 err = BZ2_bzCompressInit(&zi->ci.bstream, level, 0,35);
1236 zi->ci.stream_initialised = Z_BZIP2ED;
1243 zi->ci.crypt_header_size = 0;
1248 zi->ci.encrypt = 1;
1249 zi->ci.pcrc_32_tab = get_crc_table();
1250 /*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/
1252 sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting);
1253 zi->ci.crypt_header_size = sizeHead;
1255 if (ZWRITE64(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead)
1261 zi->in_opened_file_inzip = 1;
1363 local int zip64FlushWriteBuffer(zip64_internal* zi)
1367 if (zi->ci.encrypt != 0)
1372 for (i=0;i<zi->ci.pos_in_buffered_data;i++)
1373 zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t);
1377 if (ZWRITE64(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data) != zi->ci.pos_in_buffered_data)
1380 zi->ci.totalCompressedData += zi->ci.pos_in_buffered_data;
1383 if(zi->ci.method == Z_BZIP2ED)
1385 zi->ci.totalUncompressedData += zi->ci.bstream.total_in_lo32;
1386 zi->ci.bstream.total_in_lo32 = 0;
1387 zi->ci.bstream.total_in_hi32 = 0;
1392 zi->ci.totalUncompressedData += zi->ci.stream.total_in;
1393 zi->ci.stream.total_in = 0;
1397 zi->ci.pos_in_buffered_data = 0;
1404 zip64_internal* zi;
1409 zi = (zip64_internal*)file;
1411 if (zi->in_opened_file_inzip == 0)
1414 zi->ci.crc32 = crc32(zi->ci.crc32,buf,(uInt)len);
1417 if(zi->ci.method == Z_BZIP2ED && (!zi->ci.raw))
1419 zi->ci.bstream.next_in = (void*)buf;
1420 zi->ci.bstream.avail_in = len;
1423 while ((err==BZ_RUN_OK) && (zi->ci.bstream.avail_in>0))
1425 if (zi->ci.bstream.avail_out == 0)
1427 if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO)
1429 zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE;
1430 zi->ci.bstream.next_out = (char*)zi->ci.buffered_data;
1437 if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw))
1439 uLong uTotalOutBefore_lo = zi->ci.bstream.total_out_lo32;
1440 // uLong uTotalOutBefore_hi = zi->ci.bstream.total_out_hi32;
1441 err=BZ2_bzCompress(&zi->ci.bstream, BZ_RUN);
1443 zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore_lo) ;
1453 zi->ci.stream.next_in = (Bytef*)buf;
1454 zi->ci.stream.avail_in = len;
1456 while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
1458 if (zi->ci.stream.avail_out == 0)
1460 if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO)
1462 zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
1463 zi->ci.stream.next_out = zi->ci.buffered_data;
1470 if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
1472 uLong uTotalOutBefore = zi->ci.stream.total_out;
1473 err=deflate(&zi->ci.stream, Z_NO_FLUSH);
1474 if(uTotalOutBefore > zi->ci.stream.total_out)
1480 zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ;
1485 if (zi->ci.stream.avail_in < zi->ci.stream.avail_out)
1486 copy_this = zi->ci.stream.avail_in;
1488 copy_this = zi->ci.stream.avail_out;
1491 *(((char*)zi->ci.stream.next_out)+i) =
1492 *(((const char*)zi->ci.stream.next_in)+i);
1494 zi->ci.stream.avail_in -= copy_this;
1495 zi->ci.stream.avail_out-= copy_this;
1496 zi->ci.stream.next_in+= copy_this;
1497 zi->ci.stream.next_out+= copy_this;
1498 zi->ci.stream.total_in+= copy_this;
1499 zi->ci.stream.total_out+= copy_this;
1500 zi->ci.pos_in_buffered_data += copy_this;
1516 zip64_internal* zi;
1524 zi = (zip64_internal*)file;
1526 if (zi->in_opened_file_inzip == 0)
1528 zi->ci.stream.avail_in = 0;
1530 if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
1535 if (zi->ci.stream.avail_out == 0)
1537 if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO)
1539 zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
1540 zi->ci.stream.next_out = zi->ci.buffered_data;
1542 uTotalOutBefore = zi->ci.stream.total_out;
1543 err=deflate(&zi->ci.stream, Z_FINISH);
1544 zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ;
1547 else if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw))
1554 if (zi->ci.bstream.avail_out == 0)
1556 if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO)
1558 zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE;
1559 zi->ci.bstream.next_out = (char*)zi->ci.buffered_data;
1561 uTotalOutBefore = zi->ci.bstream.total_out_lo32;
1562 err=BZ2_bzCompress(&zi->ci.bstream, BZ_FINISH);
1566 zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore);
1577 if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK))
1579 if (zip64FlushWriteBuffer(zi)==ZIP_ERRNO)
1583 if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
1585 int tmp_err = deflateEnd(&zi->ci.stream);
1588 zi->ci.stream_initialised = 0;
1591 else if((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw))
1593 int tmperr = BZ2_bzCompressEnd(&zi->ci.bstream);
1596 zi->ci.stream_initialised = 0;
1600 if (!zi->ci.raw)
1602 crc32 = (uLong)zi->ci.crc32;
1603 uncompressed_size = zi->ci.totalUncompressedData;
1605 compressed_size = zi->ci.totalCompressedData;
1608 compressed_size += zi->ci.crypt_header_size;
1612 if(compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->ci.pos_local_header >= 0xffffffff)
1615 zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)45,2);
1617 zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)45,2);
1621 zip64local_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/
1625 zip64local_putValue_inmemory(zi->ci.central_header+20, invalidValue,4); /*compr size*/
1627 zip64local_putValue_inmemory(zi->ci.central_header+20, compressed_size,4); /*compr size*/
1630 if (zi->ci.stream.data_type == Z_ASCII)
1631 zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2);
1634 zip64local_putValue_inmemory(zi->ci.central_header+24, invalidValue,4); /*uncompr size*/
1636 zip64local_putValue_inmemory(zi->ci.central_header+24, uncompressed_size,4); /*uncompr size*/
1647 if(zi->ci.pos_local_header >= 0xffffffff)
1654 if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree)
1660 p = zi->ci.central_header + zi->ci.size_centralheader;
1680 if(zi->ci.pos_local_header >= 0xffffffff)
1682 zip64local_putValue_inmemory(p, zi->ci.pos_local_header, 8);
1689 zi->ci.size_centralExtraFree -= datasize + 4;
1690 zi->ci.size_centralheader += datasize + 4;
1693 zi->ci.size_centralExtra += datasize + 4;
1694 zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)zi->ci.size_centralExtra,2);
1698 err = add_data_in_datablock(&zi->central_dir, zi->ci.central_header, (uLong)zi->ci.size_centralheader);
1700 free(zi->ci.central_header);
1706 ZPOS64_T cur_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream);
1708 if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0)
1712 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
1716 if(zi->ci.pos_zip64extrainfo > 0)
1719 if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_zip64extrainfo + 4,ZLIB_FILEFUNC_SEEK_SET)!=0)
1723 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, uncompressed_size, 8);
1726 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8);
1734 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4);
1737 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4);
1740 if (ZSEEK64(zi->z_filefunc,zi->filestream, cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0)
1744 zi->number_entry ++;
1745 zi->in_opened_file_inzip = 0;
1755 int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip)
1758 ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writting_offset;
1760 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDLOCHEADERMAGIC,4);
1764 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4);
1768 err = zip64local_putValue(&zi->z_filefunc,zi->filestream, pos,8);
1772 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)1,4);
1777 int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
1783 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDHEADERMAGIC,4);
1786 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)Zip64DataSize,8); // why ZPOS64_T of this ?
1789 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);
1792 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);
1795 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4);
1798 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4);
1801 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8);
1804 err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8);
1807 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)size_centraldir,8);
1811 ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
1812 err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (ZPOS64_T)pos,8);
1816 int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
1821 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4);
1824 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2);
1827 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2);
1832 if(zi->number_entry >= 0xFFFF)
1833 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record
1835 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2);
1841 if(zi->number_entry >= 0xFFFF)
1842 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record
1844 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2);
1848 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4);
1852 ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
1855 err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4);
1858 err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
1864 int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
1872 err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2);
1876 if (ZWRITE64(zi->z_filefunc,zi->filestream, global_comment, size_global_comment) != size_global_comment)
1884 zip64_internal* zi;
1893 zi = (zip64_internal*)file;
1895 if (zi->in_opened_file_inzip == 1)
1902 global_comment = zi->globalcomment;
1905 centraldir_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream);
1909 linkedlist_datablock_internal* ldi = zi->central_dir.first_block;
1914 if (ZWRITE64(zi->z_filefunc,zi->filestream, ldi->data, ldi->filled_in_this_block) != ldi->filled_in_this_block)
1922 free_linkedlist(&(zi->central_dir));
1924 pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
1925 if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
1927 ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
1928 Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
1930 Write_Zip64EndOfCentralDirectoryLocator(zi, Zip64EOCDpos);
1934 err = Write_EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
1937 err = Write_GlobalComment(zi, global_comment);
1939 if (ZCLOSE64(zi->z_filefunc,zi->filestream) != 0)
1944 TRYFREE(zi->globalcomment);
1946 TRYFREE(zi);