# HG changeset patch # User Renato Cunha # Date 1276642196 10800 # Node ID 0044193a1c45790bb3ab1ad998799244b70df1a2 # Parent f50103035c3867e8f4ac217c264a61f8441b5e20 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. diff -r f50103035c38 -r 0044193a1c45 mercurial/bdiff.c --- 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 #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