diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-02-21 21:04:04 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-02-21 21:04:04 +0000 |
commit | eac1d9cfcad5d2d56951e540eb7023eccf7a3593 (patch) | |
tree | 3b35155577e76e5b82b25410f5e11bb0c9a79f0c /ext/dbm | |
parent | ca9b0f56fc25a2b98c0646014f5fb352319e8070 (diff) | |
download | ruby-eac1d9cfcad5d2d56951e540eb7023eccf7a3593.tar.gz |
* ext/dbm/dbm.c (fdbm_initialize): disable Berkeley DB error messages.
* ext/dbm/extconf.rb: check DBC type for above.
[ruby-dev:45269]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dbm')
-rw-r--r-- | ext/dbm/dbm.c | 6 | ||||
-rw-r--r-- | ext/dbm/extconf.rb | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index d6d1f4959a..30f0d9d504 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -196,6 +196,12 @@ fdbm_initialize(int argc, VALUE *argv, VALUE obj) #if defined(HAVE_DBM_DIRFNO) rb_fd_fix_cloexec(dbm_dirfno(dbm)); #endif + +#if defined(_DB_H_) && defined(HAVE_TYPE_DBC) + /* Disable Berkeley DB error messages such as: + * DB->put: attempt to modify a read-only database */ + ((DBC*)dbm)->dbp->set_errfile(((DBC*)dbm)->dbp, NULL); +#endif } if (!dbm) { diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb index 751fb40dd0..f2bf148cd6 100644 --- a/ext/dbm/extconf.rb +++ b/ext/dbm/extconf.rb @@ -222,6 +222,11 @@ def headers.db_check2(db, hdr) return false end + # DBC type is required to disable error messages by Berkeley DB 2 or later. + if have_db_header + have_type("DBC", hdr, hsearch) + end + if hsearch $defs << hsearch @defs = hsearch |