summaryrefslogtreecommitdiff
path: root/source4/scripting/swig/Tdb.py
diff options
context:
space:
mode:
Diffstat (limited to 'source4/scripting/swig/Tdb.py')
-rw-r--r--source4/scripting/swig/Tdb.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/source4/scripting/swig/Tdb.py b/source4/scripting/swig/Tdb.py
index 0de43688b3..ef0165ed8b 100644
--- a/source4/scripting/swig/Tdb.py
+++ b/source4/scripting/swig/Tdb.py
@@ -39,25 +39,33 @@ class Tdb:
def __init__(self, name, hash_size = 0, flags = tdb.TDB_DEFAULT,
open_flags = os.O_RDWR | os.O_CREAT, mode = 0600):
self.tdb = tdb.open(name, hash_size, flags, open_flags, mode)
-
+ if self.tdb is None:
+ raise IOError, tdb.errorstr(self.tdb)
+
def __del__(self):
- if hasattr(self, 'tdb'):
- tdb.close(self.tdb)
+ self.close()
+
+ def close(self):
+ if hasattr(self, 'tdb') and self.tdb is not None:
+ if tdb.close(self.tdb) == -1:
+ raise IOError, tdb.errorstr(self.tdb)
+ self.tdb = None
# Random access to keys, values
def __getitem__(self, key):
result = tdb.fetch(self.tdb, key)
if result is None:
- raise KeyError, key
+ raise KeyError, '%s: %s' % (key, tdb.errorstr(self.tdb))
return result
def __setitem__(self, key, item):
- tdb.store(self.tdb, key, item)
+ if tdb.store(self.tdb, key, item) == -1:
+ raise IOError, tdb.errorstr(self.tdb)
def __delitem__(self, key):
if not tdb.exists(self.tdb, key):
- raise KeyError, key
+ raise KeyError, '%s: %s' % (key, tdb.errorstr(self.tdb))
tdb.delete(self.tdb, key)
def has_key(self, key):