r6592: Throw an IOError exception if tdb_open() or tdb_open_Ex() returns NULL.
[ira/wip.git] / source / scripting / swig / tdb.i
index b381487ebc4cc0ee03b22fbb008011edd7b86a6e..6c6c4af8cdcca0385fd5e9c4cce2ae943ec7b305 100644 (file)
@@ -103,6 +103,16 @@ typedef int mode_t;
 #define TDB_CONVERT 16 /* convert endian (internal use) */
 #define TDB_BIGENDIAN 32 /* header is big-endian (internal use) */
 
+/* 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 tdb_open open;
 TDB_CONTEXT *tdb_open(const char *name, int hash_size, int tdb_flags,
                      int open_flags, mode_t mode);
@@ -113,6 +123,8 @@ TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
                         tdb_log_func log_fn,
                         tdb_hash_func hash_fn);
 
+%exception;
+
 %rename tdb_reopen reopen;
 int tdb_reopen(TDB_CONTEXT *tdb);