17 #ifdef HAVE_SYS_CDEFS_H
18 # include <sys/cdefs.h>
26 #define RUBY_DBM_RW_BIT 0x20000000
39 #define GetDBM(obj, dbmp) {\
40 Data_Get_Struct((obj), struct dbmdata, (dbmp));\
41 if ((dbmp) == 0) closed_dbm();\
42 if ((dbmp)->di_dbm == 0) closed_dbm();\
45 #define GetDBM2(obj, data, dbm) {\
46 GetDBM((obj), (data));\
47 (dbm) = dbmp->di_dbm;\
125 if (
rb_scan_args(argc, argv,
"12", &file, &vmode, &vflags) == 1) {
128 else if (
NIL_P(vmode)) {
141 flags &= ~RUBY_DBM_RW_BIT;
147 dbm = dbm_open(
RSTRING_PTR(file), O_RDWR|O_CREAT, mode);
158 if (mode == -1)
return Qnil;
206 value = dbm_fetch(dbm, key);
207 if (value.
dptr == 0) {
239 VALUE keystr, valstr, ifnone;
267 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
268 val = dbm_fetch(dbm, key);
281 rb_warn(
"DBM#index is deprecated; use DBM#key");
301 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
303 val = dbm_fetch(dbm, key);
328 for (i=0; i<
argc; i++) {
363 value = dbm_fetch(dbm, key);
364 if (value.
dptr == 0) {
372 if (dbm_delete(dbm, key)) {
396 VALUE keystr, valstr;
402 key = dbm_firstkey(dbm);
404 val = dbm_fetch(dbm, key);
407 dbm_delete(dbm, key);
426 VALUE keystr, valstr;
436 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
437 val = dbm_fetch(dbm, key);
441 if (status != 0)
break;
451 if (dbm_delete(dbm, key)) {
477 while (key = dbm_firstkey(dbm), key.
dptr) {
478 if (dbm_delete(dbm, key)) {
500 VALUE keystr, valstr;
504 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
505 val = dbm_fetch(dbm, key);
585 #ifdef HAVE_DBM_CLEARERR
612 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
638 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
645 if (i == 0)
return Qtrue;
665 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
666 val = dbm_fetch(dbm, key);
689 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
709 VALUE keystr, valstr;
715 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
716 val = dbm_fetch(dbm, key);
743 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
766 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
767 val = dbm_fetch(dbm, key);
792 val = dbm_fetch(dbm, key);
816 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
817 val = dbm_fetch(dbm, key);
842 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
843 val = dbm_fetch(dbm, key);
868 for (key = dbm_firstkey(dbm); key.
dptr; key = dbm_nextkey(dbm)) {
869 val = dbm_fetch(dbm, key);
1022 #if defined(HAVE_DB_VERSION)
1025 #elif defined(HAVE_GDBM_VERSION)
1028 #elif defined(HAVE_LIBVAR_GDBM_VERSION)
1035 #elif defined(HAVE_DPVERSION)
1037 #elif defined(_DB_H_)