annotate Modules/zlibmodule.c @ 15164:8930ec3bc00a legacy-trunk

Added additional test cases for pulldom modifications.
author Lars Gustäbel <lars@gustaebel.de>
date Wed, 11 Oct 2000 22:36:00 +0000
parents 7de0808f1fe3
children c696a52c2621
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /* zlibmodule.c -- gzip-compatible data compression */
8276
7076531efb8f Added URLs for zlib's home page and the Windows DLL's home page .
Guido van Rossum <guido@python.org>
parents: 8128
diff changeset
2 /* See http://www.cdrom.com/pub/infozip/zlib/ */
7076531efb8f Added URLs for zlib's home page and the Windows DLL's home page .
Guido van Rossum <guido@python.org>
parents: 8128
diff changeset
3 /* See http://www.winimage.com/zLibDll for Windows */
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
5723
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
5 #include "Python.h"
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
6 #include "zlib.h"
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 /* The following parameters are copied from zutil.h, version 0.95 */
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 #define DEFLATED 8
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 #if MAX_MEM_LEVEL >= 8
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 # define DEF_MEM_LEVEL 8
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 #else
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # define DEF_MEM_LEVEL MAX_MEM_LEVEL
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 #endif
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 #define DEF_WBITS MAX_WBITS
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
10538
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
17 /* The output buffer will be increased in chunks of DEFAULTALLOC bytes. */
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
18 #define DEFAULTALLOC (16*1024)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 #define PyInit_zlib initzlib
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
20
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 staticforward PyTypeObject Comptype;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 staticforward PyTypeObject Decomptype;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 static PyObject *ZlibError;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
25
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 typedef struct
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 PyObject_HEAD
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 z_stream zst;
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
30 PyObject *unused_data;
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
31 int is_initialised;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 } compobject;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
34 static char compressobj__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
35 "compressobj() -- Return a compressor object.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
36 "compressobj(level) -- Return a compressor object, using the given compression level.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
37 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
38
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
39 static char decompressobj__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
40 "decompressobj() -- Return a decompressor object.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
41 "decompressobj(wbits) -- Return a decompressor object, setting the window buffer size to wbits.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
42 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
43
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 static compobject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
45 newcompobject(PyTypeObject *type)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 compobject *self;
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 12255
diff changeset
48 self = PyObject_New(compobject, type);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 if (self == NULL)
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 return NULL;
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
51 self->is_initialised = 0;
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
52 self->unused_data = PyString_FromString("");
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 return self;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
55
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
56 static char compress__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
57 "compress(string) -- Compress string using the default compression level, "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
58 "returning a string containing compressed data.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
59 "compress(string, level) -- Compress string, using the chosen compression "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
60 "level (from 1 to 9). Return a string containing the compressed data.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
61 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
62
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
64 PyZlib_compress(PyObject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 PyObject *ReturnVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 Byte *input, *output;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 int length, level=Z_DEFAULT_COMPRESSION, err;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 z_stream zst;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
70
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
71 if (!PyArg_ParseTuple(args, "s#|i:compress", &input, &length, &level))
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 return NULL;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
73 zst.avail_out = length + length/1000 + 12 + 1;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 output=(Byte*)malloc(zst.avail_out);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 if (output==NULL)
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 "Can't allocate memory to compress data");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 }
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
81
9662
9ba7f50b825a replace missing zalloc initialization (test_zlib now runs
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9661
diff changeset
82 zst.zalloc=(alloc_func)NULL;
5723
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
83 zst.zfree=(free_func)Z_NULL;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 zst.next_out=(Byte *)output;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 zst.next_in =(Byte *)input;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 zst.avail_in=length;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 err=deflateInit(&zst, level);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 switch(err)
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 case(Z_OK):
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 break;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 case(Z_MEM_ERROR):
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 "Out of memory while compressing data");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 free(output);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 case(Z_STREAM_ERROR):
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 PyErr_SetString(ZlibError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 "Bad compression level");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 free(output);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 default:
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
104 if (zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
105 PyErr_Format(ZlibError, "Error %i while compressing data",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
106 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
107 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
108 PyErr_Format(ZlibError, "Error %i while compressing data: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
109 err, zst.msg);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 deflateEnd(&zst);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 free(output);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
115
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 err=deflate(&zst, Z_FINISH);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 switch(err)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
118 {
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 case(Z_STREAM_END):
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 break;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 /* Are there other errors to be trapped here? */
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 default:
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
123 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
124 if (zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
125 PyErr_Format(ZlibError, "Error %i while compressing data",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
126 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
127 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
128 PyErr_Format(ZlibError, "Error %i while compressing data: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
129 err, zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
130 deflateEnd(&zst);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
131 free(output);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
132 return NULL;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
133 }
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
134 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 err=deflateEnd(&zst);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 if (err!=Z_OK)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
137 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
138 if (zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
139 PyErr_Format(ZlibError, "Error %i while finishing compression",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
140 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
141 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
142 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
143 "Error %i while finishing compression: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
144 err, zst.msg);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 free(output);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 }
5723
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
148 ReturnVal=PyString_FromStringAndSize((char *)output, zst.total_out);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 free(output);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 return ReturnVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
152
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
153 static char decompress__doc__[] =
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
154 "decompress(string) -- Decompress the data in string, returning a string containing the decompressed data.\n"
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
155 "decompress(string, wbits) -- Decompress the data in string with a window buffer size of wbits.\n"
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
156 "decompress(string, wbits, bufsize) -- Decompress the data in string with a window buffer size of wbits and an initial output buffer size of bufsize.\n"
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
157 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
158
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
160 PyZlib_decompress(PyObject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 {
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
162 PyObject *result_str;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
163 Byte *input;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 int length, err;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
165 int wsize=DEF_WBITS, r_strlen=DEFAULTALLOC;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 z_stream zst;
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
167 if (!PyArg_ParseTuple(args, "s#|ii:decompress", &input, &length, &wsize, &r_strlen))
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 return NULL;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
169
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
170 if (r_strlen <= 0)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
171 r_strlen = 1;
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
172
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 zst.avail_in=length;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
174 zst.avail_out=r_strlen;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
175 if (!(result_str = PyString_FromStringAndSize(NULL, r_strlen)))
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
176 {
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 "Can't allocate memory to decompress data");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 return NULL;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
180 }
5723
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
181 zst.zalloc=(alloc_func)NULL;
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
182 zst.zfree=(free_func)Z_NULL;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
183 zst.next_out=(Byte *)PyString_AsString(result_str);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 zst.next_in =(Byte *)input;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
185 err=inflateInit2(&zst, wsize);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 switch(err)
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 case(Z_OK):
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 break;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 case(Z_MEM_ERROR):
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
192 "Out of memory while decompressing data");
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
193 Py_DECREF(result_str);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 default:
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
197 if (zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
198 PyErr_Format(ZlibError, "Error %i preparing to decompress data",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
199 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
200 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
201 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
202 "Error %i while preparing to decompress data: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
203 err, zst.msg);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 inflateEnd(&zst);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
205 Py_DECREF(result_str);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 do
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 err=inflate(&zst, Z_FINISH);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 switch(err)
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 {
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
214 case(Z_STREAM_END):
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
215 break;
8128
fdba6397b729 Tiny patch for zlib 1.1.2
Guido van Rossum <guido@python.org>
parents: 6911
diff changeset
216 case(Z_BUF_ERROR):
15098
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
217 /*
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
218 * If there is at least 1 byte of room according to zst.avail_out
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
219 * and we get this error, assume that it means zlib cannot
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
220 * process the inflate call() due to an error in the data.
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
221 */
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
222 if (zst.avail_out > 0)
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
223 {
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
224 PyErr_Format(ZlibError, "Error %i while decompressing data",
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
225 err);
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
226 inflateEnd(&zst);
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
227 Py_DECREF(result_str);
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
228 return NULL;
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
229 }
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
230 /* fall through */
7de0808f1fe3 Patch #101810: check whether zst.avail_out is non-zero when getting
Andrew M. Kuchling <amk@amk.ca>
parents: 13816
diff changeset
231 case(Z_OK):
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
232 /* need more memory */
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
233 if (_PyString_Resize(&result_str, r_strlen << 1) == -1)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 "Out of memory while decompressing data");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 inflateEnd(&zst);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 }
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
240 zst.next_out = (unsigned char *)PyString_AsString(result_str) + r_strlen;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
241 zst.avail_out=r_strlen;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
242 r_strlen = r_strlen << 1;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
243 break;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 default:
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
246 if (zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
247 PyErr_Format(ZlibError, "Error %i while decompressing data",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
248 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
249 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
250 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
251 "Error %i while decompressing data: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
252 err, zst.msg);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 inflateEnd(&zst);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
254 Py_DECREF(result_str);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
256 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 } while(err!=Z_STREAM_END);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
259
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
260 err=inflateEnd(&zst);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 if (err!=Z_OK)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
262 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
263 if (zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
264 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
265 "Error %i while finishing data decompression",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
266 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
267 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
268 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
269 "Error %i while finishing data decompression: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
270 err, zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
271 Py_DECREF(result_str);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 }
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
274 _PyString_Resize(&result_str, zst.total_out);
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
275 return result_str;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
277
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
278 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
279 PyZlib_compressobj(PyObject *selfptr, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
280 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
281 compobject *self;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
282 int level=Z_DEFAULT_COMPRESSION, method=DEFLATED;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
283 int wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=0, err;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
284
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
285 if (!PyArg_ParseTuple(args, "|iiiii:compressobj", &level, &method, &wbits,
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
286 &memLevel, &strategy))
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
287 return NULL;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
288
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
289 self = newcompobject(&Comptype);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 if (self==NULL) return(NULL);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
291 self->zst.zalloc = (alloc_func)NULL;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
292 self->zst.zfree = (free_func)Z_NULL;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
293 err = deflateInit2(&self->zst, level, method, wbits, memLevel, strategy);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 switch(err)
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 case (Z_OK):
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
297 self->is_initialised = 1;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 return (PyObject*)self;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 case (Z_MEM_ERROR):
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
300 Py_DECREF(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
301 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 "Can't allocate memory for compression object");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
304 case(Z_STREAM_ERROR):
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
305 Py_DECREF(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
306 PyErr_SetString(PyExc_ValueError,
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
307 "Invalid initialization option");
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
308 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 default:
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
310 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
311 if (self->zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
312 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
313 "Error %i while creating compression object",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
314 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
315 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
316 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
317 "Error %i while creating compression object: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
318 err, self->zst.msg);
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
319 Py_DECREF(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
323 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
324
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
326 PyZlib_decompressobj(PyObject *selfptr, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 int wbits=DEF_WBITS, err;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 compobject *self;
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
330 if (!PyArg_ParseTuple(args, "|i:decompressobj", &wbits))
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
334 self=newcompobject(&Decomptype);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 if (self==NULL) return(NULL);
5723
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
336 self->zst.zalloc=(alloc_func)NULL;
beee351f1f72 Small changes (casts etc.) by Jack, for Mac compilation.
Guido van Rossum <guido@python.org>
parents: 5722
diff changeset
337 self->zst.zfree=(free_func)Z_NULL;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
338 err=inflateInit2(&self->zst, wbits);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 switch(err)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
340 {
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 case (Z_OK):
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
342 self->is_initialised = 1;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 return (PyObject*)self;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
344 case(Z_STREAM_ERROR):
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
345 Py_DECREF(self);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
346 PyErr_SetString(PyExc_ValueError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
347 "Invalid initialization option");
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
348 return NULL;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
349 case (Z_MEM_ERROR):
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
350 Py_DECREF(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 PyErr_SetString(PyExc_MemoryError,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
352 "Can't allocate memory for decompression object");
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 default:
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
355 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
356 if (self->zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
357 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
358 "Error %i while creating decompression object",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
359 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
360 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
361 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
362 "Error %i while creating decompression object: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
363 err, self->zst.msg);
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
364 Py_DECREF(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 }
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
367 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
369
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
370 static void
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
371 Comp_dealloc(compobject *self)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
372 {
10028
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
373 if (self->is_initialised)
167adf31786d Added missing DECREF's in the error branches when creating a compressor or
Andrew M. Kuchling <amk@amk.ca>
parents: 9995
diff changeset
374 deflateEnd(&self->zst);
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
375 Py_XDECREF(self->unused_data);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 12255
diff changeset
376 PyObject_Del(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
377 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
378
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
379 static void
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
380 Decomp_dealloc(compobject *self)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
381 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
382 inflateEnd(&self->zst);
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
383 Py_XDECREF(self->unused_data);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 12255
diff changeset
384 PyObject_Del(self);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
385 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
386
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
387 static char comp_compress__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
388 "compress(data) -- Return a string containing a compressed version of the data.\n\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
389 "After calling this function, some of the input data may still\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
390 "be stored in internal buffers for later processing.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
391 "Call the flush() method to clear these buffers."
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
392 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
393
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
394
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
395 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
396 PyZlib_objcompress(compobject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
397 {
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
398 int err = Z_OK, inplen;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
399 int length = DEFAULTALLOC;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
400 PyObject *RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 Byte *input;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
402 unsigned long start_total_out;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
403
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
404 if (!PyArg_ParseTuple(args, "s#:compress", &input, &inplen))
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
405 return NULL;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
406 self->zst.avail_in = inplen;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
407 self->zst.next_in = input;
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
408 if (!(RetVal = PyString_FromStringAndSize(NULL, length))) {
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
409 PyErr_SetString(PyExc_MemoryError,
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
410 "Can't allocate memory to compress data");
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
411 return NULL;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
412 }
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
413 start_total_out = self->zst.total_out;
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
414 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal);
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
415 self->zst.avail_out = length;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
416 while (self->zst.avail_in != 0 && err == Z_OK)
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
417 {
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
418 err = deflate(&(self->zst), Z_NO_FLUSH);
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
419 if (self->zst.avail_out <= 0) {
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
420 if (_PyString_Resize(&RetVal, length << 1) == -1) {
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
421 PyErr_SetString(PyExc_MemoryError,
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
422 "Can't allocate memory to compress data");
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
423 return NULL;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
424 }
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
425 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal) + length;
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
426 self->zst.avail_out = length;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
427 length = length << 1;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
428 }
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
429 }
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
430 if (err != Z_OK)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
431 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
432 if (self->zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
433 PyErr_Format(ZlibError, "Error %i while compressing",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
434 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
435 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
436 PyErr_Format(ZlibError, "Error %i while compressing: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
437 err, self->zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
438 Py_DECREF(RetVal);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
440 }
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
441 _PyString_Resize(&RetVal, self->zst.total_out - start_total_out);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
442 return RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
444
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
445 static char decomp_decompress__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
446 "decompress(data) -- Return a string containing the decompressed version of the data.\n\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
447 "After calling this function, some of the input data may still\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
448 "be stored in internal buffers for later processing.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
449 "Call the flush() method to clear these buffers."
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
450 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
451
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
453 PyZlib_objdecompress(compobject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
454 {
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
455 int length, err, inplen;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
456 PyObject *RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
457 Byte *input;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
458 unsigned long start_total_out;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
459
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
460 if (!PyArg_ParseTuple(args, "s#:decompress", &input, &inplen))
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 return NULL;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
462 start_total_out = self->zst.total_out;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
463 RetVal = PyString_FromStringAndSize(NULL, DEFAULTALLOC);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
464 self->zst.avail_in = inplen;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
465 self->zst.next_in = input;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
466 self->zst.avail_out = length = DEFAULTALLOC;
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
467 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal);
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
468 err = Z_OK;
6003
508921950f2c Must update the available space in the output buffer after
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 5723
diff changeset
469
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
470 while (self->zst.avail_in != 0 && err == Z_OK)
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
471 {
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
472 err = inflate(&(self->zst), Z_NO_FLUSH);
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
473 if (err == Z_OK && self->zst.avail_out <= 0)
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
474 {
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
475 if (_PyString_Resize(&RetVal, length << 1) == -1)
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
476 {
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
477 PyErr_SetString(PyExc_MemoryError,
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
478 "Can't allocate memory to compress data");
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
479 return NULL;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
480 }
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
481 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal) + length;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
482 self->zst.avail_out = length;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
483 length = length << 1;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
484 }
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
485 }
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
486
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
487 if (err != Z_OK && err != Z_STREAM_END)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
488 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
489 if (self->zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
490 PyErr_Format(ZlibError, "Error %i while decompressing",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
491 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
492 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
493 PyErr_Format(ZlibError, "Error %i while decompressing: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
494 err, self->zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
495 Py_DECREF(RetVal);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
496 return NULL;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
497 }
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
498
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
499 if (err == Z_STREAM_END)
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
500 {
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
501 /* The end of the compressed data has been reached, so set
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
502 the unused_data attribute to a string containing the
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
503 remainder of the data in the string. */
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
504 int pos = self->zst.next_in - input; /* Position in the string */
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
505 Py_XDECREF(self->unused_data); /* Free the original, empty string */
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
506
10571
4aff39175137 Cast added by Jack Jansen (for Mac port).
Guido van Rossum <guido@python.org>
parents: 10538
diff changeset
507 self->unused_data = PyString_FromStringAndSize((char *)input+pos,
4aff39175137 Cast added by Jack Jansen (for Mac port).
Guido van Rossum <guido@python.org>
parents: 10538
diff changeset
508 inplen-pos);
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
509 if (self->unused_data == NULL) return NULL;
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
510 }
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
511
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
512 _PyString_Resize(&RetVal, self->zst.total_out - start_total_out);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 return RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
514 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
515
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
516 static char comp_flush__doc__[] =
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
517 "flush( [mode] ) -- Return a string containing any remaining compressed data.\n"
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
518 "mode can be one of the constants Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH; the \n"
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
519 "default value used when mode is not specified is Z_FINISH.\n"
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
520 "If mode == Z_FINISH, the compressor object can no longer be used after\n"
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
521 "calling the flush() method. Otherwise, more data can still be compressed.\n"
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
522 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
523
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
525 PyZlib_flush(compobject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 {
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
527 int length=DEFAULTALLOC, err = Z_OK;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 PyObject *RetVal;
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
529 int flushmode = Z_FINISH;
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
530 unsigned long start_total_out;
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
531
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
532 if (!PyArg_ParseTuple(args, "|i:flush", &flushmode))
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
533 return NULL;
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
534
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
535 /* Flushing with Z_NO_FLUSH is a no-op, so there's no point in
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
536 doing any work at all; just return an empty string. */
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
537 if (flushmode == Z_NO_FLUSH)
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
538 {
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
539 return PyString_FromStringAndSize(NULL, 0);
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
540 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
541
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
542 self->zst.avail_in = 0;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
543 self->zst.next_in = Z_NULL;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
544 if (!(RetVal = PyString_FromStringAndSize(NULL, length))) {
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
545 PyErr_SetString(PyExc_MemoryError,
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
546 "Can't allocate memory to compress data");
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
547 return NULL;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
548 }
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
549 start_total_out = self->zst.total_out;
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
550 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal);
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
551 self->zst.avail_out = length;
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
552
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
553 /* When flushing the zstream, there's no input data.
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
554 If zst.avail_out == 0, that means that more output space is
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
555 needed to complete the flush operation. */
10440
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
556 while (1) {
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
557 err = deflate(&(self->zst), flushmode);
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
558
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
559 /* If the output is Z_OK, and there's still room in the output
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
560 buffer, then the flush is complete. */
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
561 if ( (err == Z_OK) && self->zst.avail_out > 0) break;
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
562
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
563 /* A nonzero return indicates some sort of error (but see
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
564 the comment for the error handler below) */
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
565 if ( err != Z_OK ) break;
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
566
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
567 /* There's no space left for output, so increase the buffer and loop
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
568 again */
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
569 if (_PyString_Resize(&RetVal, length << 1) == -1) {
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
570 PyErr_SetString(PyExc_MemoryError,
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
571 "Can't allocate memory to compress data");
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
572 return NULL;
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
573 }
10440
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
574 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal) + length;
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
575 self->zst.avail_out = length;
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
576 length = length << 1;
9796
7ef5a1520ae5 fix bug in PyZlib_flush.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9662
diff changeset
577 }
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
578
10440
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
579 /* Raise an exception indicating an error. The condition for
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
580 detecting a error is kind of complicated; Z_OK indicates no
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
581 error, but if the flushmode is Z_FINISH, then Z_STREAM_END is
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
582 also not an error. */
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
583 if (err!=Z_OK && !(flushmode == Z_FINISH && err == Z_STREAM_END) )
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
584 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
585 if (self->zst.msg == Z_NULL)
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
586 PyErr_Format(ZlibError, "Error %i while flushing",
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
587 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
588 else
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
589 PyErr_Format(ZlibError, "Error %i while flushing: %.200s",
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
590 err, self->zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
591 Py_DECREF(RetVal);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
592 return NULL;
9796
7ef5a1520ae5 fix bug in PyZlib_flush.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9662
diff changeset
593 }
10440
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
594
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
595 /* If flushmode is Z_FINISH, we also have to call deflateEnd() to
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
596 free various data structures */
b94144de2f32 Fixed the flush() method of compression objects; the test for
Andrew M. Kuchling <amk@amk.ca>
parents: 10028
diff changeset
597
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
598 if (flushmode == Z_FINISH) {
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
599 err=deflateEnd(&(self->zst));
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
600 if (err!=Z_OK) {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
601 if (self->zst.msg == Z_NULL)
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
602 PyErr_Format(ZlibError, "Error %i from deflateEnd()",
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
603 err);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
604 else
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
605 PyErr_Format(ZlibError,
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
606 "Error %i from deflateEnd(): %.200s",
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
607 err, self->zst.msg);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
608 Py_DECREF(RetVal);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
609 return NULL;
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
610 }
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
611 }
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
612 _PyString_Resize(&RetVal, self->zst.total_out - start_total_out);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
613 return RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
614 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
615
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
616 static char decomp_flush__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
617 "flush() -- Return a string containing any remaining decompressed data. "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
618 "The decompressor object can no longer be used after this call."
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
619 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
620
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
622 PyZlib_unflush(compobject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
623 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
624 int length=0, err;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
625 PyObject *RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
626
13816
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
627 if (!PyArg_ParseTuple(args, ""))
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
628 return NULL;
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
629 if (!(RetVal = PyString_FromStringAndSize(NULL, DEFAULTALLOC)))
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
630 {
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
631 PyErr_SetString(PyExc_MemoryError,
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
632 "Can't allocate memory to decompress data");
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
633 return NULL;
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
634 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
635 self->zst.avail_in=0;
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
636 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal);
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
637 length = self->zst.avail_out = DEFAULTALLOC;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
638
10538
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
639 /* I suspect that Z_BUF_ERROR is the only error code we need to check for
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
640 in the following loop, but will leave the Z_OK in for now to avoid
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
641 destabilizing this function. --amk */
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
642 err = Z_OK;
10538
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
643 while ( err == Z_OK )
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
644 {
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
645 err = inflate(&(self->zst), Z_FINISH);
10538
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
646 if ( ( err == Z_OK || err == Z_BUF_ERROR ) && self->zst.avail_out == 0)
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
647 {
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
648 if (_PyString_Resize(&RetVal, length << 1) == -1)
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
649 {
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
650 PyErr_SetString(PyExc_MemoryError,
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
651 "Can't allocate memory to decompress data");
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
652 return NULL;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
653 }
6094
a22fca7a5c5a Casts by Jack to shut up the Mac compiler.
Guido van Rossum <guido@python.org>
parents: 6042
diff changeset
654 self->zst.next_out = (unsigned char *)PyString_AsString(RetVal) + length;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
655 self->zst.avail_out = length;
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
656 length = length << 1;
10538
ccee3c28b7ef Patch by Andrew Kuchling to unflush() (flush() for deflating).
Guido van Rossum <guido@python.org>
parents: 10467
diff changeset
657 err = Z_OK;
6007
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
658 }
9ba72fc4f503 Many changes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6003
diff changeset
659 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
660 if (err!=Z_STREAM_END)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
661 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
662 if (self->zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
663 PyErr_Format(ZlibError, "Error %i while decompressing",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
664 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
665 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
666 PyErr_Format(ZlibError, "Error %i while decompressing: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
667 err, self->zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
668 Py_DECREF(RetVal);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
669 return NULL;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
670 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 err=inflateEnd(&(self->zst));
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 if (err!=Z_OK)
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
673 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
674 if (self->zst.msg == Z_NULL)
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
675 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
676 "Error %i while flushing decompression object",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
677 err);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
678 else
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
679 PyErr_Format(ZlibError,
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
680 "Error %i while flushing decompression object: %.200s",
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
681 err, self->zst.msg);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
682 Py_DECREF(RetVal);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
683 return NULL;
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
684 }
6042
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
685 _PyString_Resize(&RetVal,
6db3d52d4a78 Several bug fixes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6007
diff changeset
686 (char *)self->zst.next_out - PyString_AsString(RetVal));
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
687 return RetVal;
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
688 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
689
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
690 static PyMethodDef comp_methods[] =
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
691 {
13816
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
692 {"compress", (binaryfunc)PyZlib_objcompress,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
693 METH_VARARGS, comp_compress__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
694 {"flush", (binaryfunc)PyZlib_flush,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
695 METH_VARARGS, comp_flush__doc__},
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 {NULL, NULL}
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 };
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
698
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
699 static PyMethodDef Decomp_methods[] =
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
700 {
13816
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
701 {"decompress", (binaryfunc)PyZlib_objdecompress,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
702 METH_VARARGS, decomp_decompress__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
703 {"flush", (binaryfunc)PyZlib_unflush,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
704 METH_VARARGS, decomp_flush__doc__},
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 {NULL, NULL}
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
706 };
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
707
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
709 Comp_getattr(compobject *self, char *name)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
710 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 return Py_FindMethod(comp_methods, (PyObject *)self, name);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
713
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
715 Decomp_getattr(compobject *self, char *name)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 {
10467
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
717 if (strcmp(name, "unused_data") == 0)
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
718 {
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
719 Py_INCREF(self->unused_data);
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
720 return self->unused_data;
255abab3c574 Add an .unused_data attribute to decompressor objects. If .unused_data
Andrew M. Kuchling <amk@amk.ca>
parents: 10440
diff changeset
721 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 return Py_FindMethod(Decomp_methods, (PyObject *)self, name);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
723 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
724
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
725 static char adler32__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
726 "adler32(string) -- Compute an Adler-32 checksum of string, using "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
727 "a default starting value, and returning an integer value.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
728 "adler32(string, value) -- Compute an Adler-32 checksum of string, using "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
729 "the starting value provided, and returning an integer value\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
730 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
731
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
733 PyZlib_adler32(PyObject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
734 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
735 uLong adler32val=adler32(0L, Z_NULL, 0);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
736 Byte *buf;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
737 int len;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
738
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
739 if (!PyArg_ParseTuple(args, "s#|l:adler32", &buf, &len, &adler32val))
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
740 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
741 return NULL;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
742 }
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
743 adler32val = adler32(adler32val, buf, len);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
744 return PyInt_FromLong(adler32val);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
745 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
746
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
747 static char crc32__doc__[] =
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
748 "crc32(string) -- Compute a CRC-32 checksum of string, using "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
749 "a default starting value, and returning an integer value.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
750 "crc32(string, value) -- Compute a CRC-32 checksum of string, using "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
751 "the starting value provided, and returning an integer value.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
752 ;
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
753
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
754 static PyObject *
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
755 PyZlib_crc32(PyObject *self, PyObject *args)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
757 uLong crc32val=crc32(0L, Z_NULL, 0);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
758 Byte *buf;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
759 int len;
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11619
diff changeset
760 if (!PyArg_ParseTuple(args, "s#|l:crc32", &buf, &len, &crc32val))
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
761 {
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
762 return NULL;
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
763 }
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
764 crc32val = crc32(crc32val, buf, len);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
765 return PyInt_FromLong(crc32val);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
766 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
767
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
768
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
769 static PyMethodDef zlib_methods[] =
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
770 {
13816
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
771 {"adler32", (PyCFunction)PyZlib_adler32,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
772 METH_VARARGS, adler32__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
773 {"compress", (PyCFunction)PyZlib_compress,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
774 METH_VARARGS, compress__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
775 {"compressobj", (PyCFunction)PyZlib_compressobj,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
776 METH_VARARGS, compressobj__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
777 {"crc32", (PyCFunction)PyZlib_crc32,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
778 METH_VARARGS, crc32__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
779 {"decompress", (PyCFunction)PyZlib_decompress,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
780 METH_VARARGS, decompress__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
781 {"decompressobj", (PyCFunction)PyZlib_decompressobj,
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
782 METH_VARARGS, decompressobj__doc__},
afbbe674d58a Use METH_VARARGS instead of numeric constant 1
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
783 {NULL, NULL}
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
784 };
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
785
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
786 statichere PyTypeObject Comptype = {
6911
2c49c02cf747 Win32 treatment.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
787 PyObject_HEAD_INIT(0)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
788 0,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
789 "Compress",
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
790 sizeof(compobject),
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
791 0,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
792 (destructor)Comp_dealloc, /*tp_dealloc*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
793 0, /*tp_print*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
794 (getattrfunc)Comp_getattr, /*tp_getattr*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
795 0, /*tp_setattr*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
796 0, /*tp_compare*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
797 0, /*tp_repr*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
798 0, /*tp_as_number*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
799 0, /*tp_as_sequence*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
800 0, /*tp_as_mapping*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
801 };
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
802
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
803 statichere PyTypeObject Decomptype = {
6911
2c49c02cf747 Win32 treatment.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
804 PyObject_HEAD_INIT(0)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
805 0,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
806 "Decompress",
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
807 sizeof(compobject),
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
808 0,
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
809 (destructor)Decomp_dealloc, /*tp_dealloc*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
810 0, /*tp_print*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
811 (getattrfunc)Decomp_getattr, /*tp_getattr*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
812 0, /*tp_setattr*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
813 0, /*tp_compare*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
814 0, /*tp_repr*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
815 0, /*tp_as_number*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
816 0, /*tp_as_sequence*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
817 0, /*tp_as_mapping*/
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
818 };
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
819
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
820 /* The following insint() routine was blatantly ripped off from
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
821 socketmodule.c */
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
822
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
823 /* Convenience routine to export an integer value.
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
824 For simplicity, errors (which are unlikely anyway) are ignored. */
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
825 static void
13496
03bc51e43f7a ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 12576
diff changeset
826 insint(PyObject *d, char *name, int value)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
827 {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
828 PyObject *v = PyInt_FromLong((long) value);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
829 if (v == NULL) {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
830 /* Don't bother reporting this error */
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
831 PyErr_Clear();
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
832 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
833 else {
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
834 PyDict_SetItemString(d, name, v);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
835 Py_DECREF(v);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
836 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
837 }
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
838
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
839 static char zlib_module_documentation[]=
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
840 "The functions in this module allow compression and decompression "
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
841 "using the zlib library, which is based on GNU zip. \n\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
842 "adler32(string) -- Compute an Adler-32 checksum.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
843 "adler32(string, start) -- Compute an Adler-32 checksum using a given starting value.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
844 "compress(string) -- Compress a string.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
845 "compress(string, level) -- Compress a string with the given level of compression (1--9).\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
846 "compressobj([level]) -- Return a compressor object.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
847 "crc32(string) -- Compute a CRC-32 checksum.\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
848 "crc32(string, start) -- Compute a CRC-32 checksum using a given starting value.\n"
11607
69216c11a1bd Fix typo in docstring: wbites -> wbits
Andrew M. Kuchling <amk@amk.ca>
parents: 10571
diff changeset
849 "decompress(string,[wbits],[bufsize]) -- Decompresses a compressed string.\n"
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
850 "decompressobj([wbits]) -- Return a decompressor object (wbits=window buffer size).\n\n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
851 "Compressor objects support compress() and flush() methods; decompressor \n"
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
852 "objects support decompress() and flush()."
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
853 ;
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
854
9588
38023a425e48 Add DL_EXPORT() to all modules that could possibly be used
Guido van Rossum <guido@python.org>
parents: 8636
diff changeset
855 DL_EXPORT(void)
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13496
diff changeset
856 PyInit_zlib(void)
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 {
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
858 PyObject *m, *d, *ver;
6911
2c49c02cf747 Win32 treatment.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
859 Comptype.ob_type = &PyType_Type;
2c49c02cf747 Win32 treatment.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
860 Decomptype.ob_type = &PyType_Type;
5722
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
861 m = Py_InitModule4("zlib", zlib_methods,
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
862 zlib_module_documentation,
6c9736865608 Doc strings (AMK).
Guido van Rossum <guido@python.org>
parents: 5352
diff changeset
863 (PyObject*)NULL,PYTHON_API_VERSION);
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
864 d = PyModule_GetDict(m);
6367
2c29b8982643 Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents: 6236
diff changeset
865 ZlibError = PyErr_NewException("zlib.error", NULL, NULL);
11619
91245dc940eb For ZlibError and ZLIB_VERSION, only attempt to add entry to the
Fred Drake <fdrake@acm.org>
parents: 11607
diff changeset
866 if (ZlibError != NULL)
91245dc940eb For ZlibError and ZLIB_VERSION, only attempt to add entry to the
Fred Drake <fdrake@acm.org>
parents: 11607
diff changeset
867 PyDict_SetItemString(d, "error", ZlibError);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
868
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
869 insint(d, "MAX_WBITS", MAX_WBITS);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
870 insint(d, "DEFLATED", DEFLATED);
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
871 insint(d, "DEF_MEM_LEVEL", DEF_MEM_LEVEL);
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
872 insint(d, "Z_BEST_SPEED", Z_BEST_SPEED);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
873 insint(d, "Z_BEST_COMPRESSION", Z_BEST_COMPRESSION);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
874 insint(d, "Z_DEFAULT_COMPRESSION", Z_DEFAULT_COMPRESSION);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
875 insint(d, "Z_FILTERED", Z_FILTERED);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
876 insint(d, "Z_HUFFMAN_ONLY", Z_HUFFMAN_ONLY);
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
877 insint(d, "Z_DEFAULT_STRATEGY", Z_DEFAULT_STRATEGY);
9657
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
878
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
879 insint(d, "Z_FINISH", Z_FINISH);
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
880 insint(d, "Z_NO_FLUSH", Z_NO_FLUSH);
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
881 insint(d, "Z_SYNC_FLUSH", Z_SYNC_FLUSH);
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
882 insint(d, "Z_FULL_FLUSH", Z_FULL_FLUSH);
7dde4501f53a patches from Andrew
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 9652
diff changeset
883
6236
6dfec320f910 Several changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 6226
diff changeset
884 ver = PyString_FromString(ZLIB_VERSION);
11619
91245dc940eb For ZlibError and ZLIB_VERSION, only attempt to add entry to the
Fred Drake <fdrake@acm.org>
parents: 11607
diff changeset
885 if (ver != NULL) {
91245dc940eb For ZlibError and ZLIB_VERSION, only attempt to add entry to the
Fred Drake <fdrake@acm.org>
parents: 11607
diff changeset
886 PyDict_SetItemString(d, "ZLIB_VERSION", ver);
91245dc940eb For ZlibError and ZLIB_VERSION, only attempt to add entry to the
Fred Drake <fdrake@acm.org>
parents: 11607
diff changeset
887 Py_DECREF(ver);
91245dc940eb For ZlibError and ZLIB_VERSION, only attempt to add entry to the
Fred Drake <fdrake@acm.org>
parents: 11607
diff changeset
888 }
5352
d5757aad1a4f Added Andrew Kuchling's zlib module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
889 }