mirror of
https://github.com/samba-team/samba.git
synced 2025-01-10 01:18:15 +03:00
python: samba._ldb: Port of samba._ldb to Python 3 compatible form
Port of samba._ldb Python module to Python 3 compatible form. Signed-off-by: Lumir Balhar <lbalhar@redhat.com> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
This commit is contained in:
parent
9d8bcead4f
commit
e9a464911c
@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include <Python.h>
|
||||
#include "python/py3compat.h"
|
||||
#include "includes.h"
|
||||
#include <ldb.h>
|
||||
#include <pyldb.h>
|
||||
@ -29,7 +30,6 @@
|
||||
#include "lib/ldb-samba/ldif_handlers.h"
|
||||
#include "auth/pyauth.h"
|
||||
|
||||
void init_ldb(void);
|
||||
|
||||
static PyObject *pyldb_module;
|
||||
static PyObject *py_ldb_error;
|
||||
@ -237,6 +237,14 @@ static PyMethodDef py_samba_ldb_methods[] = {
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
static struct PyModuleDef moduledef = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
.m_name = "_ldb",
|
||||
.m_doc = "Samba-specific LDB python bindings",
|
||||
.m_size = -1,
|
||||
.m_methods = py_samba_ldb_methods,
|
||||
};
|
||||
|
||||
static PyTypeObject PySambaLdb = {
|
||||
.tp_name = "samba._ldb.Ldb",
|
||||
.tp_doc = "Connection to a LDB database.",
|
||||
@ -244,27 +252,29 @@ static PyTypeObject PySambaLdb = {
|
||||
.tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,
|
||||
};
|
||||
|
||||
void init_ldb(void)
|
||||
MODULE_INIT_FUNC(_ldb)
|
||||
{
|
||||
PyObject *m;
|
||||
|
||||
pyldb_module = PyImport_ImportModule("ldb");
|
||||
if (pyldb_module == NULL)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
PySambaLdb.tp_base = (PyTypeObject *)PyObject_GetAttrString(pyldb_module, "Ldb");
|
||||
if (PySambaLdb.tp_base == NULL)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
py_ldb_error = PyObject_GetAttrString(pyldb_module, "LdbError");
|
||||
|
||||
if (PyType_Ready(&PySambaLdb) < 0)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
m = Py_InitModule3("_ldb", NULL, "Samba-specific LDB python bindings");
|
||||
m = PyModule_Create(&moduledef);
|
||||
if (m == NULL)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
Py_INCREF(&PySambaLdb);
|
||||
PyModule_AddObject(m, "Ldb", (PyObject *)&PySambaLdb);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
@ -18,10 +18,12 @@ bld.SAMBA_SUBSYSTEM('ldbwrap',
|
||||
deps='ldb samba-util ldbsamba samba-hostconfig'
|
||||
)
|
||||
|
||||
|
||||
bld.SAMBA_PYTHON('python_samba__ldb', 'pyldb.c',
|
||||
deps='ldbsamba pyparam_util ldbwrap pyldb-util pyauth',
|
||||
realname='samba/_ldb.so')
|
||||
for env in bld.gen_python_environments():
|
||||
pyparam_util = bld.pyembed_libname('pyparam_util')
|
||||
pyldb_util = bld.pyembed_libname('pyldb-util')
|
||||
bld.SAMBA_PYTHON('python_samba__ldb', 'pyldb.c',
|
||||
deps='ldbsamba %s ldbwrap %s pyauth' % (pyparam_util, pyldb_util),
|
||||
realname='samba/_ldb.so')
|
||||
|
||||
bld.SAMBA_MODULE('ldbsamba_extensions',
|
||||
source='samba_extensions.c',
|
||||
|
@ -29,11 +29,7 @@ import ldb
|
||||
from samba.compat import PY3
|
||||
import samba.param
|
||||
from samba import _glue
|
||||
if not PY3:
|
||||
from samba._ldb import Ldb as _Ldb
|
||||
else:
|
||||
# samba._ldb is not yet ported to Python 3
|
||||
_Ldb = object
|
||||
from samba._ldb import Ldb as _Ldb
|
||||
|
||||
|
||||
def source_tree_topdir():
|
||||
|
Loading…
Reference in New Issue
Block a user