Commit | Line | Data |
---|---|---|
a0d0e21e LW |
1 | #include "EXTERN.h" |
2 | #include "perl.h" | |
3 | #include "XSUB.h" | |
4 | #include "sdbm/sdbm.h" | |
5 | ||
6 | typedef DBM* SDBM_File; | |
7 | #define sdbm_TIEHASH(dbtype,filename,flags,mode) sdbm_open(filename,flags,mode) | |
8 | #define sdbm_FETCH(db,key) sdbm_fetch(db,key) | |
9 | #define sdbm_STORE(db,key,value,flags) sdbm_store(db,key,value,flags) | |
10 | #define sdbm_DELETE(db,key) sdbm_delete(db,key) | |
11 | #define sdbm_FIRSTKEY(db) sdbm_firstkey(db) | |
12 | #define sdbm_NEXTKEY(db,key) sdbm_nextkey(db) | |
13 | ||
14 | ||
15 | MODULE = SDBM_File PACKAGE = SDBM_File PREFIX = sdbm_ | |
16 | ||
17 | SDBM_File | |
18 | sdbm_TIEHASH(dbtype, filename, flags, mode) | |
19 | char * dbtype | |
20 | char * filename | |
21 | int flags | |
22 | int mode | |
23 | ||
24 | void | |
25 | sdbm_DESTROY(db) | |
26 | SDBM_File db | |
27 | CODE: | |
28 | sdbm_close(db); | |
29 | ||
30 | datum | |
31 | sdbm_FETCH(db, key) | |
32 | SDBM_File db | |
33 | datum key | |
34 | ||
35 | int | |
36 | sdbm_STORE(db, key, value, flags = DBM_REPLACE) | |
37 | SDBM_File db | |
38 | datum key | |
39 | datum value | |
40 | int flags | |
41 | CLEANUP: | |
42 | if (RETVAL) { | |
43 | if (RETVAL < 0 && errno == EPERM) | |
44 | croak("No write permission to sdbm file"); | |
45 | warn("sdbm store returned %d, errno %d, key \"%s\"", | |
46 | RETVAL,errno,key.dptr); | |
47 | sdbm_clearerr(db); | |
48 | } | |
49 | ||
50 | int | |
51 | sdbm_DELETE(db, key) | |
52 | SDBM_File db | |
53 | datum key | |
54 | ||
55 | datum | |
56 | sdbm_FIRSTKEY(db) | |
57 | SDBM_File db | |
58 | ||
59 | datum | |
60 | sdbm_NEXTKEY(db, key) | |
61 | SDBM_File db | |
62 | datum key | |
63 | ||
64 | int | |
65 | sdbm_error(db) | |
66 | SDBM_File db | |
67 | ||
68 | int | |
69 | sdbm_clearerr(db) | |
70 | SDBM_File db | |
71 |