< prev index next >

src/share/native/java/util/zip/zlib/deflate.c

Print this page




 488 }
 489 
 490 /* ========================================================================= */
 491 int ZEXPORT deflateResetKeep (strm)
 492     z_streamp strm;
 493 {
 494     deflate_state *s;
 495 
 496     if (deflateStateCheck(strm)) {
 497         return Z_STREAM_ERROR;
 498     }
 499 
 500     strm->total_in = strm->total_out = 0;
 501     strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
 502     strm->data_type = Z_UNKNOWN;
 503 
 504     s = (deflate_state *)strm->state;
 505     s->pending = 0;
 506     s->pending_out = s->pending_buf;
 507 
 508     s->high_water = 0;      /* reset to its inital value 0 */
 509 
 510     if (s->wrap < 0) {
 511         s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
 512     }
 513     s->status =
 514 #ifdef GZIP
 515         s->wrap == 2 ? GZIP_STATE :
 516 #endif
 517         s->wrap ? INIT_STATE : BUSY_STATE;
 518     strm->adler =
 519 #ifdef GZIP
 520         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
 521 #endif
 522         adler32(0L, Z_NULL, 0);
 523     s->last_flush = Z_NO_FLUSH;
 524 
 525     _tr_init(s);
 526 
 527     return Z_OK;
 528 }
 529 
 530 /* ========================================================================= */
 531 int ZEXPORT deflateReset (strm)
 532     z_streamp strm;
 533 {
 534     int ret;
 535 
 536     ret = deflateResetKeep(strm);
 537     if (ret == Z_OK)
 538         lm_init(strm->state);
 539     return ret;
 540 }
 541 
 542 /* ========================================================================= */
 543 int ZEXPORT deflateSetHeader (strm, head)


 596     int level;
 597     int strategy;
 598 {
 599     deflate_state *s;
 600     compress_func func;
 601 
 602     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
 603     s = strm->state;
 604 
 605 #ifdef FASTEST
 606     if (level != 0) level = 1;
 607 #else
 608     if (level == Z_DEFAULT_COMPRESSION) level = 6;
 609 #endif
 610     if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
 611         return Z_STREAM_ERROR;
 612     }
 613     func = configuration_table[s->level].func;
 614 
 615     if ((strategy != s->strategy || func != configuration_table[level].func) &&
 616         s->high_water) {
 617         /* Flush the last buffer: */
 618         int err = deflate(strm, Z_BLOCK);
 619         if (err == Z_STREAM_ERROR)
 620             return err;
 621         if (strm->avail_out == 0)
 622             return Z_BUF_ERROR;
 623     }
 624     if (s->level != level) {
 625         if (s->level == 0 && s->matches != 0) {
 626             if (s->matches == 1)
 627                 slide_hash(s);
 628             else
 629                 CLEAR_HASH(s);
 630             s->matches = 0;
 631         }
 632         s->level = level;
 633         s->max_lazy_match   = configuration_table[level].max_lazy;
 634         s->good_match       = configuration_table[level].good_length;
 635         s->nice_match       = configuration_table[level].nice_length;
 636         s->max_chain_length = configuration_table[level].max_chain;




 488 }
 489 
 490 /* ========================================================================= */
 491 int ZEXPORT deflateResetKeep (strm)
 492     z_streamp strm;
 493 {
 494     deflate_state *s;
 495 
 496     if (deflateStateCheck(strm)) {
 497         return Z_STREAM_ERROR;
 498     }
 499 
 500     strm->total_in = strm->total_out = 0;
 501     strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
 502     strm->data_type = Z_UNKNOWN;
 503 
 504     s = (deflate_state *)strm->state;
 505     s->pending = 0;
 506     s->pending_out = s->pending_buf;
 507 


 508     if (s->wrap < 0) {
 509         s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
 510     }
 511     s->status =
 512 #ifdef GZIP
 513         s->wrap == 2 ? GZIP_STATE :
 514 #endif
 515         s->wrap ? INIT_STATE : BUSY_STATE;
 516     strm->adler =
 517 #ifdef GZIP
 518         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
 519 #endif
 520         adler32(0L, Z_NULL, 0);
 521     s->last_flush = -2;
 522 
 523     _tr_init(s);
 524 
 525     return Z_OK;
 526 }
 527 
 528 /* ========================================================================= */
 529 int ZEXPORT deflateReset (strm)
 530     z_streamp strm;
 531 {
 532     int ret;
 533 
 534     ret = deflateResetKeep(strm);
 535     if (ret == Z_OK)
 536         lm_init(strm->state);
 537     return ret;
 538 }
 539 
 540 /* ========================================================================= */
 541 int ZEXPORT deflateSetHeader (strm, head)


 594     int level;
 595     int strategy;
 596 {
 597     deflate_state *s;
 598     compress_func func;
 599 
 600     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
 601     s = strm->state;
 602 
 603 #ifdef FASTEST
 604     if (level != 0) level = 1;
 605 #else
 606     if (level == Z_DEFAULT_COMPRESSION) level = 6;
 607 #endif
 608     if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
 609         return Z_STREAM_ERROR;
 610     }
 611     func = configuration_table[s->level].func;
 612 
 613     if ((strategy != s->strategy || func != configuration_table[level].func) &&
 614         s->last_flush != -2) {
 615         /* Flush the last buffer: */
 616         int err = deflate(strm, Z_BLOCK);
 617         if (err == Z_STREAM_ERROR)
 618             return err;
 619         if (strm->avail_out == 0)
 620             return Z_BUF_ERROR;
 621     }
 622     if (s->level != level) {
 623         if (s->level == 0 && s->matches != 0) {
 624             if (s->matches == 1)
 625                 slide_hash(s);
 626             else
 627                 CLEAR_HASH(s);
 628             s->matches = 0;
 629         }
 630         s->level = level;
 631         s->max_lazy_match   = configuration_table[level].max_lazy;
 632         s->good_match       = configuration_table[level].good_length;
 633         s->nice_match       = configuration_table[level].nice_length;
 634         s->max_chain_length = configuration_table[level].max_chain;


< prev index next >