ruby-changes:21674
From: akr <ko1@a...>
Date: Sat, 12 Nov 2011 16:06:28 +0900 (JST)
Subject: [ruby-changes:21674] akr:r33723 (trunk): * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm
akr 2011-11-12 16:06:09 +0900 (Sat, 12 Nov 2011) New Revision: 33723 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33723 Log: * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm implementation. If it is not available, it is caused by header/library mismatch such that Berkeley DB header & gdbm library. * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally. gdbm 1.9 provides it as a real function instead of a empty macro. Modified files: trunk/ChangeLog trunk/ext/dbm/dbm.c trunk/ext/dbm/extconf.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 33722) +++ ChangeLog (revision 33723) @@ -1,3 +1,12 @@ +Sat Nov 12 15:59:42 2011 Tanaka Akira <akr@f...> + + * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm + implementation. If it is not available, it is caused by + header/library mismatch such that Berkeley DB header & gdbm library. + + * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally. + gdbm 1.9 provides it as a real function instead of a empty macro. + Sat Nov 12 13:35:33 2011 KOSAKI Motohiro <kosaki.motohiro@g...> * bootstraptest/runner.rb: don't suppress SIGINT. Index: ext/dbm/dbm.c =================================================================== --- ext/dbm/dbm.c (revision 33722) +++ ext/dbm/dbm.c (revision 33723) @@ -639,9 +639,7 @@ GetDBM2(obj, dbmp, dbm); dbmp->di_size = -1; if (dbm_store(dbm, key, val, DBM_REPLACE)) { -#ifdef HAVE_DBM_CLEARERR dbm_clearerr(dbm); -#endif if (errno == EPERM) rb_sys_fail(0); rb_raise(rb_eDBMError, "dbm_store failed"); } Index: ext/dbm/extconf.rb =================================================================== --- ext/dbm/extconf.rb (revision 33722) +++ ext/dbm/extconf.rb (revision 33723) @@ -29,23 +29,20 @@ headers.defs = nil def headers.db_check(db) - have_gdbm = false hsearch = nil case db when /^db[2-5]?$/ hsearch = "-DDB_DBM_HSEARCH" when "gdbm" - have_gdbm = true when "gdbm_compat" - have_gdbm = true have_library("gdbm") or return false end if (hdr = self.fetch(db, ["ndbm.h"]).find {|h| have_type("DBM", h, hsearch)} or hdr = self.fetch(db, ["ndbm.h"]).find {|h| have_type("DBM", ["db.h", h], hsearch)}) and - (have_library(db, 'dbm_open("", 0, 0)', hdr, hsearch) || have_func('dbm_open("", 0, 0)', hdr, hsearch)) - have_func('dbm_clearerr((DBM *)0)', hdr, hsearch) unless have_gdbm + (have_library(db, 'dbm_open("", 0, 0)', hdr, hsearch) || have_func('dbm_open("", 0, 0)', hdr, hsearch)) and + have_func('dbm_clearerr((DBM *)0)', hdr, hsearch) if hsearch $defs << hsearch @defs = hsearch -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/