From 8963f50f269f93d2ca7034cf3c6508e9df1686f6 Mon Sep 17 00:00:00 2001 From: akr Date: Tue, 21 Feb 2012 21:13:52 +0000 Subject: * ext/dbm/extconf.rb: check DBM_SUFFIX for Mac OS X. Its ndbm.h doesn't include db.h. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/dbm/dbm.c | 4 ++-- ext/dbm/extconf.rb | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'ext') 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') -- cgit v1.2.3