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_FETCH(db,key) sdbm_fetch(db->dbp,key)
23 #define sdbm_STORE(db,key,value,flags) sdbm_store(db->dbp,key,value,flags)
24 #define sdbm_DELETE(db,key) sdbm_delete(db->dbp,key)
25 #define sdbm_EXISTS(db,key) sdbm_exists(db->dbp,key)
26 #define sdbm_FIRSTKEY(db) sdbm_firstkey(db->dbp)
27 #define sdbm_NEXTKEY(db,key) sdbm_nextkey(db->dbp)
30 MODULE = SDBM_File PACKAGE = SDBM_File PREFIX = sdbm_
33 sdbm_TIEHASH(dbtype, filename, flags, mode, pagname=NULL)
44 if (pagname == NULL) {
45 dbp = sdbm_open(filename, flags, mode);
48 dbp = sdbm_prep(filename, pagname, flags, mode);
51 RETVAL = (SDBM_File)safecalloc(1, sizeof(SDBM_File_type));
68 SvREFCNT_dec_NN(db->filter[i]);
79 sdbm_STORE(db, key, value, flags = DBM_REPLACE)
86 if (RETVAL < 0 && errno == EPERM)
87 croak("No write permission to sdbm file");
88 croak("sdbm store returned %d, errno %d, key \"%s\"",
89 RETVAL,errno,key.dptr);
90 sdbm_clearerr(db->dbp);
108 sdbm_NEXTKEY(db, key)
117 RETVAL = ix ? sdbm_clearerr(db->dbp) : sdbm_error(db->dbp);
122 filter_fetch_key(db, code)
125 SV * RETVAL = &PL_sv_undef ;
127 SDBM_File::filter_fetch_key = fetch_key
128 SDBM_File::filter_store_key = store_key
129 SDBM_File::filter_fetch_value = fetch_value
130 SDBM_File::filter_store_value = store_value
132 DBM_setFilter(db->filter[ix], code);
136 HV *stash = gv_stashpvs("SDBM_File", 1);
137 newCONSTSUB(stash, "PAGFEXT", newSVpvs(PAGFEXT));
138 newCONSTSUB(stash, "DIRFEXT", newSVpvs(DIRFEXT));
139 newCONSTSUB(stash, "PAIRMAX", newSVuv(PAIRMAX));