URI:
       tdeflatezlibblock.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tdeflatezlibblock.c (686B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <flate.h>
            4 #include "zlib.h"
            5 
            6 int
            7 deflatezlibblock(uchar *dst, int dsize, uchar *src, int ssize, int level, int debug)
            8 {
            9         ulong adler;
           10         int n;
           11 
           12         if(dsize < 6)
           13                 return FlateOutputFail;
           14 
           15         n = deflateblock(dst + 2, dsize - 6, src, ssize, level, debug);
           16         if(n < 0)
           17                 return n;
           18 
           19         dst[0] = ZlibDeflate | ZlibWin32k;
           20 
           21         /* bogus zlib encoding of compression level */
           22         dst[1] = ((level > 2) + (level > 5) + (level > 8)) << 6;
           23 
           24         /* header check field */
           25         dst[1] |= 31 - ((dst[0] << 8) | dst[1]) % 31;
           26 
           27         adler = adler32(1, src, ssize);
           28         dst[n + 2] = adler >> 24;
           29         dst[n + 3] = adler >> 16;
           30         dst[n + 4] = adler >> 8;
           31         dst[n + 5] = adler;
           32 
           33         return n + 6;
           34 }