26#ifdef DBM_INCLUDE_FILE
27#include DBM_INCLUDE_FILE
38#define TRUNC_IT(extension, mode) \
39 snprintf(buf, MAXPATHLEN, "%s" extension, ZSTR_VAL(info->path)); \
40 buf[MAXPATHLEN-1] = '\0'; \
41 if((fd = VCWD_OPEN_MODE(buf, O_CREAT | mode | O_WRONLY, filemode)) == -1) \
53 int filemode = info->file_permission;
55 if(info->mode == DBA_TRUNC) {
59 TRUNC_IT(
".pag", O_TRUNC);
60 TRUNC_IT(
".dir", O_TRUNC);
63 if(info->mode == DBA_CREAT) {
70 if(dbminit((
char *)
ZSTR_VAL(info->path)) == -1) {
74 info->dbf =
pemalloc(
sizeof(dba_dbm_data), info->flags&DBA_PERSISTENT);
75 memset(info->dbf, 0,
sizeof(dba_dbm_data));
81 pefree(info->dbf, info->flags&DBA_PERSISTENT);
94 return zend_string_init(
gval.dptr,
gval.dsize,
false);
144DBA_FIRSTKEY_FUNC(dbm)
146 dba_dbm_data *dba = info->dbf;
152 key = zend_string_init(
gkey.dptr,
gkey.dsize,
false);
155 dba->nextkey.dptr =
NULL;
162 dba_dbm_data *dba = info->dbf;
166 if (!dba->nextkey.dptr) {
return NULL; }
168 gkey = nextkey(dba->nextkey);
170 key = zend_string_init(
gkey.dptr,
gkey.dsize,
false);
173 dba->nextkey.dptr =
NULL;
178DBA_OPTIMIZE_FUNC(dbm)
192 if (!
strcmp(DBM_VERSION,
"GDBM"))
194 return dba_info_gdbm(hnd, info);
memset(ptr, 0, type->size)
zend_ffi_ctype_name_buf buf
unsigned char key[REFLECTION_KEY_LEN]
#define pefree(ptr, persistent)
#define pemalloc(size, persistent)
strcmp(string $string1, string $string2)
struct _zend_string zend_string