The branch, master has been updated
       via  9aa0ed2 ldb:pyldb.c - "py_ldb_msg_element_get" - here we can safely 
use "unsigned int" for the element reference
       via  ef4861d ldb:pyldb.c - "py_ldb_contains" - return only "0" not 
found, "1" found, "-1" error
       via  7bdbfc9 ldb:pyldb.c - most of the times "time_t" is defined as 
"long int"
       via  9e5ca72 ldb:pyldb.c - fix some "Py_ssize_t" output warnings
       via  f6572e5 ldb:pyldb.c - use "Py_ssize_t" for counting list entries
       via  084c11d ldb:pyldb.c - fix indentation
       via  af84b6d s4:pydsdb.c - use "Py_ssize_t" for Python list counters
       via  9f2d215 s4:pydsdb.c - introduce Python 2.4 compatibility defines
      from  4b97e7c s4:objectguid/repl_meta_data LDB module - deny "objectGUID" 
updates

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 9aa0ed2c3a74c6d72e42e4bc9e6077a50343fd38
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 17:50:25 2010 +0100

    ldb:pyldb.c - "py_ldb_msg_element_get" - here we can safely use "unsigned 
int" for the element reference
    
    We don't make use of "Py_List*" calls
    
    Autobuild-User: Matthias Dieter Wallnöfer <m...@samba.org>
    Autobuild-Date: Mon Nov  8 11:21:27 UTC 2010 on sn-devel-104

commit ef4861d9263d1a17396c58abc7ad0c5837a1b52c
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 17:49:18 2010 +0100

    ldb:pyldb.c - "py_ldb_contains" - return only "0" not found, "1" found, 
"-1" error

commit 7bdbfc96037640dbd352e9ddab9c5e1ded9502fa
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 16:29:27 2010 +0100

    ldb:pyldb.c - most of the times "time_t" is defined as "long int"
    
    Therefore use a signed long int for conversions.
    
    
http://stackoverflow.com/questions/471248/what-is-ultimately-a-time-t-typedef-to

commit 9e5ca72afbe74d88a1da33b6957b0914262f106c
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 18:03:22 2010 +0100

    ldb:pyldb.c - fix some "Py_ssize_t" output warnings

commit f6572e5ffc62ac41d3a180e0636129b40980f9dd
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 17:48:39 2010 +0100

    ldb:pyldb.c - use "Py_ssize_t" for counting list entries
    
    This seems to be the most appopriate type

commit 084c11d600e61b3c1b4c36b8440c67b37731d16c
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 16:29:06 2010 +0100

    ldb:pyldb.c - fix indentation

commit af84b6d32514525a52e0b6529b36a53943fb7a7a
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 16:28:33 2010 +0100

    s4:pydsdb.c - use "Py_ssize_t" for Python list counters
    
    Seems to be the most appropriate type

commit 9f2d21561b85edde541d7dbc69ee1fe58c029f81
Author: Matthias Dieter Wallnöfer <m...@samba.org>
Date:   Sat Nov 6 17:54:36 2010 +0100

    s4:pydsdb.c - introduce Python 2.4 compatibility defines

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/pydsdb.c   |   13 +++++++++-
 source4/lib/ldb/pyldb.c |   62 +++++++++++++++++++++++++---------------------
 2 files changed, 46 insertions(+), 29 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
index db2185f..2471548 100644
--- a/source4/dsdb/pydsdb.c
+++ b/source4/dsdb/pydsdb.c
@@ -28,6 +28,17 @@
 #include "auth/kerberos/kerberos.h"
 #include "librpc/rpc/pyrpc_util.h"
 
+/* There's no Py_ssize_t in 2.4, apparently */
+#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5
+typedef int Py_ssize_t;
+typedef inquiry lenfunc;
+typedef intargfunc ssizeargfunc;
+#endif
+
+#ifndef Py_RETURN_NONE
+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
+#endif
+
 /* FIXME: These should be in a header file somewhere, once we finish moving
  * away from SWIG .. */
 #define PyErr_LDB_OR_RAISE(py_ldb, ldb) \
@@ -319,7 +330,7 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, 
PyObject *args)
        struct drsuapi_DsReplicaAttribute *attr;
        TALLOC_CTX *tmp_ctx;
        WERROR werr;
-       int i;
+       Py_ssize_t i;
 
        if (!PyArg_ParseTuple(args, "OsO", &py_ldb, &ldap_display_name, 
&el_list)) {
                return NULL;
diff --git a/source4/lib/ldb/pyldb.c b/source4/lib/ldb/pyldb.c
index 7a6058f..acf8052 100644
--- a/source4/lib/ldb/pyldb.c
+++ b/source4/lib/ldb/pyldb.c
@@ -89,7 +89,7 @@ static PyObject *PyObject_FromLdbValue(struct ldb_context 
*ldb_ctx,
 static PyObject *PyLdbResult_FromResult(struct ldb_result *result)
 {
        PyObject *ret;
-       int i;
+       Py_ssize_t i;
        if (result == NULL) {
                Py_RETURN_NONE;
        } 
@@ -113,7 +113,7 @@ static struct ldb_result *PyLdbResult_AsResult(TALLOC_CTX 
*mem_ctx,
                                                                                
           PyObject *obj)
 {
        struct ldb_result *res;
-       int i;
+       Py_ssize_t i;
 
        if (obj == Py_None)
                return NULL;
@@ -493,7 +493,7 @@ static const char **PyList_AsStringList(TALLOC_CTX 
*mem_ctx, PyObject *list,
                                                                                
const char *paramname)
 {
        const char **ret;
-       int i;
+       Py_ssize_t i;
        if (!PyList_Check(list)) {
                PyErr_Format(PyExc_TypeError, "%s is not a list", paramname);
                return NULL;
@@ -1425,13 +1425,14 @@ static int py_ldb_contains(PyLdbObject *self, PyObject 
*obj)
        struct ldb_context *ldb_ctx = PyLdb_AsLdbContext(self);
        struct ldb_dn *dn;
        struct ldb_result *result;
+       unsigned int count;
        int ret;
-       int count;
 
        if (!PyObject_AsDn(ldb_ctx, obj, ldb_ctx, &dn))
                return -1;
 
-       ret = ldb_search(ldb_ctx, ldb_ctx, &result, dn, LDB_SCOPE_BASE, NULL, 
NULL);
+       ret = ldb_search(ldb_ctx, ldb_ctx, &result, dn, LDB_SCOPE_BASE, NULL,
+                        NULL);
        if (ret != LDB_SUCCESS) {
                PyErr_SetLdbError(PyExc_LdbError, ret, ldb_ctx);
                return -1;
@@ -1441,7 +1442,13 @@ static int py_ldb_contains(PyLdbObject *self, PyObject 
*obj)
 
        talloc_free(result);
 
-       return count;
+       if (count == 1) {
+               return 1;
+       } else if (count == 0) {
+               return 0;
+       }
+
+       return -1;
 }
 
 static PySequenceMethods py_ldb_seq = {
@@ -1688,8 +1695,9 @@ PyTypeObject PyLdbModule = {
  * @return New ldb_message_element, allocated as child of mem_ctx
  */
 struct ldb_message_element *PyObject_AsMessageElement(TALLOC_CTX *mem_ctx,
-                                                                               
           PyObject *set_obj, int flags,
-                                                                               
           const char *attr_name)
+                                                     PyObject *set_obj,
+                                                     int flags,
+                                                     const char *attr_name)
 {
        struct ldb_message_element *me;
 
@@ -1713,14 +1721,14 @@ struct ldb_message_element 
*PyObject_AsMessageElement(TALLOC_CTX *mem_ctx,
                me->values[0].data = talloc_memdup(me, 
                        (uint8_t *)PyString_AsString(set_obj), 
me->values[0].length+1);
        } else if (PySequence_Check(set_obj)) {
-               int i;
+               Py_ssize_t i;
                me->num_values = PySequence_Size(set_obj);
                me->values = talloc_array(me, struct ldb_val, me->num_values);
                for (i = 0; i < me->num_values; i++) {
                        PyObject *obj = PySequence_GetItem(set_obj, i);
                        if (!PyString_Check(obj)) {
                                PyErr_Format(PyExc_TypeError,
-                                            "Expected string as element %d in 
list", i);
+                                            "Expected string as element %zd in 
list", i);
                                talloc_free(me);
                                return NULL;
                        }
@@ -1738,10 +1746,10 @@ struct ldb_message_element 
*PyObject_AsMessageElement(TALLOC_CTX *mem_ctx,
 }
 
 
-static PyObject *ldb_msg_element_to_set(struct ldb_context *ldb_ctx, 
-                                                                struct 
ldb_message_element *me)
+static PyObject *ldb_msg_element_to_set(struct ldb_context *ldb_ctx,
+                                       struct ldb_message_element *me)
 {
-       int i;
+       Py_ssize_t i;
        PyObject *result;
 
        /* Python << 2.5 doesn't have PySet_New and PySet_Add. */
@@ -1757,10 +1765,10 @@ static PyObject *ldb_msg_element_to_set(struct 
ldb_context *ldb_ctx,
 
 static PyObject *py_ldb_msg_element_get(PyLdbMessageElementObject *self, 
PyObject *args)
 {
-       int i;
-       if (!PyArg_ParseTuple(args, "i", &i))
+       unsigned int i;
+       if (!PyArg_ParseTuple(args, "I", &i))
                return NULL;
-       if (i < 0 || i >= 
PyLdbMessageElement_AsMessageElement(self)->num_values)
+       if (i >= PyLdbMessageElement_AsMessageElement(self)->num_values)
                Py_RETURN_NONE;
 
        return PyObject_FromLdbValue(NULL, 
PyLdbMessageElement_AsMessageElement(self), 
@@ -1866,7 +1874,7 @@ static PyObject *py_ldb_msg_element_new(PyTypeObject 
*type, PyObject *args, PyOb
        el = talloc_zero(mem_ctx, struct ldb_message_element);
 
        if (py_elements != NULL) {
-               int i;
+               Py_ssize_t i;
                if (PyString_Check(py_elements)) {
                        el->num_values = 1;
                        el->values = talloc_array(el, struct ldb_val, 1);
@@ -1880,8 +1888,7 @@ static PyObject *py_ldb_msg_element_new(PyTypeObject 
*type, PyObject *args, PyOb
                                PyObject *item = 
PySequence_GetItem(py_elements, i);
                                if (!PyString_Check(item)) {
                                        PyErr_Format(PyExc_TypeError, 
-                                                       "Expected string as 
element %d in list", 
-                                                       i);
+                                                    "Expected string as 
element %zd in list", i);
                                        talloc_free(mem_ctx);
                                        return NULL;
                                }
@@ -1915,7 +1922,7 @@ static PyObject *py_ldb_msg_element_new(PyTypeObject 
*type, PyObject *args, PyOb
 static PyObject *py_ldb_msg_element_repr(PyLdbMessageElementObject *self)
 {
        char *element_str = NULL;
-       int i;
+       Py_ssize_t i;
        struct ldb_message_element *el = 
PyLdbMessageElement_AsMessageElement(self);
        PyObject *ret;
 
@@ -1981,7 +1988,7 @@ static PyObject 
*py_ldb_msg_remove_attr(PyLdbMessageObject *self, PyObject *args
 static PyObject *py_ldb_msg_keys(PyLdbMessageObject *self)
 {
        struct ldb_message *msg = PyLdbMessage_AsMessage(self);
-       int i, j = 0;
+       Py_ssize_t i, j = 0;
        PyObject *obj = PyList_New(msg->num_elements+(msg->dn != NULL?1:0));
        if (msg->dn != NULL) {
                PyList_SetItem(obj, j, PyString_FromString("dn"));
@@ -2041,9 +2048,8 @@ static PyObject *py_ldb_msg_get(PyLdbMessageObject *self, 
PyObject *args)
 static PyObject *py_ldb_msg_items(PyLdbMessageObject *self)
 {
        struct ldb_message *msg = PyLdbMessage_AsMessage(self);
-       int i, j;
+       Py_ssize_t i, j = 0;
        PyObject *l = PyList_New(msg->num_elements + (msg->dn == NULL?0:1));
-       j = 0;
        if (msg->dn != NULL) {
                PyList_SetItem(l, 0, Py_BuildValue("(sO)", "dn", 
PyLdbDn_FromDn(msg->dn)));
                j++;
@@ -2588,14 +2594,14 @@ static PyObject *py_register_module(PyObject *module, 
PyObject *args)
 
 static PyObject *py_timestring(PyObject *module, PyObject *args)
 {
-       time_t t;
-       unsigned long val;
+       /* most times "time_t" is a signed integer type with 32 or 64 bit:
+        * 
http://stackoverflow.com/questions/471248/what-is-ultimately-a-time-t-typedef-to
 */
+       long int t_val;
        char *tresult;
        PyObject *ret;
-       if (!PyArg_ParseTuple(args, "l", &val))
+       if (!PyArg_ParseTuple(args, "l", &t_val))
                return NULL;
-       t = (time_t)val;
-       tresult = ldb_timestring(NULL, t);
+       tresult = ldb_timestring(NULL, (time_t) t_val);
        ret = PyString_FromString(tresult);
        talloc_free(tresult);
        return ret;


-- 
Samba Shared Repository

Reply via email to