diff options
-rw-r--r-- | plugins/Dbx_mdbx/src/dbintf.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/plugins/Dbx_mdbx/src/dbintf.cpp b/plugins/Dbx_mdbx/src/dbintf.cpp index 4247806e0a..5f8eaa4398 100644 --- a/plugins/Dbx_mdbx/src/dbintf.cpp +++ b/plugins/Dbx_mdbx/src/dbintf.cpp @@ -23,6 +23,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h"
+/////////////////////////////////////////////////////////////////////////////////////////
+// constructor & destructor
+
CDbxMDBX::CDbxMDBX(const TCHAR *tszFileName, int iMode) :
m_safetyMode(true),
m_bReadOnly((iMode & DBMODE_READONLY) != 0),
@@ -35,11 +38,6 @@ CDbxMDBX::CDbxMDBX(const TCHAR *tszFileName, int iMode) : m_hwndTimer = CreateWindowExW(0, L"STATIC", nullptr, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, nullptr, g_plugin.getInst(), nullptr);
::SetWindowLongPtr(m_hwndTimer, GWLP_USERDATA, (LONG_PTR)this);
}
-
- mdbx_env_create(&m_env);
- mdbx_env_set_maxdbs(m_env, 10);
- mdbx_env_set_maxreaders(m_env, 244);
- mdbx_env_set_userctx(m_env, this);
}
CDbxMDBX::~CDbxMDBX()
@@ -71,6 +69,8 @@ CDbxMDBX::~CDbxMDBX() mir_free(m_tszProfileName);
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
int CDbxMDBX::Load()
{
TouchFile();
@@ -149,6 +149,8 @@ int CDbxMDBX::Load() return EGROKPRF_NOERROR;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
size_t iDefHeaderOffset = 0;
BYTE bDefHeader[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 };
@@ -168,6 +170,8 @@ int CDbxMDBX::Check(void) return (memcmp(buf, bDefHeader, _countof(bDefHeader))) ? EGROKPRF_UNKHEADER : 0;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
BOOL CDbxMDBX::Compact()
{
CMStringW wszTmpFile(FORMAT, L"%s.tmp", m_tszProfileName);
@@ -188,11 +192,6 @@ BOOL CDbxMDBX::Compact() DeleteFileW(m_tszProfileName);
MoveFileW(wszTmpFile, m_tszProfileName);
- mdbx_env_create(&m_env);
- mdbx_env_set_maxdbs(m_env, 10);
- mdbx_env_set_maxreaders(m_env, 244);
- mdbx_env_set_userctx(m_env, this);
-
Map();
Load();
}
@@ -201,23 +200,34 @@ BOOL CDbxMDBX::Compact() return 0;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
int CDbxMDBX::PrepareCheck()
{
InitModules();
return InitCrypt();
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
STDMETHODIMP_(void) CDbxMDBX::SetCacheSafetyMode(BOOL bIsSet)
{
m_safetyMode = bIsSet != 0;
DBFlush(true);
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
int CDbxMDBX::Map()
{
if (!LockName(m_tszProfileName))
return EGROKPRF_CANTREAD;
+ mdbx_env_create(&m_env);
+ mdbx_env_set_maxdbs(m_env, 10);
+ mdbx_env_set_maxreaders(m_env, 244);
+ mdbx_env_set_userctx(m_env, this);
+
#ifdef _WIN64
__int64 upperLimit = 0x400000000ul;
#else
|