summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/ldb.i
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2008-01-11 02:36:59 +0100
committerJelmer Vernooij <jelmer@samba.org>2008-01-11 02:36:59 +0100
commit1f4838b8a3e5f0c7c400097f56329e5a133ec4e8 (patch)
tree02fe5433c993dfd0faa3482b4baa9160e551b1ed /source4/lib/ldb/ldb.i
parent2466d2cc5e210a124bb23cb9d2c8d3cc608a7c7f (diff)
downloadsamba-1f4838b8a3e5f0c7c400097f56329e5a133ec4e8.tar.gz
samba-1f4838b8a3e5f0c7c400097f56329e5a133ec4e8.tar.bz2
samba-1f4838b8a3e5f0c7c400097f56329e5a133ec4e8.zip
python/ldap: Wrap parse_control_strings().
(This used to be commit b27e5a68530c4fd6430cbb174b63f8ff2b6f4e53)
Diffstat (limited to 'source4/lib/ldb/ldb.i')
-rw-r--r--source4/lib/ldb/ldb.i27
1 files changed, 25 insertions, 2 deletions
diff --git a/source4/lib/ldb/ldb.i b/source4/lib/ldb/ldb.i
index b6718351f8..cf4a335954 100644
--- a/source4/lib/ldb/ldb.i
+++ b/source4/lib/ldb/ldb.i
@@ -50,6 +50,15 @@ typedef int ldb_error;
%include "exception.i"
%import "stdint.i"
+/* Don't expose talloc contexts in Python code. Python does reference
+ counting for us, so just create a new top-level talloc context.
+ */
+%typemap(in, numinputs=0, noblock=1) TALLOC_CTX * {
+ $1 = NULL;
+}
+
+
+
%constant int SCOPE_DEFAULT = LDB_SCOPE_DEFAULT;
%constant int SCOPE_BASE = LDB_SCOPE_BASE;
%constant int SCOPE_ONELEVEL = LDB_SCOPE_ONELEVEL;
@@ -115,7 +124,7 @@ typedef int ldb_error;
}
}
-%typemap(in,noblock=1,numinputs=1) const char * const *attrs {
+%typemap(in,noblock=1,numinputs=1) const char * const *NULL_STR_LIST {
if ($input == Py_None) {
$1 = NULL;
} else if (PySequence_Check($input)) {
@@ -129,9 +138,13 @@ typedef int ldb_error;
}
}
-%typemap(freearg,noblock=1) const char * const *attrs {
+%typemap(freearg,noblock=1) const char * const *NULL_STR_LIST {
talloc_free($1);
}
+
+%apply const char * const *NULL_STR_LIST { const char * const *attrs }
+%apply const char * const *NULL_STR_LIST { const char * const *control_strings }
+
#endif
%types(struct ldb_result *);
@@ -472,6 +485,14 @@ PyObject *PyExc_LdbError;
$result = Py_None;
};
+%typemap(out,noblock=1) struct ldb_control ** {
+ if ($1 == NULL) {
+ PyErr_SetObject(PyExc_LdbError, Py_BuildValue((char *)"(s)", ldb_errstring(arg1)));
+ SWIG_fail;
+ }
+ $result = SWIG_NewPointerObj($1, $1_descriptor, 0);
+}
+
%rename(Ldb) ldb_context;
%typemap(in,noblock=1) struct ldb_dn * {
@@ -500,6 +521,8 @@ typedef struct ldb_context {
struct ldb_result **OUT);
ldb_error delete(ldb_dn *dn);
ldb_error rename(ldb_dn *olddn, ldb_dn *newdn);
+ struct ldb_control **parse_control_strings(TALLOC_CTX *mem_ctx,
+ const char * const*control_strings);
ldb_error add(ldb_msg *add_msg);
ldb_error add(PyObject *py_msg)
{