This commit was manufactured by cvs2svn to create branch 'fedora'.
[linux-2.6.git] / net / tux / gzip.c
1 /*      $Id: zlib.h,v 1.2 1997/12/23 10:47:44 paulus Exp $      */
2
3 #include <linux/kernel.h>
4 #include <linux/slab.h>
5 #include <linux/zlib.h>
6 #include <net/tux.h>
7
8 #define STREAM_END_SPACE 12
9
10 int tux_gzip_compress (tux_req_t *req, unsigned char *data_in, unsigned char *data_out, __u32 *in_len, __u32 *out_len)
11 {
12         z_stream *s = &req->ti->gzip_state;
13         int ret, left;
14
15         down(&req->ti->gzip_sem);
16         if (zlib_deflateReset(s) != Z_OK)
17                 BUG();
18
19         s->next_in = data_in;
20         s->next_out = data_out;
21         s->avail_in = *in_len;
22         s->avail_out = *out_len;
23
24         Dprintk("calling zlib_deflate with avail_in %d, avail_out %d\n", s->avail_in, s->avail_out);
25         ret = zlib_deflate(s, Z_FINISH);
26         Dprintk("deflate returned with avail_in %d, avail_out %d, total_in %ld, total_out %ld\n", s->avail_in, s->avail_out, s->total_in, s->total_out);
27
28         if (ret != Z_STREAM_END) {
29                 printk("bad: deflate returned with %d! avail_in %d, avail_out %d, total_in %ld, total_out %ld\n", ret, s->avail_in, s->avail_out, s->total_in, s->total_out);
30                 BUG();
31         }
32         *in_len = s->avail_in;
33         *out_len = s->avail_out;
34         left = s->avail_in;
35
36         up(&req->ti->gzip_sem);
37
38         return left;
39 }
40