1 #define PERL_NO_GET_CONTEXT
9 SV * filter_fetch_key ;
10 SV * filter_store_key ;
11 SV * filter_fetch_value ;
12 SV * filter_store_value ;
16 typedef SDBM_File_type * SDBM_File ;
17 typedef datum datum_key ;
18 typedef datum datum_value ;
20 #define sdbm_TIEHASH(dbtype,filename,flags,mode) sdbm_open(filename,flags,mode)
21 #define sdbm_FETCH(db,key) sdbm_fetch(db->dbp,key)
22 #define sdbm_STORE(db,key,value,flags) sdbm_store(db->dbp,key,value,flags)
23 #define sdbm_DELETE(db,key) sdbm_delete(db->dbp,key)
24 #define sdbm_EXISTS(db,key) sdbm_exists(db->dbp,key)
25 #define sdbm_FIRSTKEY(db) sdbm_firstkey(db->dbp)
26 #define sdbm_NEXTKEY(db,key) sdbm_nextkey(db->dbp)
29 MODULE = SDBM_File PACKAGE = SDBM_File PREFIX = sdbm_
32 sdbm_TIEHASH(dbtype, filename, flags, mode)
42 if ((dbp = sdbm_open(filename,flags,mode))) {
43 RETVAL = (SDBM_File)safemalloc(sizeof(SDBM_File_type)) ;
44 Zero(RETVAL, 1, SDBM_File_type) ;
57 if (db->filter_fetch_key)
58 SvREFCNT_dec(db->filter_fetch_key) ;
59 if (db->filter_store_key)
60 SvREFCNT_dec(db->filter_store_key) ;
61 if (db->filter_fetch_value)
62 SvREFCNT_dec(db->filter_fetch_value) ;
63 if (db->filter_store_value)
64 SvREFCNT_dec(db->filter_store_value) ;
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)
104 datum_key key = key; /* never used - silence picky compilers. */
110 RETVAL = sdbm_error(db->dbp) ;
118 RETVAL = sdbm_clearerr(db->dbp) ;
124 filter_fetch_key(db, code)
127 SV * RETVAL = &PL_sv_undef ;
129 DBM_setFilter(db->filter_fetch_key, code) ;
132 filter_store_key(db, code)
135 SV * RETVAL = &PL_sv_undef ;
137 DBM_setFilter(db->filter_store_key, code) ;
140 filter_fetch_value(db, code)
143 SV * RETVAL = &PL_sv_undef ;
145 DBM_setFilter(db->filter_fetch_value, code) ;
148 filter_store_value(db, code)
151 SV * RETVAL = &PL_sv_undef ;
153 DBM_setFilter(db->filter_store_value, code) ;