summaryrefslogtreecommitdiff
path: root/ext/dba/dba_db3.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dba/dba_db3.c')
-rw-r--r--ext/dba/dba_db3.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/ext/dba/dba_db3.c b/ext/dba/dba_db3.c
index ae1405705d..809c5408eb 100644
--- a/ext/dba/dba_db3.c
+++ b/ext/dba/dba_db3.c
@@ -76,6 +76,21 @@ DBA_OPEN_FUNC(db3)
filemode = (*info->argv[0])->value.lval;
}
+ if(info->argc > 1
+ && ((info->mode == DBA_CREAT && type != DB_UNKNOWN)
+ || info->mode == DBA_TRUNC)) {
+ convert_to_long_ex(info->argv[1]);
+ switch ((*info->argv[1])->value.lval) {
+ case DBA_HASH:
+ type = DB_HASH;
+ break;
+ case DBA_BTREE:
+ default:
+ type = DB_BTREE;
+ break;
+ }
+ }
+
if (db_create(&dbp, NULL, 0) == 0 &&
dbp->open(dbp, info->path, NULL, type, gmode, filemode) == 0) {
dba_db3_data *data;