4 /* If using the DB3 emulation, ENTER is defined both
5 * by DB3 and Perl. We drop the Perl definition now.
6 * See also INSTALL section on DB3.
7 * -- Stanislav Brabec <utx@penguin.cz> */
12 SV * filter_fetch_key ;
13 SV * filter_store_key ;
14 SV * filter_fetch_value ;
15 SV * filter_store_value ;
19 typedef NDBM_File_type * NDBM_File ;
20 typedef datum datum_key ;
21 typedef datum datum_value ;
23 MODULE = NDBM_File PACKAGE = NDBM_File PREFIX = ndbm_
26 ndbm_TIEHASH(dbtype, filename, flags, mode)
36 if ((dbp = dbm_open(filename, flags, mode))) {
37 RETVAL = (NDBM_File)safemalloc(sizeof(NDBM_File_type)) ;
38 Zero(RETVAL, 1, NDBM_File_type) ;
53 #define ndbm_FETCH(db,key) dbm_fetch(db->dbp,key)
59 #define ndbm_STORE(db,key,value,flags) dbm_store(db->dbp,key,value,flags)
61 ndbm_STORE(db, key, value, flags = DBM_REPLACE)
68 if (RETVAL < 0 && errno == EPERM)
69 croak("No write permission to ndbm file");
70 croak("ndbm store returned %d, errno %d, key \"%s\"",
71 RETVAL,errno,key.dptr);
72 dbm_clearerr(db->dbp);
75 #define ndbm_DELETE(db,key) dbm_delete(db->dbp,key)
81 #define ndbm_FIRSTKEY(db) dbm_firstkey(db->dbp)
86 #define ndbm_NEXTKEY(db,key) dbm_nextkey(db->dbp)
90 datum_key key = NO_INIT
92 #define ndbm_error(db) dbm_error(db->dbp)
97 #define ndbm_clearerr(db) dbm_clearerr(db->dbp)
104 filter_fetch_key(db, code)
107 SV * RETVAL = &PL_sv_undef ;
109 DBM_setFilter(db->filter_fetch_key, code) ;
112 filter_store_key(db, code)
115 SV * RETVAL = &PL_sv_undef ;
117 DBM_setFilter(db->filter_store_key, code) ;
120 filter_fetch_value(db, code)
123 SV * RETVAL = &PL_sv_undef ;
125 DBM_setFilter(db->filter_fetch_value, code) ;
128 filter_store_value(db, code)
131 SV * RETVAL = &PL_sv_undef ;
133 DBM_setFilter(db->filter_store_value, code) ;