base85.c: Added support for py3k.

This patch adds support for py3k in base85.c. This is accomplished by including
a header file responsible for abstracting the API differences between python 2
and python 3.
This commit is contained in:
Renato Cunha 2010-06-15 19:49:56 -03:00
parent e7d8ae78a9
commit 5d4023de29

View File

@ -11,6 +11,8 @@
#include <Python.h>
#include "util.h"
static const char b85chars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~";
static char b85dec[256];
@ -46,10 +48,10 @@ b85encode(PyObject *self, PyObject *args)
olen++;
olen += len / 4 * 5;
}
if (!(out = PyString_FromStringAndSize(NULL, olen + 3)))
if (!(out = PyBytes_FromStringAndSize(NULL, olen + 3)))
return NULL;
dst = PyString_AS_STRING(out);
dst = PyBytes_AsString(out);
while (len) {
acc = 0;
@ -68,7 +70,7 @@ b85encode(PyObject *self, PyObject *args)
}
if (!pad)
_PyString_Resize(&out, olen);
_PyBytes_Resize(&out, olen);
return out;
}
@ -89,10 +91,10 @@ b85decode(PyObject *self, PyObject *args)
i = len % 5;
if (i)
olen += i - 1;
if (!(out = PyString_FromStringAndSize(NULL, olen)))
if (!(out = PyBytes_FromStringAndSize(NULL, olen)))
return NULL;
dst = PyString_AS_STRING(out);
dst = PyBytes_AsString(out);
i = 0;
while (i < len)
@ -153,9 +155,26 @@ static PyMethodDef methods[] = {
{NULL, NULL}
};
#ifdef IS_PY3K
static struct PyModuleDef base85_module = {
PyModuleDef_HEAD_INIT,
"base85",
base85_doc,
-1,
methods
};
PyMODINIT_FUNC PyInit_base85(void)
{
b85prep();
return PyModule_Create(&base85_module);
}
#else
PyMODINIT_FUNC initbase85(void)
{
Py_InitModule3("base85", methods, base85_doc);
b85prep();
}
#endif