Mercurial > hg
changeset 11364:0044193a1c45
bdiff.c: Added support for py3k.
This patch adds support for py3k in bdiff.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 | f50103035c38 |
children | c3d7daa0928e |
files | mercurial/bdiff.c |
diffstat | 1 files changed, 23 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bdiff.c Tue Jun 15 19:49:56 2010 -0300 +++ b/mercurial/bdiff.c Tue Jun 15 19:49:56 2010 -0300 @@ -46,6 +46,8 @@ #include <inttypes.h> #endif +#include "util.h" + struct line { int h, len, n, e; const char *l; @@ -309,8 +311,9 @@ if (!PyArg_ParseTuple(args, "SS:bdiff", &sa, &sb)) return NULL; - an = splitlines(PyString_AsString(sa), PyString_Size(sa), &a); - bn = splitlines(PyString_AsString(sb), PyString_Size(sb), &b); + an = splitlines(PyBytes_AsString(sa), PyBytes_Size(sa), &a); + bn = splitlines(PyBytes_AsString(sb), PyBytes_Size(sb), &b); + if (!a || !b) goto nomem; @@ -363,12 +366,13 @@ lb = h->b2; } - result = PyString_FromStringAndSize(NULL, len); + result = PyBytes_FromStringAndSize(NULL, len); + if (!result) goto nomem; /* build binary patch */ - rb = PyString_AsString(result); + rb = PyBytes_AsString(result); la = lb = 0; for (h = l.base; h != l.head; h++) { @@ -400,8 +404,23 @@ {NULL, NULL} }; +#ifdef IS_PY3K +static struct PyModuleDef bdiff_module = { + PyModuleDef_HEAD_INIT, + "bdiff", + mdiff_doc, + -1, + methods +}; + +PyMODINIT_FUNC PyInit_bdiff(void) +{ + return PyModule_Create(&bdiff_module); +} +#else PyMODINIT_FUNC initbdiff(void) { Py_InitModule3("bdiff", methods, mdiff_doc); } +#endif