Mercurial > hg
changeset 11362:f42ef9493fa9
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.
author | Renato Cunha <renatoc@gmail.com> |
---|---|
date | Tue, 15 Jun 2010 19:49:56 -0300 |
parents | 3de3d670d2b6 |
children | f50103035c38 |
files | mercurial/base85.c |
diffstat | 1 files changed, 24 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/base85.c Tue Jun 15 19:49:56 2010 -0300 +++ b/mercurial/base85.c Tue Jun 15 19:49:56 2010 -0300 @@ -11,6 +11,8 @@ #include <Python.h> +#include "util.h" + static const char b85chars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"; static char b85dec[256]; @@ -46,10 +48,10 @@ 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 @@ } if (!pad) - _PyString_Resize(&out, olen); + _PyBytes_Resize(&out, olen); return out; } @@ -89,10 +91,10 @@ 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 @@ {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