Lines Matching refs:zip

292 	struct _7zip *zip;
301 zip = calloc(1, sizeof(*zip));
302 if (zip == NULL) {
307 zip->temp_fd = -1;
308 __archive_rb_tree_init(&(zip->rbtree), &rb_ops);
309 file_init_register(zip);
310 file_init_register_empty(zip);
314 zip->opt_compression = _7Z_LZMA1;
316 zip->opt_compression = _7Z_BZIP2;
318 zip->opt_compression = _7Z_DEFLATE;
320 zip->opt_compression = _7Z_COPY;
322 zip->opt_compression_level = 6;
324 a->format_data = zip;
326 a->format_name = "7zip";
334 a->archive.archive_format_name = "7zip";
342 struct _7zip *zip;
344 zip = (struct _7zip *)a->format_data;
353 zip->opt_compression = _7Z_COPY;
357 zip->opt_compression = _7Z_DEFLATE;
364 zip->opt_compression = _7Z_BZIP2;
371 zip->opt_compression = _7Z_LZMA1;
378 zip->opt_compression = _7Z_LZMA2;
385 zip->opt_compression = _7Z_PPMD;
413 zip->opt_compression_level = value[0] - '0';
426 struct _7zip *zip;
430 zip = (struct _7zip *)a->format_data;
431 zip->cur_file = NULL;
432 zip->entry_bytes_remaining = 0;
434 if (zip->sconv == NULL) {
435 zip->sconv = archive_string_conversion_to_charset(
437 if (zip->sconv == NULL)
448 if (!__archive_rb_tree_insert_node(&(zip->rbtree),
457 zip->total_number_time_defined[MTIME]++;
459 zip->total_number_time_defined[CTIME]++;
461 zip->total_number_time_defined[ATIME]++;
463 zip->total_number_entry++;
464 zip->total_bytes_entry_name += file->name_len + 2;
467 zip->total_number_empty_entry++;
469 zip->total_number_dir_entry++;
471 file_register_empty(zip, file);
478 if ((zip->total_number_entry - zip->total_number_empty_entry) == 1) {
479 r = _7z_compression_init_encoder(a, zip->opt_compression,
480 zip->opt_compression_level);
488 file_register(zip, file);
493 zip->cur_file = file;
497 zip->entry_bytes_remaining = file->size;
498 zip->entry_crc32 = 0;
509 zip->entry_crc32 = crc32(zip->entry_crc32, p, (unsigned)bytes);
510 zip->entry_bytes_remaining -= bytes;
522 struct _7zip *zip;
526 zip = (struct _7zip *)a->format_data;
531 if (zip->temp_fd == -1) {
532 zip->temp_offset = 0;
533 zip->temp_fd = __archive_mktemp(NULL);
534 if (zip->temp_fd < 0) {
543 ws = write(zip->temp_fd, p, s);
551 zip->temp_offset += ws;
560 struct _7zip *zip = (struct _7zip *)a->format_data;
563 if (run == ARCHIVE_Z_FINISH && zip->stream.total_in == 0 && s == 0)
566 if ((zip->crc32flg & PRECODE_CRC32) && s)
567 zip->precode_crc32 = crc32(zip->precode_crc32, buff,
569 zip->stream.next_in = (const unsigned char *)buff;
570 zip->stream.avail_in = s;
573 r = compression_code(&(a->archive), &(zip->stream), run);
576 if (zip->stream.avail_out == 0) {
577 if (write_to_temp(a, zip->wbuff, sizeof(zip->wbuff))
580 zip->stream.next_out = zip->wbuff;
581 zip->stream.avail_out = sizeof(zip->wbuff);
582 if (zip->crc32flg & ENCODED_CRC32)
583 zip->encoded_crc32 = crc32(zip->encoded_crc32,
584 zip->wbuff, sizeof(zip->wbuff));
588 if (zip->stream.avail_in == 0)
592 uint64_t bytes = sizeof(zip->wbuff) - zip->stream.avail_out;
593 if (write_to_temp(a, zip->wbuff, (size_t)bytes) != ARCHIVE_OK)
595 if ((zip->crc32flg & ENCODED_CRC32) && bytes)
596 zip->encoded_crc32 = crc32(zip->encoded_crc32,
597 zip->wbuff, (unsigned)bytes);
606 struct _7zip *zip;
609 zip = (struct _7zip *)a->format_data;
611 if (s > zip->entry_bytes_remaining)
612 s = (size_t)zip->entry_bytes_remaining;
613 if (s == 0 || zip->cur_file == NULL)
618 zip->entry_crc32 = crc32(zip->entry_crc32, buff, (unsigned)bytes);
619 zip->entry_bytes_remaining -= bytes;
626 struct _7zip *zip;
630 zip = (struct _7zip *)a->format_data;
631 if (zip->cur_file == NULL)
634 while (zip->entry_bytes_remaining > 0) {
635 s = (size_t)zip->entry_bytes_remaining;
642 zip->total_bytes_compressed += zip->stream.total_in;
643 zip->total_bytes_uncompressed += zip->stream.total_out;
644 zip->cur_file->crc32 = zip->entry_crc32;
645 zip->cur_file = NULL;
653 struct _7zip *zip;
657 zip = (struct _7zip *)a->format_data;
658 s = sizeof(zip->wbuff) - zip->wbuff_remaining;
659 r = __archive_write_output(a, zip->wbuff, s);
662 zip->wbuff_remaining = sizeof(zip->wbuff);
669 struct _7zip *zip;
672 zip = (struct _7zip *)a->format_data;
673 if (zip->temp_offset > 0 &&
674 lseek(zip->temp_fd, offset, SEEK_SET) < 0) {
683 if (length > zip->wbuff_remaining)
684 rsize = zip->wbuff_remaining;
687 wb = zip->wbuff + (sizeof(zip->wbuff) - zip->wbuff_remaining);
688 rs = read(zip->temp_fd, wb, rsize);
700 zip->wbuff_remaining -= rs;
702 if (zip->wbuff_remaining == 0) {
714 struct _7zip *zip;
721 zip = (struct _7zip *)a->format_data;
723 if (zip->total_number_entry > 0) {
732 data_size = zip->stream.total_out;
733 data_unpacksize = zip->stream.total_in;
734 zip->coder.codec = zip->opt_compression;
735 zip->coder.prop_size = zip->stream.prop_size;
736 zip->coder.props = zip->stream.props;
737 zip->stream.prop_size = 0;
738 zip->stream.props = NULL;
739 zip->total_number_nonempty_entry =
740 zip->total_number_entry - zip->total_number_empty_entry;
743 if (zip->empty_list.first != NULL) {
744 *zip->file_list.last = zip->empty_list.first;
745 zip->file_list.last = zip->empty_list.last;
748 ARCHIVE_RB_TREE_FOREACH(n, &(zip->rbtree)) {
749 file_register(zip, (struct file *)n);
758 if(zip->opt_compression == _7Z_LZMA2 ||
759 zip->opt_compression == _7Z_COPY)
760 header_compression = zip->opt_compression;
764 if (zip->total_number_entry == 1)
770 zip->opt_compression_level);
773 zip->crc32flg = PRECODE_CRC32;
774 zip->precode_crc32 = 0;
776 1, &(zip->coder));
783 header_size = zip->stream.total_out;
784 header_crc32 = zip->precode_crc32;
785 header_unpacksize = zip->stream.total_in;
792 free(zip->coder.props);
793 zip->coder.codec = header_compression;
794 zip->coder.prop_size = zip->stream.prop_size;
795 zip->coder.props = zip->stream.props;
796 zip->stream.prop_size = 0;
797 zip->stream.props = NULL;
802 zip->crc32flg = ENCODED_CRC32;
803 zip->encoded_crc32 = 0;
812 header_unpacksize, 1, &(zip->coder), 0,
820 header_size = zip->stream.total_out;
821 header_crc32 = zip->encoded_crc32;
823 zip->crc32flg = 0;
829 length = zip->temp_offset;
832 * Make the zip header on wbuff(write buffer).
834 wb = zip->wbuff;
835 zip->wbuff_remaining = sizeof(zip->wbuff);
843 zip->wbuff_remaining -= 32;
883 struct _7zip *zip = (struct _7zip *)a->format_data;
894 if (zip->total_number_nonempty_entry > 1 && coders->codec != _7Z_COPY) {
903 r = enc_uint64(a, zip->total_number_nonempty_entry);
913 file = zip->file_list.first;
936 file = zip->file_list.first;
959 struct _7zip *zip = (struct _7zip *)a->format_data;
966 numFolders = (int)zip->total_number_nonempty_entry;
993 struct file *file = zip->file_list.first;
1090 struct file *file = zip->file_list.first;
1166 struct _7zip *zip = (struct _7zip *)a->format_data;
1174 if (zip->total_number_time_defined[ti] == zip->total_number_entry) {
1180 r = enc_uint64(a, 2 + zip->total_number_entry * 8);
1188 if (zip->total_number_time_defined[ti] == 0)
1196 r = enc_uint64(a, 2 + ((zip->total_number_entry + 7) >> 3)
1197 + zip->total_number_time_defined[ti] * 8);
1208 file = zip->file_list.first;
1237 file = zip->file_list.first;
1255 struct _7zip *zip = (struct _7zip *)a->format_data;
1270 if (zip->total_number_nonempty_entry) {
1291 r = enc_uint64(a, zip->total_number_entry);
1295 if (zip->total_number_empty_entry > 0) {
1302 r = enc_uint64(a, (zip->total_number_entry+7)>>3);
1308 file = zip->file_list.first;
1328 if (zip->total_number_empty_entry > zip->total_number_dir_entry) {
1335 r = enc_uint64(a, (zip->total_number_empty_entry + 7) >> 3);
1341 file = zip->file_list.first;
1369 r = enc_uint64(a, zip->total_bytes_entry_name+1);
1378 file = zip->file_list.first;
1407 r = enc_uint64(a, 2 + zip->total_number_entry * 4);
1421 file = zip->file_list.first;
1458 struct _7zip *zip = (struct _7zip *)a->format_data;
1461 if (zip->temp_fd >= 0)
1462 close(zip->temp_fd);
1464 file_free_register(zip);
1465 compression_end(&(a->archive), &(zip->stream));
1466 free(zip->coder.props);
1467 free(zip);
1496 struct _7zip *zip;
1502 zip = (struct _7zip *)a->format_data;
1512 if (0 > archive_entry_pathname_l(entry, &u16, &u16len, zip->sconv)) {
1572 file_register(struct _7zip *zip, struct file *file)
1575 *zip->file_list.last = file;
1576 zip->file_list.last = &(file->next);
1580 file_init_register(struct _7zip *zip)
1582 zip->file_list.first = NULL;
1583 zip->file_list.last = &(zip->file_list.first);
1587 file_free_register(struct _7zip *zip)
1591 file = zip->file_list.first;
1600 file_register_empty(struct _7zip *zip, struct file *file)
1603 *zip->empty_list.last = file;
1604 zip->empty_list.last = &(file->next);
1608 file_init_register_empty(struct _7zip *zip)
1610 zip->empty_list.first = NULL;
1611 zip->empty_list.last = &(zip->empty_list.first);
2109 struct _7zip *zip = (struct _7zip *)(a->format_data);
2110 struct la_zstream *lastrm = &(zip->stream);
2255 struct _7zip *zip;
2258 zip = (struct _7zip *)a->format_data;
2262 &(a->archive), &(zip->stream),
2267 &(a->archive), &(zip->stream),
2272 &(a->archive), &(zip->stream),
2277 &(a->archive), &(zip->stream),
2282 &(a->archive), &(zip->stream),
2288 &(a->archive), &(zip->stream));
2292 zip->stream.total_in = 0;
2293 zip->stream.next_out = zip->wbuff;
2294 zip->stream.avail_out = sizeof(zip->wbuff);
2295 zip->stream.total_out = 0;