summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/dbm/dbm.c4
-rw-r--r--ext/dbm/extconf.rb7
2 files changed, 9 insertions, 2 deletions
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 30f0d9d504..a0022ab0f8 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -197,7 +197,7 @@ fdbm_initialize(int argc, VALUE *argv, VALUE obj)
rb_fd_fix_cloexec(dbm_dirfno(dbm));
#endif
-#if defined(_DB_H_) && defined(HAVE_TYPE_DBC)
+#if defined(RUBYDBM_DB_HEADER) && 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);
@@ -1101,7 +1101,7 @@ Init_dbm(void)
# else
rb_define_const(rb_cDBM, "VERSION", rb_str_new2("GDBM (unknown)"));
# endif
-#elif defined(_DB_H_)
+#elif defined(RUBYDBM_DB_HEADER)
# if defined(HAVE_DB_VERSION)
/* The version of the dbm library, if using Berkeley DB */
rb_define_const(rb_cDBM, "VERSION", rb_str_new2(db_version(NULL, NULL, NULL)));
diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb
index f2bf148cd6..e821690f93 100644
--- a/ext/dbm/extconf.rb
+++ b/ext/dbm/extconf.rb
@@ -152,6 +152,9 @@ def headers.db_check2(db, hdr)
# it defines _DB_H_.
have_db_header = have_macro('_DB_H_', hdr, hsearch)
+ # Mac OS X uses Berkeley DB 1 but ndbm.h doesn't include db.h.
+ have_db_header |= have_macro('DBM_SUFFIX', hdr, hsearch)
+
# Old GDBM's ndbm.h, until 1.8.3, defines dbm_clearerr as a macro which
# expands to no tokens.
have_gdbm_header1 = have_empty_macro_dbm_clearerr(hdr, hsearch)
@@ -172,6 +175,10 @@ def headers.db_check2(db, hdr)
return false
end
+ if have_db_header
+ $defs.push('-DRUBYDBM_DB_HEADER')
+ end
+
have_gdbm_header = have_gdbm_header1 | have_gdbm_header2
if have_gdbm_header
$defs.push('-DRUBYDBM_GDBM_HEADER')