[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]