]>
git.saurik.com Git - wxWidgets.git/blob - src/zlib/infutil.c
   1 /* inflate_util.c -- data and routines common to blocks and codes 
   2  * Copyright (C) 1995-2002 Mark Adler 
   3  * For conditions of distribution and use, see copyright notice in zlib.h 
  12 struct inflate_codes_state 
{int dummy
;}; /* for buggy compilers */ 
  14 /* And'ing with mask[n] masks the lower n bits */ 
  15 uInt inflate_mask
[17] = { 
  17     0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, 
  18     0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff 
  22 /* copy as much as possible from the sliding window to the output area */ 
  23 #if defined(__VISAGECPP__) /* Visualage can't handle this antiquated interface */ 
  24 int inflate_flush(inflate_blocks_statef
* s
, z_streamp z
, int r
) 
  26 int inflate_flush(s
, z
, r
) 
  27 inflate_blocks_statef 
*s
; 
  36   /* local copies of source and destination pointers */ 
  40   /* compute number of bytes to copy as far as end of window */ 
  41   n 
= (uInt
)((q 
<= s
->write 
? s
->write 
: s
->end
) - q
); 
  42   if (n 
> z
->avail_out
) n 
= z
->avail_out
; 
  43   if (n 
&& r 
== Z_BUF_ERROR
) r 
= Z_OK
; 
  49   /* update check information */ 
  50   if (s
->checkfn 
!= Z_NULL
) 
  51     z
->adler 
= s
->check 
= (*s
->checkfn
)(s
->check
, q
, n
); 
  53   /* copy as far as end of window */ 
  58   /* see if more to copy at beginning of window */ 
  63     if (s
->write 
== s
->end
) 
  66     /* compute bytes to copy */ 
  67     n 
= (uInt
)(s
->write 
- q
); 
  68     if (n 
> z
->avail_out
) n 
= z
->avail_out
; 
  69     if (n 
&& r 
== Z_BUF_ERROR
) r 
= Z_OK
; 
  75     /* update check information */ 
  76     if (s
->checkfn 
!= Z_NULL
) 
  77       z
->adler 
= s
->check 
= (*s
->checkfn
)(s
->check
, q
, n
);