diff options
-rw-r--r-- | source4/scripting/config.mk | 16 | ||||
-rw-r--r-- | source4/scripting/swig/dcerpc.i | 3 | ||||
-rw-r--r-- | source4/scripting/swig/ldb.i | 88 |
3 files changed, 104 insertions, 3 deletions
diff --git a/source4/scripting/config.mk b/source4/scripting/config.mk index 15e6e8539e..22437909ed 100644 --- a/source4/scripting/config.mk +++ b/source4/scripting/config.mk @@ -8,6 +8,13 @@ REQUIRED_SUBSYSTEMS = LIBTDB ####################### ####################### +# Start LIBRARY swig_ldb +[LIBRARY::swig_ldb] +REQUIRED_SUBSYSTEMS = ldb +# End LIBRARY swig_ldb +####################### + +####################### # Start LIBRARY swig_dcerpc [LIBRARY::swig_dcerpc] REQUIRED_SUBSYSTEMS = LIBCLI NDR_MISC LIBBASIC CONFIG RPC_NDR_SAMR RPC_NDR_LSA @@ -15,7 +22,7 @@ REQUIRED_SUBSYSTEMS = LIBCLI NDR_MISC LIBBASIC CONFIG RPC_NDR_SAMR RPC_NDR_LSA ####################### # Swig extensions -swig: scripting/swig/_tdb.so scripting/swig/_dcerpc.so +swig: scripting/swig/_tdb.so scripting/swig/_ldb.so scripting/swig/_dcerpc.so scripting/swig/tdb_wrap.c: scripting/swig/tdb.i swig -python scripting/swig/tdb.i @@ -24,6 +31,13 @@ scripting/swig/_tdb.so: scripting/swig/tdb_wrap.o $(LIBRARY_swig_tdb_DEPEND_LIST $(SHLD) $(SHLD_FLAGS) -o scripting/swig/_tdb.so scripting/swig/tdb_wrap.o \ $(LIBRARY_swig_tdb_LINK_LIST) $(LIBRARY_swig_tdb_LINK_FLAGS) +scripting/swig/ldb_wrap.c: scripting/swig/ldb.i + swig -python scripting/swig/ldb.i + +scripting/swig/_ldb.so: scripting/swig/ldb_wrap.o $(LIBRARY_swig_ldb_DEPEND_LIST) + $(SHLD) $(SHLD_FLAGS) -o scripting/swig/_ldb.so scripting/swig/ldb_wrap.o \ + $(LIBRARY_swig_ldb_LINK_LIST) $(LIBRARY_swig_ldb_LINK_FLAGS) + SWIG_INCLUDES = librpc/gen_ndr/samr.i librpc/gen_ndr/lsa.i librpc/gen_ndr/spoolss.i scripting/swig/dcerpc_wrap.c: scripting/swig/dcerpc.i scripting/swig/samba.i scripting/swig/status_codes.i $(SWIG_INCLUDES) diff --git a/source4/scripting/swig/dcerpc.i b/source4/scripting/swig/dcerpc.i index 395f1473d1..2111404bc6 100644 --- a/source4/scripting/swig/dcerpc.i +++ b/source4/scripting/swig/dcerpc.i @@ -69,8 +69,7 @@ void set_werror_exception(int status) %init %{ setup_logging("python", DEBUG_STDOUT); - lp_load(dyn_CONFIGFILE, True, False, False); - load_interfaces(); + lp_load(); ntstatus_exception = PyErr_NewException("_dcerpc.NTSTATUS", NULL, NULL); werror_exception = PyErr_NewException("_dcerpc.WERROR", NULL, NULL); PyDict_SetItemString(d, "NTSTATUS", ntstatus_exception); diff --git a/source4/scripting/swig/ldb.i b/source4/scripting/swig/ldb.i new file mode 100644 index 0000000000..5f11b6d2ec --- /dev/null +++ b/source4/scripting/swig/ldb.i @@ -0,0 +1,88 @@ +/* + Unix SMB/CIFS implementation. + + Swig interface to ldb. + + Copyright (C) 2005 Tim Potter <tpot@samba.org> + Copyright (C) 2006 Simo Sorce <idra@samba.org> + + ** NOTE! The following LGPL license applies to the ldb + ** library. This does NOT imply that all of Samba is released + ** under the LGPL + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +%module ldb + +%{ + +/* This symbol is used in both includes.h and Python.h which causes an + annoying compiler warning. */ + +#ifdef HAVE_FSTAT +#undef HAVE_FSTAT +#endif + +#if (__GNUC__ >= 3) +/** Use gcc attribute to check printf fns. a1 is the 1-based index of + * the parameter containing the format, and a2 the index of the first + * argument. Note that some gcc 2.x versions don't handle this + * properly **/ +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2))) +#else +#define PRINTF_ATTRIBUTE(a1, a2) +#endif + +/* Include ldb headers */ + +/* Treat a uint8_t as an unsigned character */ +typedef unsigned char uint8_t; +typedef unsigned long long uint64_t; +typedef long long int64_t; + +#include "lib/ldb/include/ldb.h" + +%} + +/* The ldb functions will crash if a NULL tdb is passed */ + +%include exception.i + +%typemap(check) struct ldb_context* { + if ($1 == NULL) + SWIG_exception(SWIG_ValueError, + "ldb context must be non-NULL"); +} + +/* Throw an IOError exception if tdb_open() or tdb_open_ex() returns NULL */ + +%exception { + $action + if (result == NULL) { + PyErr_SetFromErrno(PyExc_IOError); + SWIG_fail; + } +} + + +%rename ldb_init init; +struct ldb_context *ldb_init(void *mem_ctx); + +%rename ldb_connect connect; +int ldb_connect(struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[]); + +%rename ldb_request request; +int ldb_request(struct ldb_context *ldb, struct ldb_request *request); |