*/
#include <Python.h>
+#include "python/py3compat.h"
#include "includes.h"
#include "system/filesys.h"
-#include "tdb_compat.h"
+#include <tdb.h>
#include "lib/tdb_wrap/tdb_wrap.h"
#include "librpc/ndr/libndr.h"
-#include "lib/util/wrap_xattr.h"
#include "ntvfs/posix/posix_eadb.h"
#include "libcli/util/pyerrors.h"
#include "param/pyparam.h"
-void initxattr_tdb(void);
-
static PyObject *py_is_xattr_supported(PyObject *self)
{
return Py_True;
{
char *filename, *attribute, *tdbname;
DATA_BLOB blob;
- int blobsize;
+ Py_ssize_t blobsize;
NTSTATUS status;
TALLOC_CTX *mem_ctx;
struct tdb_wrap *eadb;
- if (!PyArg_ParseTuple(args, "ssss#", &tdbname, &filename, &attribute,
+ if (!PyArg_ParseTuple(args, "sss"PYARG_BYTES_LEN, &tdbname, &filename, &attribute,
&blob.data, &blobsize))
return NULL;
blob.length = blobsize;
mem_ctx = talloc_new(NULL);
- eadb = tdb_wrap_open(mem_ctx, tdbname, 50000,
- TDB_DEFAULT, O_RDWR|O_CREAT, 0600,
- py_default_loadparm_context(mem_ctx));
+ eadb = tdb_wrap_open(
+ mem_ctx, tdbname, 50000,
+ lpcfg_tdb_flags(py_default_loadparm_context(mem_ctx),
+ TDB_DEFAULT),
+ O_RDWR|O_CREAT, 0600);
if (eadb == NULL) {
PyErr_SetFromErrno(PyExc_IOError);
return NULL;
mem_ctx = talloc_new(NULL);
- eadb = tdb_wrap_open(mem_ctx, tdbname, 50000,
- TDB_DEFAULT, O_RDWR|O_CREAT, 0600, py_default_loadparm_context(mem_ctx));
+ eadb = tdb_wrap_open(
+ mem_ctx, tdbname, 50000,
+ lpcfg_tdb_flags(py_default_loadparm_context(mem_ctx),
+ TDB_DEFAULT),
+ O_RDWR|O_CREAT, 0600);
if (eadb == NULL) {
PyErr_SetFromErrno(PyExc_IOError);
talloc_free(mem_ctx);
talloc_free(mem_ctx);
return NULL;
}
- ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+ ret = Py_BuildValue(PYARG_BYTES_LEN, blob.data, blob.length);
talloc_free(mem_ctx);
return ret;
}
static PyMethodDef py_posix_eadb_methods[] = {
{ "wrap_getxattr", (PyCFunction)py_wrap_getxattr, METH_VARARGS,
"wrap_getxattr(filename,attribute) -> blob\n"
- "Retreive given attribute on the given file." },
+ "Retrieve given attribute on the given file." },
{ "wrap_setxattr", (PyCFunction)py_wrap_setxattr, METH_VARARGS,
"wrap_setxattr(filename,attribute,value)\n"
"Set the given attribute to the given value on the given file." },
{ NULL }
};
-void initposix_eadb(void)
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "posix_eadb",
+ .m_doc = "Python bindings for xattr manipulation.",
+ .m_size = -1,
+ .m_methods = py_posix_eadb_methods,
+};
+
+MODULE_INIT_FUNC(posix_eadb)
{
PyObject *m;
- m = Py_InitModule3("posix_eadb", py_posix_eadb_methods,
- "Python bindings for xattr manipulation.");
+ m = PyModule_Create(&moduledef);
+
if (m == NULL)
- return;
+ return NULL;
+
+ return m;
}