From f3cdb7545b85a2c849ad4acf4dfbf1aaf526de6b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 28 Sep 2012 13:13:05 +0000 Subject: database created by dbx_mmap_sa must be opened by it git-svn-id: http://svn.miranda-ng.org/main/trunk@1714 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Db3x/src/commonheaders.h | 1 + plugins/Db3x/src/init.cpp | 2 +- plugins/Db3x_mmap/src/commonheaders.h | 1 + plugins/Db3x_mmap/src/dbheaders.cpp | 22 +++++++++------------- plugins/Db3x_mmap/src/dbintf.h | 2 +- plugins/Db3x_mmap/src/init.cpp | 2 +- plugins/Dbx_mmap_SA/src/commonheaders.h | 2 +- plugins/Dbx_mmap_SA/src/dbintf_sa.cpp | 3 +++ plugins/Dbx_mmap_SA/src/init.cpp | 2 +- plugins/Dbx_mmap_SA/src/security.cpp | 2 +- 10 files changed, 20 insertions(+), 19 deletions(-) diff --git a/plugins/Db3x/src/commonheaders.h b/plugins/Db3x/src/commonheaders.h index e12db161bc..4222389e4d 100644 --- a/plugins/Db3x/src/commonheaders.h +++ b/plugins/Db3x/src/commonheaders.h @@ -64,3 +64,4 @@ void Encrypt(char*msg,BOOL up); #endif extern LIST g_Dbs; +extern DBSignature dbSignature; \ No newline at end of file diff --git a/plugins/Db3x/src/init.cpp b/plugins/Db3x/src/init.cpp index 513731b824..7831613ef5 100644 --- a/plugins/Db3x/src/init.cpp +++ b/plugins/Db3x/src/init.cpp @@ -52,7 +52,7 @@ static int makeDatabase(const TCHAR *profile) if (db->Create() != ERROR_SUCCESS) return EMKPRF_CREATEFAILED; - return db->CreateDbHeaders(); + return db->CreateDbHeaders(dbSignature); } // returns 0 if the given profile has a valid header diff --git a/plugins/Db3x_mmap/src/commonheaders.h b/plugins/Db3x_mmap/src/commonheaders.h index a0ad519e4d..72b0b265d9 100644 --- a/plugins/Db3x_mmap/src/commonheaders.h +++ b/plugins/Db3x_mmap/src/commonheaders.h @@ -55,6 +55,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "version.h" extern LIST g_Dbs; +extern DBSignature dbSignature; #ifdef __GNUC__ #define mir_i64(x) (x##LL) diff --git a/plugins/Db3x_mmap/src/dbheaders.cpp b/plugins/Db3x_mmap/src/dbheaders.cpp index 68e7da15e1..e2afc03658 100644 --- a/plugins/Db3x_mmap/src/dbheaders.cpp +++ b/plugins/Db3x_mmap/src/dbheaders.cpp @@ -25,14 +25,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. //the cache has not been loaded when these functions are used -extern DBSignature dbSignature; - -int CDb3Base::CreateDbHeaders() +int CDb3Base::CreateDbHeaders(const DBSignature& _sign) { - DBContact user; DWORD bytesWritten; - CopyMemory(m_dbHeader.signature, &dbSignature,sizeof(m_dbHeader.signature)); + CopyMemory(m_dbHeader.signature, &_sign, sizeof(m_dbHeader.signature)); + m_dbHeader.version = DB_THIS_VERSION; m_dbHeader.ofsFileEnd = sizeof(struct DBHeader); m_dbHeader.slackSpace = 0; @@ -43,15 +41,13 @@ int CDb3Base::CreateDbHeaders() //create user m_dbHeader.ofsUser = m_dbHeader.ofsFileEnd; m_dbHeader.ofsFileEnd += sizeof(DBContact); - SetFilePointer(m_hDbFile,0,NULL,FILE_BEGIN); - WriteFile(m_hDbFile,&m_dbHeader,sizeof(m_dbHeader),&bytesWritten,NULL); + SetFilePointer(m_hDbFile, 0, NULL, FILE_BEGIN); + WriteFile(m_hDbFile, &m_dbHeader, sizeof(m_dbHeader), &bytesWritten,NULL); + + DBContact user = { 0 }; user.signature = DBCONTACT_SIGNATURE; - user.ofsNext = 0; - user.ofsFirstSettings = 0; - user.eventCount = 0; - user.ofsFirstEvent = user.ofsLastEvent = 0; - SetFilePointer(m_hDbFile,m_dbHeader.ofsUser,NULL,FILE_BEGIN); - WriteFile(m_hDbFile,&user,sizeof(DBContact),&bytesWritten,NULL); + SetFilePointer(m_hDbFile, m_dbHeader.ofsUser, NULL, FILE_BEGIN); + WriteFile(m_hDbFile, &user, sizeof(DBContact), &bytesWritten, NULL); FlushFileBuffers(m_hDbFile); return 0; } diff --git a/plugins/Db3x_mmap/src/dbintf.h b/plugins/Db3x_mmap/src/dbintf.h index 3a744427a8..d5bef059ef 100644 --- a/plugins/Db3x_mmap/src/dbintf.h +++ b/plugins/Db3x_mmap/src/dbintf.h @@ -166,7 +166,7 @@ struct CDb3Base : public MIDatabase, public MIDatabaseChecker, public MZeroedObj int Load(bool bSkipInit); int Create(void); - int CreateDbHeaders(); + int CreateDbHeaders(const DBSignature&); int CheckDbHeaders(); void DatabaseCorruption(TCHAR *text); diff --git a/plugins/Db3x_mmap/src/init.cpp b/plugins/Db3x_mmap/src/init.cpp index 2e2490dc66..bb76ccd3a8 100644 --- a/plugins/Db3x_mmap/src/init.cpp +++ b/plugins/Db3x_mmap/src/init.cpp @@ -52,7 +52,7 @@ static int makeDatabase(const TCHAR *profile) if (db->Create() != ERROR_SUCCESS) return EMKPRF_CREATEFAILED; - return db->CreateDbHeaders(); + return db->CreateDbHeaders(dbSignature); } // returns 0 if the given profile has a valid header diff --git a/plugins/Dbx_mmap_SA/src/commonheaders.h b/plugins/Dbx_mmap_SA/src/commonheaders.h index 710172c241..6f4aa0b4b3 100644 --- a/plugins/Dbx_mmap_SA/src/commonheaders.h +++ b/plugins/Dbx_mmap_SA/src/commonheaders.h @@ -86,7 +86,7 @@ INT_PTR CALLBACK DlgStdNewPass(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam) INT_PTR CALLBACK DlgChangePass(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam); void xModifyMenu(HANDLE hMenu,long flags,const TCHAR* name, HICON hIcon); -extern DBSignature dbSignature, dbSignatureSecured; +extern DBSignature dbSignature, dbSignatureSecured, dbSignatureNonSecured; extern LIST g_Dbs; diff --git a/plugins/Dbx_mmap_SA/src/dbintf_sa.cpp b/plugins/Dbx_mmap_SA/src/dbintf_sa.cpp index f3c68881a5..b7dec7c908 100644 --- a/plugins/Dbx_mmap_SA/src/dbintf_sa.cpp +++ b/plugins/Dbx_mmap_SA/src/dbintf_sa.cpp @@ -32,6 +32,7 @@ extern CDdxMmapSA* g_Db; int InitDialogs(void); DBSignature dbSignatureSecured = {"Miranda ICQ SD",0x1A}; +DBSignature dbSignatureNonSecured = {"Miranda ICQ SA",0x1A}; CDdxMmapSA::CDdxMmapSA(const TCHAR* tszFileName) : CDb3Mmap(tszFileName) @@ -65,6 +66,8 @@ int CDdxMmapSA::CheckDbHeaders() { if ( memcmp(m_dbHeader.signature, &dbSignatureSecured, sizeof(m_dbHeader.signature)) == 0) m_bEncoding = true; + else if ( memcmp(m_dbHeader.signature, &dbSignatureNonSecured, sizeof(m_dbHeader.signature)) == 0) + m_bEncoding = false; else { m_bEncoding = false; if ( memcmp(m_dbHeader.signature,&dbSignature,sizeof(m_dbHeader.signature))) diff --git a/plugins/Dbx_mmap_SA/src/init.cpp b/plugins/Dbx_mmap_SA/src/init.cpp index cea82f5c79..77bf5dc953 100644 --- a/plugins/Dbx_mmap_SA/src/init.cpp +++ b/plugins/Dbx_mmap_SA/src/init.cpp @@ -53,7 +53,7 @@ static int makeDatabase(const TCHAR *profile) { std::auto_ptr db( new CDdxMmapSA(profile)); if (db->Create() == ERROR_SUCCESS) { - db->CreateDbHeaders(); + db->CreateDbHeaders(dbSignatureNonSecured); return 0; } diff --git a/plugins/Dbx_mmap_SA/src/security.cpp b/plugins/Dbx_mmap_SA/src/security.cpp index 8731e86f81..260ab11727 100644 --- a/plugins/Dbx_mmap_SA/src/security.cpp +++ b/plugins/Dbx_mmap_SA/src/security.cpp @@ -233,7 +233,7 @@ void CDdxMmapSA::WritePlainHeader() { DWORD bytesWritten; - memcpy(m_dbHeader.signature, &dbSignature, sizeof(m_dbHeader.signature)); + memcpy(m_dbHeader.signature, &dbSignatureNonSecured, sizeof(m_dbHeader.signature)); SetFilePointer(m_hDbFile,0,NULL,FILE_BEGIN); WriteFile(m_hDbFile,m_dbHeader.signature,sizeof(m_dbHeader.signature),&bytesWritten,NULL); -- cgit v1.2.3