[PATCH 5 of 7] base85.c: Added support for py3k

Renato Cunha renatoc at gmail.com
Thu Jun 10 08:39:54 CDT 2010


# HG changeset patch
# User Renato Cunha <renatoc at gmail.com>
# Date 1276177147 10800
# Node ID f11c9563923ff26dfac4bcbe441866b565952a91
# Parent  759906a8b2ded88e61fc9a4ed2984aec4bad8fb9
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.

diff --git a/mercurial/base85.c b/mercurial/base85.c
--- a/mercurial/base85.c
+++ b/mercurial/base85.c
@@ -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_FROM_STRING_AND_SIZE(NULL, olen + 3)))
 		return NULL;
 
-	dst = PyString_AS_STRING(out);
+	dst = PYBYTES_AS_STRING(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_FROM_STRING_AND_SIZE(NULL, olen)))
 		return NULL;
 
-	dst = PyString_AS_STRING(out);
+	dst = PYBYTES_AS_STRING(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


More information about the Mercurial-devel mailing list