mirror of
https://github.com/isar/libmdbx.git
synced 2025-10-08 01:42:23 +08:00
mdbx-test: cleanup for without MDBX_NOSUBDIR case.
Change-Id: I50d6640108ca229e4919ea96469152d2533f9cab
This commit is contained in:
15
test/main.cc
15
test/main.cc
@@ -212,8 +212,23 @@ std::string thunk_param(const actor_config &config) {
|
||||
|
||||
void cleanup() {
|
||||
log_trace(">> cleanup");
|
||||
const int is_dir =
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
ERROR_ACCESS_DENIED /* Windows API is mad */;
|
||||
#else
|
||||
EISDIR;
|
||||
#endif
|
||||
for (const auto &db_path : global::databases) {
|
||||
int err = osal_removefile(db_path);
|
||||
if (err == is_dir) {
|
||||
err = osal_removefile(db_path + MDBX_LOCKNAME);
|
||||
if (err == MDBX_SUCCESS || err == MDBX_ENOFILE)
|
||||
err = osal_removefile(db_path + MDBX_DATANAME);
|
||||
if (err == MDBX_SUCCESS || err == MDBX_ENOFILE)
|
||||
err = osal_removedirectory(db_path);
|
||||
} else if (err == MDBX_SUCCESS || err == MDBX_ENOFILE)
|
||||
err = osal_removefile(db_path + MDBX_LOCK_SUFFIX);
|
||||
|
||||
if (err != MDBX_SUCCESS && err != MDBX_ENOFILE)
|
||||
failure_perror(db_path.c_str(), err);
|
||||
}
|
||||
|
@@ -535,4 +535,8 @@ int osal_removefile(const std::string &pathname) {
|
||||
return unlink(pathname.c_str()) ? errno : MDBX_SUCCESS;
|
||||
}
|
||||
|
||||
int osal_removedirectory(const std::string &pathname) {
|
||||
return rmdir(pathname.c_str()) ? errno : MDBX_SUCCESS;
|
||||
}
|
||||
|
||||
#endif /* !Windows */
|
||||
|
@@ -456,4 +456,8 @@ int osal_removefile(const std::string &pathname) {
|
||||
return DeleteFileA(pathname.c_str()) ? MDBX_SUCCESS : GetLastError();
|
||||
}
|
||||
|
||||
int osal_removedirectory(const std::string &pathname) {
|
||||
return RemoveDirectoryA(pathname.c_str()) ? MDBX_SUCCESS : GetLastError();
|
||||
}
|
||||
|
||||
#endif /* Windows */
|
||||
|
@@ -35,6 +35,7 @@ void osal_yield(void);
|
||||
bool osal_istty(int fd);
|
||||
std::string osal_tempdir(void);
|
||||
int osal_removefile(const std::string &pathname);
|
||||
int osal_removedirectory(const std::string &pathname);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#ifndef STDIN_FILENO
|
||||
|
Reference in New Issue
Block a user