Update of /cvsroot/pywin32/pywin32/win32/src
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31534/win32/src
Modified Files:
PySID.cpp PySecurityObjects.h
Log Message:
Give PySID objects rich comparison support for py3k
Index: PySID.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/PySID.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** PySID.cpp 11 Dec 2008 00:25:40 -0000 1.15
--- PySID.cpp 25 Jan 2009 03:16:35 -0000 1.16
***************
*** 261,265 ****
0, /* tp_traverse */
0, /* tp_clear */
! 0, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
--- 261,265 ----
0, /* tp_traverse */
0, /* tp_clear */
! PySID::richcompareFunc, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
***************
*** 314,317 ****
--- 314,336 ----
}
+ PyObject *PySID::richcompare(PyObject *other, int op)
+ {
+ BOOL e;
+ if (PySID_Check(other))
+ e=compare((PyHANDLE *)other)==0;
+ else
+ e=FALSE;
+ PyObject *ret;
+ if (op==Py_EQ)
+ ret = e ? Py_True : Py_False;
+ else if (op==Py_NE)
+ ret = !e ? Py_True : Py_False;
+ else {
+ PyErr_SetString(PyExc_TypeError, "SIDs only compare equal or not equal");
+ ret = NULL;
+ }
+ Py_XINCREF(ret);
+ return ret;
+ }
// @pymethod int|PySID|__cmp__|Used when objects are compared.
***************
*** 322,325 ****
--- 341,349 ----
}
+ PyObject *PySID::richcompareFunc(PyObject *ob1, PyObject *ob2, int op)
+ {
+ return ((PySID *)ob1)->richcompare(ob2, op);
+ }
+
/*static*/ void PySID::deallocFunc(PyObject *ob)
{
Index: PySecurityObjects.h
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/PySecurityObjects.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** PySecurityObjects.h 11 Dec 2008 00:25:40 -0000 1.14
--- PySecurityObjects.h 25 Jan 2009 03:16:35 -0000 1.15
***************
*** 102,108 ****
--- 102,110 ----
/* Python support */
int compare(PyObject *ob);
+ PyObject *richcompare(PyObject *other, int op);
static void deallocFunc(PyObject *ob);
static int compareFunc(PyObject *ob1, PyObject *ob2);
+ static PyObject *richcompareFunc(PyObject *ob1, PyObject *ob2, int op);
static PyObject *strFunc(PyObject *ob);
|