From fdc66853722fe9936f5033287efa432ca7aa6e13 Mon Sep 17 00:00:00 2001 From: mattbauer Date: Mon, 5 Jan 2009 00:00:59 -0600 Subject: [PATCH] Add get_home to Bdb::Env --- ext/bdb.c | 24 ++++++++++++++++++++++++ test/env_test.rb | 11 +++++++++++ 2 files changed, 35 insertions(+) diff --git a/ext/bdb.c b/ext/bdb.c index f927c7d..ddcb718 100644 --- a/ext/bdb.c +++ b/ext/bdb.c @@ -2584,6 +2584,29 @@ VALUE env_get_tmp_dir(VALUE obj) return rb_str_new2(tmp_dir); } +/* + * call-seq: + * env.get_home -> home + * + * get home + */ +VALUE env_get_home(VALUE obj) +{ + t_envh *eh; + const char *home; + int rv; + + Data_Get_Struct(obj,t_envh,eh); + if (!eh->env) + raise(0, "env is closed"); + rv=eh->env->get_home(eh->env,&home); + if ( rv != 0 ) { + raise_error(rv, "env_get_home: %s",db_strerror(rv)); + } + + return rb_str_new2(home); +} + static void txn_finish(t_txnh *txn) { if ( RTEST(ruby_debug) ) @@ -2838,6 +2861,7 @@ void Init_bdb() { rb_define_method(cEnv,"get_lg_dir",env_get_lg_dir,0); rb_define_method(cEnv,"set_tmp_dir",env_set_tmp_dir,1); rb_define_method(cEnv,"get_tmp_dir",env_get_tmp_dir,0); + rb_define_method(cEnv,"get_home",env_get_home,0); cTxnStat = rb_define_class_under(mBdb,"TxnStat",rb_cObject); rb_define_method(cTxnStat,"[]",stat_aref,1); diff --git a/test/env_test.rb b/test/env_test.rb index 1423e34..7ae2368 100644 --- a/test/env_test.rb +++ b/test/env_test.rb @@ -86,5 +86,16 @@ class EnvTest < Test::Unit::TestCase env.set_tmp_dir('/tmp') assert_equal '/tmp', env.get_tmp_dir end + + def test_get_home + env = Bdb::Env.new(0) + tmp_dir = File.expand_path(File.join(File.dirname(__FILE__), 'tmp')) + mkdir_p tmp_dir + env.open(tmp_dir, Bdb::DB_CREATE, 0); + assert_equal tmp_dir, env.get_home + env.close + ensure + rm_rf tmp_dir + end end