@@ -47,13 +47,15 @@ DBA_OPEN_FUNC(db2)
47
47
int gmode = 0 ;
48
48
int filemode = 0644 ;
49
49
struct stat check_stat ;
50
-
50
+ int ret ;
51
+ int s = VCWD_STAT (info -> path , & check_stat );
51
52
type = info -> mode == DBA_READER ? DB_UNKNOWN :
52
53
info -> mode == DBA_TRUNC ? DB_BTREE :
53
- VCWD_STAT ( info -> path , & check_stat ) ? DB_BTREE : DB_UNKNOWN ;
54
+ s ? DB_BTREE : DB_UNKNOWN ;
54
55
55
56
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 :
57
59
info -> mode == DBA_WRITER ? 0 :
58
60
info -> mode == DBA_TRUNC ? DB_CREATE | DB_TRUNCATE : -1 ;
59
61
@@ -65,11 +67,13 @@ DBA_OPEN_FUNC(db2)
65
67
filemode = Z_LVAL_PP (info -> argv [0 ]);
66
68
}
67
69
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 ) )) {
69
71
info -> dbf = malloc (sizeof (dba_db2_data ));
70
72
memset (info -> dbf , 0 , sizeof (dba_db2_data ));
71
73
((dba_db2_data * ) info -> dbf )-> dbp = dbp ;
72
74
return SUCCESS ;
75
+ } else {
76
+ printf ("Failed: type = %i\ngmode = %i\n%s\n" ,type ,gmode ,strerror (ret ));
73
77
}
74
78
return FAILURE ;
75
79
}
0 commit comments