summaryrefslogtreecommitdiff
path: root/plugins/Db3x_mmap
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Db3x_mmap')
-rw-r--r--plugins/Db3x_mmap/src/dbintf.cpp17
-rw-r--r--plugins/Db3x_mmap/src/dbintfm.cpp6
-rw-r--r--plugins/Db3x_mmap/src/dbtool/finaltasks.cpp12
-rw-r--r--plugins/Db3x_mmap/src/dbtool/initialchecks.cpp8
-rw-r--r--plugins/Db3x_mmap/src/init.cpp4
5 files changed, 14 insertions, 33 deletions
diff --git a/plugins/Db3x_mmap/src/dbintf.cpp b/plugins/Db3x_mmap/src/dbintf.cpp
index 0efc944518..549f32d357 100644
--- a/plugins/Db3x_mmap/src/dbintf.cpp
+++ b/plugins/Db3x_mmap/src/dbintf.cpp
@@ -127,13 +127,16 @@ int CDb3Base::Load(bool bSkipInit)
m_bReadOnly = false;
- hContactDeletedEvent = CreateHookableEvent(ME_DB_CONTACT_DELETED);
- hContactAddedEvent = CreateHookableEvent(ME_DB_CONTACT_ADDED);
- hSettingChangeEvent = CreateHookableEvent(ME_DB_CONTACT_SETTINGCHANGED);
-
- hEventAddedEvent = CreateHookableEvent(ME_DB_EVENT_ADDED);
- hEventDeletedEvent = CreateHookableEvent(ME_DB_EVENT_DELETED);
- hEventFilterAddedEvent = CreateHookableEvent(ME_DB_EVENT_FILTER_ADD);
+ // we don't need events in the service mode
+ if (ServiceExists(MS_DB_SETSAFETYMODE)) {
+ hContactDeletedEvent = CreateHookableEvent(ME_DB_CONTACT_DELETED);
+ hContactAddedEvent = CreateHookableEvent(ME_DB_CONTACT_ADDED);
+ hSettingChangeEvent = CreateHookableEvent(ME_DB_CONTACT_SETTINGCHANGED);
+
+ hEventAddedEvent = CreateHookableEvent(ME_DB_EVENT_ADDED);
+ hEventDeletedEvent = CreateHookableEvent(ME_DB_EVENT_DELETED);
+ hEventFilterAddedEvent = CreateHookableEvent(ME_DB_EVENT_FILTER_ADD);
+ }
}
return 0;
}
diff --git a/plugins/Db3x_mmap/src/dbintfm.cpp b/plugins/Db3x_mmap/src/dbintfm.cpp
index 15c52654ac..d917ef300d 100644
--- a/plugins/Db3x_mmap/src/dbintfm.cpp
+++ b/plugins/Db3x_mmap/src/dbintfm.cpp
@@ -39,10 +39,8 @@ CDb3Mmap::~CDb3Mmap()
int CDb3Mmap::Load(bool bSkipInit)
{
int res = CDb3Base::Load(bSkipInit);
- if (!res) {
- if (!bSkipInit)
- if (InitCrypt()) return 1;
- }
+ if (!res && !bSkipInit)
+ if (InitCrypt()) return 1;
return res;
}
diff --git a/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp b/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp
index a7f9c8ef46..dc1e05463c 100644
--- a/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp
+++ b/plugins/Db3x_mmap/src/dbtool/finaltasks.cpp
@@ -27,17 +27,5 @@ int CDb3Base::WorkFinalTasks(int firstTime)
if (WriteSegment(0, &m_dbHeader, sizeof(m_dbHeader)) == WS_ERROR)
return ERROR_WRITE_FAULT;
- if (m_hDbFile) {
- CloseHandle(m_hDbFile);
- m_hDbFile = NULL;
- }
- if (m_pDbCache) {
- UnmapViewOfFile(m_pDbCache);
- m_pDbCache = NULL;
- }
- if (m_hMap) {
- CloseHandle(m_hMap);
- m_hMap = NULL;
- }
return ERROR_NO_MORE_ITEMS;
}
diff --git a/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp b/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp
index 2d9dfae04c..4501162263 100644
--- a/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp
+++ b/plugins/Db3x_mmap/src/dbtool/initialchecks.cpp
@@ -48,14 +48,6 @@ int CDb3Base::WorkInitialChecks(int firstTime)
if (res)
return res;
- m_hMap = CreateFileMapping(m_hDbFile, NULL, cb->bAggressive ? PAGE_WRITECOPY : PAGE_READONLY, 0, 0, NULL);
- if (m_hMap)
- m_pDbCache = (BYTE*)MapViewOfFile(m_hMap, cb->bAggressive ? FILE_MAP_COPY : FILE_MAP_READ, 0, 0, 0);
- else {
- cb->pfnAddLogMessage(STATUS_FATAL, TranslateT("Can't create file mapping (%u)"), GetLastError());
- return ERROR_ACCESS_DENIED;
- }
-
if (!m_pDbCache) {
cb->pfnAddLogMessage(STATUS_FATAL, TranslateT("Can't create map view of file (%u)"), GetLastError());
return ERROR_ACCESS_DENIED;
diff --git a/plugins/Db3x_mmap/src/init.cpp b/plugins/Db3x_mmap/src/init.cpp
index 461b64be1d..4938ae9cba 100644
--- a/plugins/Db3x_mmap/src/init.cpp
+++ b/plugins/Db3x_mmap/src/init.cpp
@@ -89,8 +89,8 @@ static int UnloadDatabase(MIDatabase* db)
MIDatabaseChecker* CheckDb(const TCHAR* profile, int *error)
{
- std::auto_ptr<CDb3Mmap> db( new CDb3Mmap(profile));
- if (db->Load(true) != ERROR_SUCCESS) {
+ std::auto_ptr<CDb3Mmap> db(new CDb3Mmap(profile));
+ if (db->Load(false) != ERROR_SUCCESS) {
*error = EGROKPRF_CANTREAD;
return NULL;
}