1 #define PERL_NO_GET_CONTEXT
18 typedef SDBM_File_type * SDBM_File ;
19 typedef datum datum_key ;
20 typedef datum datum_value ;
22 #define sdbm_TIEHASH(dbtype,filename,flags,mode) sdbm_open(filename,flags,mode)
23 #define sdbm_FETCH(db,key) sdbm_fetch(db->dbp,key)
24 #define sdbm_STORE(db,key,value,flags) sdbm_store(db->dbp,key,value,flags)
25 #define sdbm_DELETE(db,key) sdbm_delete(db->dbp,key)
26 #define sdbm_EXISTS(db,key) sdbm_exists(db->dbp,key)
27 #define sdbm_FIRSTKEY(db) sdbm_firstkey(db->dbp)
28 #define sdbm_NEXTKEY(db,key) sdbm_nextkey(db->dbp)
31 MODULE = SDBM_File PACKAGE = SDBM_File PREFIX = sdbm_
34 sdbm_TIEHASH(dbtype, filename, flags, mode)
44 if ((dbp = sdbm_open(filename,flags,mode))) {
45 RETVAL = (SDBM_File)safecalloc(1, sizeof(SDBM_File_type));
62 SvREFCNT_dec(db->filter[i]);
73 sdbm_STORE(db, key, value, flags = DBM_REPLACE)
80 if (RETVAL < 0 && errno == EPERM)
81 croak("No write permission to sdbm file");
82 croak("sdbm store returned %d, errno %d, key \"%s\"",
83 RETVAL,errno,key.dptr);
84 sdbm_clearerr(db->dbp);
102 sdbm_NEXTKEY(db, key)
112 RETVAL = ix ? sdbm_clearerr(db->dbp) : sdbm_error(db->dbp);
117 filter_fetch_key(db, code)
120 SV * RETVAL = &PL_sv_undef ;
122 SDBM_File::filter_fetch_key = fetch_key
123 SDBM_File::filter_store_key = store_key
124 SDBM_File::filter_fetch_value = fetch_value
125 SDBM_File::filter_store_value = store_value
127 DBM_setFilter(db->filter[ix], code);