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;\ 128 else if (
NIL_P(vmode)) {
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);
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)) {
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_) #define RSTRING_LEN(string)
static VALUE fdbm_delete(VALUE obj, VALUE keystr)
static VALUE fdbm_length(VALUE obj)
static VALUE fdbm_s_open(int argc, VALUE *argv, VALUE klass)
static VALUE fdbm_store(VALUE, VALUE, VALUE)
#define Data_Get_Struct(obj, type, sval)
void rb_define_singleton_method(VALUE obj, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a singleton method for obj.
static VALUE fdbm_index(VALUE hash, VALUE value)
void rb_error_frozen(const char *what)
static VALUE fdbm_values(VALUE obj)
#define rb_block_call(arg1, arg2, arg3, arg4, arg5, arg6)
VALUE rb_ary_push(VALUE ary, VALUE item)
static VALUE fdbm_replace(VALUE obj, VALUE other)
VALUE rb_protect(VALUE(*proc)(VALUE), VALUE data, int *state)
#define RSTRING_PTR(string)
void rb_raise(VALUE exc, const char *fmt,...)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
#define RARRAY_LEN(ARRAY)
#define GetDBM2(obj, data, dbm)
void rb_include_module(VALUE klass, VALUE module)
static VALUE fdbm_has_key(VALUE obj, VALUE keystr)
static void free_dbm(struct dbmdata *dbmp)
static VALUE fdbm_values_at(int argc, VALUE *argv, VALUE obj)
#define Data_Wrap_Struct(klass, mark, free, sval)
static VALUE fdbm_empty_p(VALUE obj)
static VALUE fdbm_reject(VALUE obj)
int rb_block_given_p(void)
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
RUBY_EXTERN VALUE rb_cObject
static VALUE fdbm_aref(VALUE obj, VALUE keystr)
static VALUE fdbm_to_a(VALUE obj)
static VALUE fdbm_select(VALUE obj)
VALUE rb_obj_as_string(VALUE)
static VALUE fdbm_close(VALUE obj)
static void fdbm_modify(VALUE obj)
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
void rb_define_const(VALUE, const char *, VALUE)
static VALUE fdbm_shift(VALUE obj)
static VALUE fdbm_each_key(VALUE obj)
static VALUE fdbm_clear(VALUE obj)
VALUE rb_sprintf(const char *format,...)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
VALUE rb_assoc_new(VALUE car, VALUE cdr)
static VALUE fdbm_to_hash(VALUE obj)
#define RARRAY_PTR(ARRAY)
VALUE rb_ensure(VALUE(*b_proc)(ANYARGS), VALUE data1, VALUE(*e_proc)(ANYARGS), VALUE data2)
int memcmp(const void *s1, const void *s2, size_t len)
void rb_sys_fail(const char *mesg)
void rb_jump_tag(int tag)
static VALUE rb_eDBMError
static VALUE fdbm_alloc(VALUE klass)
static VALUE fdbm_fetch(VALUE obj, VALUE keystr, VALUE ifnone)
#define ExportStringValue(v)
static VALUE fdbm_initialize(int argc, VALUE *argv, VALUE obj)
static VALUE update_i(VALUE pair, VALUE dbm)
static VALUE fdbm_closed(VALUE obj)
static VALUE fdbm_each_value(VALUE obj)
static VALUE fdbm_keys(VALUE obj)
static VALUE fdbm_update(VALUE obj, VALUE other)
static VALUE fdbm_invert(VALUE obj)
static unsigned int hash(const char *str, unsigned int len)
#define RETURN_ENUMERATOR(obj, argc, argv)
VALUE rb_ary_new2(long capa)
static VALUE fdbm_has_value(VALUE obj, VALUE valstr)
static void closed_dbm(void)
#define GetDBM(obj, dbmp)
VALUE rb_hash_delete_if(VALUE hash)
VALUE rb_tainted_str_new(const char *, long)
static VALUE fdbm_key(VALUE obj, VALUE valstr)
static VALUE fdbm_delete_if(VALUE obj)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
VALUE rb_str_new2(const char *)
void rb_warn(const char *fmt,...)
static VALUE fdbm_each_pair(VALUE obj)
static VALUE fdbm_fetch_m(int argc, VALUE *argv, VALUE obj)