public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in dev-python/py-xmlrpc/files: py-xmlrpc_rpcDispatch.patch py-xmlrpc_patch-extra.patch py-xmlrpc_rpcDate.patch py-xmlrpc_rpcClient.patch py-xmlrpc_rpcSource.patch py-xmlrpc_rpcUtils.patch py-xmlrpc_rpcBase64.patch
@ 2010-03-01 23:46 Jesus Rivero (neurogeek)
  0 siblings, 0 replies; only message in thread
From: Jesus Rivero (neurogeek) @ 2010-03-01 23:46 UTC (permalink / raw
  To: gentoo-commits

neurogeek    10/03/01 23:46:48

  Added:                py-xmlrpc_rpcDispatch.patch
                        py-xmlrpc_patch-extra.patch py-xmlrpc_rpcDate.patch
                        py-xmlrpc_rpcClient.patch py-xmlrpc_rpcSource.patch
                        py-xmlrpc_rpcUtils.patch py-xmlrpc_rpcBase64.patch
  Log:
  Added patchs wrt bug #299023 (now closed), Thanks to Florian for the report
  (Portage version: 2.2_rc63/cvs/Linux i686)

Revision  Changes    Path
1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_rpcDispatch.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcDispatch.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcDispatch.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_rpcDispatch.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

--- src/rpcDispatch.c
+++ src/rpcDispatch.c
@@ -68,7 +68,7 @@
 		rpcDispClear(dp);
 		free(dp->srcs);
 	}
-	PyMem_DEL(dp);
+	PyObject_DEL(dp);
 }
 
 



1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_patch-extra.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_patch-extra.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_patch-extra.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_patch-extra.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

Due to unresponsiveness of the development team of the py-xmlrpc, I'm sending
this change request here in hope it can help the developers that use this
port.

The py-xmlrpc module has a problem with boolean type - it implements boolean
type internally thus creating difficulties on encode/decode path of the
boolean variables. I've changed the source code to use internal Python's
boolean type and this made things straight to the user of this module.

Another change I've made to the module is support for the <nil/> element.
Despite the fact this element isn't mentioned in the XML-RPC specification,
many of implementations support it, as this is the very convenient way to
pass null values from the environments with dynamic typing such as
Python, Perl, etc.


--- src/rpcBoolean.c.orig	2002-02-21 09:08:11.000000000 +0200
+++ src/rpcBoolean.c	2008-10-15 10:41:34.000000000 +0300
@@ -2,142 +2,3 @@
  * Copyright (C) 2001, Shilad Sen, Sourcelight Technologies, Inc.
  * See xmlrpc.h or the README for more copyright information.
  */
-
-
-#include "xmlrpc.h"
-#include "rpcInternal.h"
-
-
-static	void		rpcBoolDealloc(rpcBool *bp);
-static	int		rpcBoolLength(rpcBool *bp);
-static	int		rpcBoolCompare(rpcBool *b1, rpcBool *b2);
-static	PyObject	*rpcBoolRepr(rpcBool *bp);
-
-
-/*
- * create a new edb boolean object
- */
-PyObject *
-rpcBoolNew(bool value)
-{
-	rpcBool	*bp;
-
-	bp = PyObject_NEW(rpcBool, &rpcBoolType);
-	if (bp == NULL)
-		return NULL;
-	bp->value = value;
-	return (PyObject *)bp;
-}
-
-
-/*
- * get the value (true or false) of a boolean rpc object
- */
-bool
-rpcBoolValue(PyObject *obj)
-{
-	return ((rpcBool *)obj)->value;
-}
-
-
-/*
- * free resources associated with a boolean object
- */
-static void
-rpcBoolDealloc(rpcBool *bp)
-{
-	PyMem_DEL(bp);
-}
-
-
-/*
- * tell whether a boolean object is true or false
- */
-static int
-rpcBoolLength(rpcBool *bp)
-{
-	if (bp->value)
-		return 1;
-	else
-		return 0;
-}
-
-
-/*
- * bool object to dictionary conversion
- */
-static PyMappingMethods rpcBoolAsMapping = {
-	(inquiry)rpcBoolLength,	/* mapping length */
-	(binaryfunc)NULL,		/* mapping subscript */
-	(objobjargproc)NULL,		/* mapping associate subscript */
-};
-
-
-/*
- * boolean comparison
- */
-static int
-rpcBoolCompare(rpcBool *b1, rpcBool *b2)
-{
-	if (not b1->value and not b2->value)
-		return 0;
-	else if (b1->value and b2->value)
-		return 0;
-	else
-		return 1;
-}
-
-
-/*
- * represent a boolean xml object
- */
-static PyObject *
-rpcBoolStr(rpcBool *bp)
-{
-	if (bp->value)
-		return PyString_FromString("<xmlrpc boolean true>");
-	else
-		return PyString_FromString("<xmlrpc boolean false>");
-}
-
-
-/*
- * represent a boolean xml object
- */
-static PyObject *
-rpcBoolRepr(rpcBool *bp)
-{
-	if (bp->value)
-		return PyString_FromString("boolean(1)");
-	else
-		return PyString_FromString("boolean(0)");
-}
-
-
-/*
- * map characterstics of a boolean
- */
-PyTypeObject rpcBoolType = {
-	PyObject_HEAD_INIT(0)
-	0,
-	"rpcBoolean",
-	sizeof(rpcBool),
-	0,
-	(destructor)rpcBoolDealloc,		/* tp_dealloc */
-	0,					/* tp_print */
-	0,					/* tp_getattr */
-	0,					/* tp_setattr */
-	(cmpfunc)rpcBoolCompare,		/* tp_compare */
-	(reprfunc)rpcBoolRepr,			/* tp_repr */
-	0,					/* tp_as_number */
-	0,					/* tp_as_sequence */
-	&rpcBoolAsMapping,			/* tp_as_mapping */
-	0,					/* tp_hash */
-	0,					/* tp_call */
-	(reprfunc)rpcBoolStr,			/* tp_str */
-	0,					/* tp_getattro */
-	0,					/* tp_setattro */
-	0,					/* tp_as_buffer */
-	0,					/* tp_xxx4 */
-	0,					/* tp_doc */
-};
--- src/rpcBoolean.h.orig	2008-10-15 10:46:52.000000000 +0300
+++ src/rpcBoolean.h	2008-10-15 10:46:59.000000000 +0300
@@ -6,26 +6,3 @@
  *
  */
 
-
-#ifndef _RPCBOOL_H_
-#define _RPCBOOL_H_
-
-
-#include "rpcInclude.h"
-PyTypeObject	rpcBoolType;
-
-
-/*
- * boolean object
- */
-typedef struct {
-	PyObject_HEAD			/* python standard */
-	bool		value;		/* true/false value */
-} rpcBool;
-
-
-PyObject	*rpcBoolNew(bool value);
-bool		rpcBoolValue(PyObject *obj);
-
-
-#endif /* _RPCBOOL_H_ */
--- src/rpcUtils.c.orig	2003-04-21 18:39:15.000000000 +0300
+++ src/rpcUtils.c	2008-10-15 10:45:01.000000000 +0300
@@ -47,6 +47,7 @@
 
 static	strBuff		*encodeValue(strBuff *sp, PyObject *value, uint tabs);
 static	strBuff		*encodeBool(strBuff *sp, PyObject *value);
+static	strBuff		*encodeNone(strBuff *sp);
 static	strBuff		*encodeInt(strBuff *sp, PyObject *value);
 static	strBuff		*encodeDouble(strBuff *sp, PyObject *value);
 static	strBuff		*encodeString(strBuff *sp, PyObject *value);
@@ -63,6 +64,7 @@
 static	PyObject	*decodeString(char **cp, char *ep, ulong *lines);
 static	PyObject	*decodeTaglessString(char **cp, char *ep, ulong *lines);
 static	PyObject	*decodeBool(char **cp, char *ep, ulong *lines);
+static	PyObject	*decodeNone(char **cp, char *ep, ulong *lines);
 static	PyObject	*decodeBase64(char **cp, char *ep, ulong *lines);
 static	PyObject	*decodeArray(char **cp, char *ep, ulong *lines);
 static	PyObject	*decodeStruct(char **cp, char *ep, ulong *lines);
@@ -205,11 +207,13 @@
 {
 	if (buffConstant(sp, "<value>") == NULL)
 		return NULL;
-	if (PyInt_Check(value) or PyLong_Check(value))
+	if (PyInt_CheckExact(value) or PyLong_Check(value))
 		sp = encodeInt(sp, value);
+	else if (value == Py_None)
+                sp = encodeNone(sp);
 	else if (PyFloat_Check(value))
 		sp = encodeDouble(sp, value);
-	else if (value->ob_type == &rpcBoolType)
+	else if (PyBool_Check(value))
 		sp = encodeBool(sp, value);
 	else if (value->ob_type == &rpcDateType)
 		sp = encodeDate(sp, value);
@@ -286,12 +290,25 @@
 }
 
 /*
+ * encode the None as: "<nil/>"
+ */
+static strBuff *
+encodeNone(strBuff *sp)
+{
+	if (buffConstant(sp, "<nil/>") == NULL)
+		return NULL;
+
+	return sp;
+}
+
+/*
+/*
  * encode the boolean true (for example) as: "<boolean>1</boolean>"
  */
 static strBuff *
 encodeBool(strBuff *sp, PyObject *value)
 {
-	if (((rpcBool *)value)->value)
+	if (value == Py_True)
 		return buffConstant(sp, "<boolean>1</boolean>");
 	else
 		return buffConstant(sp, "<boolean>0</boolean>");
@@ -569,6 +586,8 @@
 		res = decodeDate(cp, ep, lines);
 	else if (strncmp(*cp, "<base64>", 8) == 0)
 		res = decodeBase64(cp, ep, lines);
+        else if (strncmp(*cp, "<nil/>", 6) == 0)
+                res = decodeNone(cp, ep, lines);
 	else {		/* it must be a string */
 		*cp = tp;
 		res = decodeTaglessString(cp, ep, lines);
@@ -619,6 +638,20 @@
 
 
 static PyObject *
+decodeNone(char **cp, char *ep, ulong *lines)
+{
+	if (*cp + 6 >= ep)
+		return eosErr();
+	*cp += 6;
+	if (chompStr(cp, ep, lines) >= ep)
+		return eosErr();
+
+        Py_INCREF(Py_None);
+	return Py_None;
+}
+
+
+static PyObject *
 decodeBool(char **cp, char *ep, ulong *lines)
 {
 	PyObject	*res;
@@ -638,7 +671,12 @@
 	if (chompStr(cp, ep, lines) >= ep)
 		return eosErr();
 
-	return rpcBoolNew(value);
+        if (value) {
+            Py_INCREF(Py_True);
+            return Py_True;
+        }
+        Py_INCREF(Py_False);
+        return Py_False;
 }
 
 
--- src/xmlrpc.c.orig	2003-04-21 18:39:15.000000000 +0300
+++ src/xmlrpc.c	2008-10-15 10:47:23.000000000 +0300
@@ -45,7 +45,6 @@
 	rpcLogLevel = 3;
 	rpcLogger = stderr;
 	rpcDateFormat = XMLRPC_DATE_FORMAT_US;
-	rpcBoolType.ob_type = &PyType_Type;
 	rpcDateType.ob_type = &PyType_Type;
 	rpcBase64Type.ob_type = &PyType_Type;
 	rpcClientType.ob_type = &PyType_Type;
--- src/xmlrpc.h.orig	2003-04-21 18:39:15.000000000 +0300
+++ src/xmlrpc.h	2008-10-15 10:40:35.000000000 +0300
@@ -45,7 +45,6 @@
 #define	XMLRPC_DATE_FORMAT_EUROPE	2
 
 #include "rpcBase64.h"
-#include "rpcBoolean.h"
 #include "rpcClient.h"
 #include "rpcDate.h"
 #include "rpcDispatch.h"
--- src/xmlrpcmodule.c.orig	2003-04-21 19:22:54.000000000 +0300
+++ src/xmlrpcmodule.c	2008-10-15 10:48:42.000000000 +0300
@@ -197,7 +197,12 @@
 	unless (PyArg_ParseTuple(args, "i", &value))
 		return NULL;
 
-	return rpcBoolNew(value);
+        if (value) {
+            Py_INCREF(Py_True);
+            return Py_True;
+        }
+        Py_INCREF(Py_False);
+        return Py_False;
 }
 
 





1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_rpcDate.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcDate.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcDate.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_rpcDate.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

--- src/rpcDate.c
+++ src/rpcDate.c
@@ -75,7 +75,7 @@
 	if (dp->value) {
 		Py_DECREF(dp->value);
 	}
-	PyMem_DEL(dp);
+	PyObject_DEL(dp);
 }
 
 



1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_rpcClient.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcClient.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcClient.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_rpcClient.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

--- src/rpcClient.c
+++ src/rpcClient.c
@@ -179,7 +179,7 @@
 	cp->url = NULL;
 	Py_DECREF(cp->src);
 	Py_DECREF(cp->disp);
-	PyMem_DEL(cp);
+	PyObject_DEL(cp);
 }




1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_rpcSource.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcSource.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcSource.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_rpcSource.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

--- src/rpcSource.c
+++ src/rpcSource.c
@@ -61,7 +61,7 @@
 	if (srcp->onErr and srcp->onErrType == ONERR_TYPE_PY) {
 		Py_DECREF((PyObject *)srcp->onErr);
 	}
-	PyMem_DEL(srcp);
+	PyObject_DEL(srcp);
 }
 
 



1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_rpcUtils.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcUtils.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcUtils.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_rpcUtils.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

--- src/rpcUtils.c.orig
+++ src/rpcUtils.c
@@ -276,7 +280,7 @@
 	double		d;
 
 	d = PyFloat_AS_DOUBLE(value);
-	snprintf(buff, 255, "%f", d);
+	snprintf(buff, 255, "%.17f", d);
 	if ((buffConstant(sp, "<double>") == NULL)
 	or  (buffConcat(sp, buff) == NULL)
 	or  (buffConstant(sp, "</double>") == NULL))



1.1                  dev-python/py-xmlrpc/files/py-xmlrpc_rpcBase64.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcBase64.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-python/py-xmlrpc/files/py-xmlrpc_rpcBase64.patch?rev=1.1&content-type=text/plain

Index: py-xmlrpc_rpcBase64.patch
===================================================================
Patch added by neurogeek@gentoo.org
Patch added 03/01/2010
Taken from: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/py-xmlrpc/files/
Thanks to sobomax @ FreeBSD

--- src/rpcBase64.c
+++ src/rpcBase64.c
@@ -239,7 +239,7 @@
 	if (bp->value) {
 		Py_DECREF(bp->value);
 	}
-	PyMem_DEL(bp);
+	PyObject_DEL(bp);
 }
 
 






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-03-01 23:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-01 23:46 [gentoo-commits] gentoo-x86 commit in dev-python/py-xmlrpc/files: py-xmlrpc_rpcDispatch.patch py-xmlrpc_patch-extra.patch py-xmlrpc_rpcDate.patch py-xmlrpc_rpcClient.patch py-xmlrpc_rpcSource.patch py-xmlrpc_rpcUtils.patch py-xmlrpc_rpcBase64.patch Jesus Rivero (neurogeek)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox