diff options
author | Tim Potter <tpot@samba.org> | 2003-03-13 06:09:18 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2003-03-13 06:09:18 +0000 |
commit | 6d0a1eaaaad05b2860561619856698f8d1e193c1 (patch) | |
tree | 084114dc6ac490ef395b86ca942506f20629803a /source3 | |
parent | 5e7f809f8f2806f0315f81b109688b3e2ff8b950 (diff) | |
download | samba-6d0a1eaaaad05b2860561619856698f8d1e193c1.tar.gz samba-6d0a1eaaaad05b2860561619856698f8d1e193c1.tar.bz2 samba-6d0a1eaaaad05b2860561619856698f8d1e193c1.zip |
Added chainlock, chainunlock, lock_bystring and unlock_bystring methods.
(This used to be commit cd5c47f47379a8c4021771ec28a9da0085f80d98)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/python/py_tdb.c | 82 |
1 files changed, 81 insertions, 1 deletions
diff --git a/source3/python/py_tdb.c b/source3/python/py_tdb.c index 4969c1047e..e525422a30 100644 --- a/source3/python/py_tdb.c +++ b/source3/python/py_tdb.c @@ -1,7 +1,7 @@ /* Python wrappers for TDB module - Copyright (C) Tim Potter, 2002 + Copyright (C) Tim Potter, 2002-2003 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -481,6 +481,82 @@ PyObject *py_tdb_hnd_traverse(PyObject *self, PyObject *args, PyObject *kw) return PyInt_FromLong(result); } +PyObject *py_tdb_hnd_chainlock(PyObject *self, PyObject *args) +{ + tdb_hnd_object *obj = (tdb_hnd_object *)self; + TDB_DATA key; + int result; + + if (!obj->tdb) { + PyErr_SetString(py_tdb_error, "tdb object has been closed"); + return NULL; + } + + if (!PyArg_ParseTuple(args, "s#", &key.dptr, &key.dsize)) + return NULL; + + result = tdb_chainlock(obj->tdb, key); + + return PyInt_FromLong(result != -1); +} + +PyObject *py_tdb_hnd_chainunlock(PyObject *self, PyObject *args) +{ + tdb_hnd_object *obj = (tdb_hnd_object *)self; + TDB_DATA key; + int result; + + if (!obj->tdb) { + PyErr_SetString(py_tdb_error, "tdb object has been closed"); + return NULL; + } + + if (!PyArg_ParseTuple(args, "s#", &key.dptr, &key.dsize)) + return NULL; + + result = tdb_chainunlock(obj->tdb, key); + + return PyInt_FromLong(result != -1); +} + +PyObject *py_tdb_hnd_lock_bystring(PyObject *self, PyObject *args) +{ + tdb_hnd_object *obj = (tdb_hnd_object *)self; + int result, timeout = 30; + char *s; + + if (!obj->tdb) { + PyErr_SetString(py_tdb_error, "tdb object has been closed"); + return NULL; + } + + if (!PyArg_ParseTuple(args, "s|i", &s, &timeout)) + return NULL; + + result = tdb_lock_bystring(obj->tdb, s, timeout); + + return PyInt_FromLong(result != -1); +} + +PyObject *py_tdb_hnd_unlock_bystring(PyObject *self, PyObject *args) +{ + tdb_hnd_object *obj = (tdb_hnd_object *)self; + char *s; + + if (!obj->tdb) { + PyErr_SetString(py_tdb_error, "tdb object has been closed"); + return NULL; + } + + if (!PyArg_ParseTuple(args, "s", &s)) + return NULL; + + tdb_unlock_bystring(obj->tdb, s); + + Py_INCREF(Py_None); + return Py_None; +} + /* * Method dispatch table for this module */ @@ -505,6 +581,10 @@ static PyMethodDef tdb_hnd_methods[] = { { "lock", (PyCFunction)py_tdb_hnd_lock, METH_VARARGS }, { "unlock", (PyCFunction)py_tdb_hnd_unlock, METH_VARARGS }, { "traverse", (PyCFunction)py_tdb_hnd_traverse, METH_VARARGS | METH_KEYWORDS }, + { "chainlock", (PyCFunction)py_tdb_hnd_chainlock, METH_VARARGS | METH_KEYWORDS }, + { "chainunlock", (PyCFunction)py_tdb_hnd_chainunlock, METH_VARARGS | METH_KEYWORDS }, + { "lock_bystring", (PyCFunction)py_tdb_hnd_lock_bystring, METH_VARARGS | METH_KEYWORDS }, + { "unlock_bystring", (PyCFunction)py_tdb_hnd_unlock_bystring, METH_VARARGS | METH_KEYWORDS }, { NULL } }; |