From: Gabriel B. <sh...@us...> - 2007-04-10 21:17:37
|
Update of /cvsroot/solidircd/solidircd-stable/zlib In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv616/zlib Modified Files: trees.c Log Message: compile fixes Index: trees.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/zlib/trees.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** trees.c 27 Jun 2005 03:02:44 -0000 1.1.1.1 --- trees.c 10 Apr 2007 21:17:34 -0000 1.2 *************** *** 1,4 **** /* trees.c -- output deflated data using Huffman coding ! * Copyright (C) 1995-2003 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ --- 1,4 ---- /* trees.c -- output deflated data using Huffman coding ! * Copyright (C) 1995-2005 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ *************** *** 556,560 **** m = s->heap[--h]; if (m > max_code) continue; ! if (tree[m].Len != (unsigned) bits) { Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); s->opt_len += ((long)bits - (long)tree[m].Len) --- 556,560 ---- m = s->heap[--h]; if (m > max_code) continue; ! if ((unsigned) tree[m].Len != (unsigned) bits) { Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); s->opt_len += ((long)bits - (long)tree[m].Len) *************** *** 931,936 **** if (s->level > 0) { ! /* Check if the file is ascii or binary */ ! if (s->data_type == Z_UNKNOWN) set_data_type(s); /* Construct the literal and distance trees */ --- 931,937 ---- if (s->level > 0) { ! /* Check if the file is binary or text */ ! if (stored_len > 0 && s->strm->data_type == Z_UNKNOWN) ! set_data_type(s); /* Construct the literal and distance trees */ *************** *** 983,987 **** } else if (static_lenb >= 0) { /* force static trees */ #else ! } else if (static_lenb == opt_lenb) { #endif send_bits(s, (STATIC_TREES<<1)+eof, 3); --- 984,988 ---- } else if (static_lenb >= 0) { /* force static trees */ #else ! } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { #endif send_bits(s, (STATIC_TREES<<1)+eof, 3); *************** *** 1118,1136 **** /* =========================================================================== ! * Set the data type to ASCII or BINARY, using a crude approximation: ! * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise. ! * IN assertion: the fields freq of dyn_ltree are set and the total of all ! * frequencies does not exceed 64K (to fit in an int on 16 bit machines). */ local void set_data_type(s) deflate_state *s; { ! int n = 0; ! unsigned ascii_freq = 0; ! unsigned bin_freq = 0; ! while (n < 7) bin_freq += s->dyn_ltree[n++].Freq; ! while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq; ! while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq; ! s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII); } --- 1119,1140 ---- /* =========================================================================== ! * Set the data type to BINARY or TEXT, using a crude approximation: ! * set it to Z_TEXT if all symbols are either printable characters (33 to 255) ! * or white spaces (9 to 13, or 32); or set it to Z_BINARY otherwise. ! * IN assertion: the fields Freq of dyn_ltree are set. */ local void set_data_type(s) deflate_state *s; { ! int n; ! ! for (n = 0; n < 9; n++) ! if (s->dyn_ltree[n].Freq != 0) ! break; ! if (n == 9) ! for (n = 14; n < 32; n++) ! if (s->dyn_ltree[n].Freq != 0) ! break; ! s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY; } |