28#ifdef DB2_INCLUDE_FILE
29#include DB2_INCLUDE_FILE
42 int filemode = info->file_permission;
43 struct stat check_stat;
46 if (!
s && !check_stat.st_size) {
47 info->mode = DBA_TRUNC;
50 type = info->mode == DBA_READER ? DB_UNKNOWN :
51 info->mode == DBA_TRUNC ? DB_BTREE :
52 s ? DB_BTREE : DB_UNKNOWN;
54 gmode = info->mode == DBA_READER ? DB_RDONLY :
55 (info->mode == DBA_CREAT &&
s) ? DB_CREATE :
56 (info->
mode == DBA_CREAT && !
s) ? 0 :
57 info->
mode == DBA_WRITER ? 0 :
58 info->
mode == DBA_TRUNC ? DB_CREATE | DB_TRUNCATE : -1;
68 info->dbf =
pemalloc(
sizeof(dba_db2_data), info->flags&DBA_PERSISTENT);
69 memset(info->dbf, 0,
sizeof(dba_db2_data));
70 ((dba_db2_data *) info->dbf)->dbp = dbp;
76 dba_db2_data *dba = info->dbf;
79 dba->cursor->c_close(dba->cursor);
80 dba->dbp->close(dba->dbp, 0);
81 pefree(dba, info->flags&DBA_PERSISTENT);
86 dba_db2_data *dba = info->dbf;
97 return zend_string_init(
gval.data,
gval.size,
false);
102 dba_db2_data *dba = info->dbf;
113 mode == 1 ? DB_NOOVERWRITE : 0)) {
121 dba_db2_data *dba = info->dbf;
136 dba_db2_data *dba = info->dbf;
145DBA_FIRSTKEY_FUNC(db2)
147 dba_db2_data *dba = info->dbf;
150 dba->cursor->c_close(dba->cursor);
154#if (DB_VERSION_MAJOR > 2) || (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR > 6) || (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 6 && DB_VERSION_PATCH >= 4)
155 if (dba->dbp->cursor(dba->dbp,
NULL, &dba->cursor, 0)) {
157 if (dba->dbp->cursor(dba->dbp,
NULL, &dba->cursor)) {
162 return dba_nextkey_db2(info);
167 dba_db2_data *dba = info->dbf;
170 if (dba->cursor->c_get(dba->cursor, &
gkey, &
gval, DB_NEXT)
175 return zend_string_init(
gkey.data,
gkey.size,
false);
178DBA_OPTIMIZE_FUNC(db2)
185 dba_db2_data *dba = info->dbf;
192 return estrdup(DB_VERSION_STRING);
memset(ptr, 0, type->size)
unsigned char key[REFLECTION_KEY_LEN]
#define pefree(ptr, persistent)
#define pemalloc(size, persistent)
#define VCWD_STAT(path, buff)