summaryrefslogtreecommitdiff
path: root/ext/dbm
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-13 14:47:31 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-13 14:47:31 +0000
commit416778c5d80230183ef06a49bb58145a7480ed48 (patch)
treed503ffa5c057a8d2445f42f8d59977e326130ff2 /ext/dbm
parenta0146d1e8708eb372e415ac733066bee34e3ef36 (diff)
* ext/dbm/extconf.rb: use convertible_int.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dbm')
-rw-r--r--ext/dbm/dbm.c5
-rw-r--r--ext/dbm/extconf.rb8
2 files changed, 3 insertions, 10 deletions
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 1850b28..3409d8f 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -21,12 +21,11 @@
#include <fcntl.h>
#include <errno.h>
-#if SIZEOF_DSIZE > SIZEOF_INT
-# define DSIZE_TYPE long
+#define DSIZE_TYPE TYPEOF_DATUM_DSIZE
+#if SIZEOF_DATUM_DSIZE > SIZEOF_INT
# define RSTRING_DSIZE(s) RSTRING_LEN(s)
# define TOO_LONG(n) 0
#else
-# define DSIZE_TYPE int
# define RSTRING_DSIZE(s) RSTRING_LENINT(s)
# define TOO_LONG(n) ((long)(+(DSIZE_TYPE)(n)) != (n))
#endif
diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb
index c3ebe89..da20c56 100644
--- a/ext/dbm/extconf.rb
+++ b/ext/dbm/extconf.rb
@@ -71,12 +71,6 @@ if dblib.any? {|db| headers.fetch(db, ["ndbm.h"]).any? {|hdr| headers.db_check(d
have_header("sys/cdefs.h")
have_func("dbm_pagfno((DBM *)0)", headers.found, headers.defs)
have_func("dbm_dirfno((DBM *)0)", headers.found, headers.defs)
- type = checking_for "sizeof(datum.dsize)", STRING_OR_FAILED_FORMAT do
- pre = headers.found + [["static datum conftest_key;"]]
- %w[int long LONG_LONG].find do |t|
- try_static_assert("sizeof(conftest_key.dsize) <= sizeof(#{t})", pre, headers.defs)
- end
- end
- $defs << "-DSIZEOF_DSIZE=SIZEOF_"+type.tr_cpp if type
+ convertible_int("datum.dsize", headers.found, headers.defs)
create_makefile("dbm")
end