Skip to content

Commit e8baeb3

Browse files
author
Gavin Sherry
committed
See the update to dba_db3.c
1 parent 8f30e5f commit e8baeb3

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

ext/dba/dba_db2.c

+8-4
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,15 @@ DBA_OPEN_FUNC(db2)
4747
int gmode = 0;
4848
int filemode = 0644;
4949
struct stat check_stat;
50-
50+
int ret;
51+
int s = VCWD_STAT(info->path, &check_stat);
5152
type = info->mode == DBA_READER ? DB_UNKNOWN :
5253
info->mode == DBA_TRUNC ? DB_BTREE :
53-
VCWD_STAT(info->path, &check_stat) ? DB_BTREE : DB_UNKNOWN;
54+
s ? DB_BTREE : DB_UNKNOWN;
5455

5556
gmode = info->mode == DBA_READER ? DB_RDONLY :
56-
info->mode == DBA_CREAT ? DB_CREATE :
57+
(info->mode == DBA_CREAT && s) ? DB_CREATE :
58+
(info->mode == DBA_CREAT && !s) ? 0 :
5759
info->mode == DBA_WRITER ? 0 :
5860
info->mode == DBA_TRUNC ? DB_CREATE | DB_TRUNCATE : -1;
5961

@@ -65,11 +67,13 @@ DBA_OPEN_FUNC(db2)
6567
filemode = Z_LVAL_PP(info->argv[0]);
6668
}
6769

68-
if(!db_open(info->path, type, gmode, filemode, NULL, NULL, &dbp)) {
70+
if(!(ret = db_open(info->path, type, gmode, filemode, NULL, NULL, &dbp))) {
6971
info->dbf = malloc(sizeof(dba_db2_data));
7072
memset(info->dbf, 0, sizeof(dba_db2_data));
7173
((dba_db2_data *) info->dbf)->dbp = dbp;
7274
return SUCCESS;
75+
} else {
76+
printf("Failed: type = %i\ngmode = %i\n%s\n",type,gmode,strerror(ret));
7377
}
7478
return FAILURE;
7579
}

0 commit comments

Comments
 (0)