initially checkin
[gnupg.git] / g10 / compressed.c
1 /* compressed.c -  process an compressed packet
2  *      Copyright (c) 1997 by Werner Koch (dd9jn)
3  *
4  * This file is part of G10.
5  *
6  * G10 is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * G10 is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19  */
20
21 #include <config.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 #include <unistd.h>
26 #include <errno.h>
27 /*#include <zlib.h>*/
28 #include "util.h"
29 #include "memory.h"
30 #include "packet.h"
31
32
33 /****************
34  * Handle a compressed packet
35  */
36 int
37 handle_compressed( PKT_compressed *zd )
38 {
39   return -1;
40   #if 0
41     int c, zrc, rc = 0;
42     z_stream *zs = NULL;
43     unsigned inbufsize = 4096;
44     unsigned outbufsize = 16384;
45     unsigned n;
46     byte *inbuf = NULL;
47     byte *outbuf = NULL;
48
49     if( zd->algorithm != 1 ) {
50         rc =G10ERR_COMPR_ALGO;
51         goto leave;
52     }
53
54     zs = m_alloc_clear( sizeof *zs );
55     if( (zrc = inflateInit( zs )) != Z_OK ) {
56         log_fatal("zlib problem: %s\n", zs->msg? zs->msg :
57                               zrc == Z_MEM_ERROR ? "out of core" :
58                               zrc == Z_VERSION_ERROR ? "invalid lib version" :
59                                                        "unknown error" );
60     }
61
62     inbuf = m_alloc( inbufsize );
63     outbuf = m_alloc( outbufsize ); /* Fixme: put it in secure space? */
64
65     zs->next_in = inbuf;
66     zs->avail_in = inbufsize;
67     zs->next_out = outbuf;
68     zs->avail_out = outbufsize;
69
70     n = 0;
71     inbuf[n++] = 0x58;
72     inbuf[n++] = 0x09;
73     for(; n < inbufsize && (c=iobuf_get(zd->buf)) != -1 ; n++ )
74         inbuf[n] = c;
75     if( n ) {
76         { int i;
77           printf("start of compressed packet (n=%u):\n", n);
78           for(i=0; i < 32 && i < n; i++ )
79             printf(" %02x", inbuf[i] );
80           putchar('\n');
81         }
82         zrc = inflate( zs, Z_PARTIAL_FLUSH );
83         switch( zrc ) {
84           case Z_OK:
85             log_info("inflate returned okay\n");
86             break;
87           case Z_STREAM_END:
88             log_info("inflate returned stream-end\n");
89             break;
90           case Z_NEED_DICT:
91           case Z_DATA_ERROR:
92           case Z_STREAM_ERROR:
93           case Z_MEM_ERROR:
94           case Z_BUF_ERROR:
95           default:
96             if( zs->msg )
97                 log_error("zlib inflate problem: %s\n", zs->msg );
98             else
99                 log_error("zlib inflate problem: rc=%d\n", zrc );
100             break;
101         }
102     }
103
104   leave:
105     if( zs ) {
106         inflateEnd(zs);
107         m_free(zs);
108     }
109     m_free(inbuf);
110     m_free(outbuf);
111     return rc;
112   #endif
113 }
114