From e669f58910a4730a8860233714d437b1ee1569cd Mon Sep 17 00:00:00 2001 From: Yoni Fogel Date: Thu, 20 Dec 2007 18:59:39 +0000 Subject: [PATCH] DB->remove (with no subdb) now correctly returns error codes from unlink. Modified test_db_remove_subdb to check for this. Closes #211 git-svn-id: file:///svn/tokudb@1288 c7de825b-a66e-492c-adef-691d508d4ae1 --- src/tests/test_db_remove_subdb.c | 6 ++++++ src/ydb.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tests/test_db_remove_subdb.c b/src/tests/test_db_remove_subdb.c index fcd4cb24fe4..746e7244d5e 100644 --- a/src/tests/test_db_remove_subdb.c +++ b/src/tests/test_db_remove_subdb.c @@ -30,6 +30,12 @@ int main (int argc, char *argv[]) { // Note: without DB_INIT_MPOOL the BDB library will fail on db->open(). r=env->open(env, DIR, DB_INIT_MPOOL|DB_PRIVATE|DB_CREATE, 0777); assert(r==0); + r=db_create(&db, env, 0); assert(r==0); + r=db->remove(db, "DoesNotExist.db", NULL, 0); assert(r==ENOENT); + + r=db_create(&db, env, 0); assert(r==0); + r=db->remove(db, "DoesNotExist.db", "SubDb", 0); assert(r==ENOENT); + r=db_create(&db, env, 0); assert(r==0); r=db->open(db, NULL, "master.db", "first", DB_BTREE, DB_CREATE, 0666); CKERR(r); data.size = sizeof("first.db"); diff --git a/src/ydb.c b/src/ydb.c index b21dd7512dd..d11c8dace2e 100644 --- a/src/ydb.c +++ b/src/ydb.c @@ -1385,7 +1385,9 @@ cleanup: return r; } r2 = db->close(db, 0); - if (r == 0 && r2 == 0) r = unlink(ffull); + if (r == 0 && r2 == 0) { + if (unlink(ffull) != 0) r = errno; + } return r ? r : r2; }