summaryrefslogtreecommitdiff
path: root/plugins/db3x_mmap
diff options
context:
space:
mode:
authorKirill Volinsky <mataes2007@gmail.com>2012-05-18 22:02:50 +0000
committerKirill Volinsky <mataes2007@gmail.com>2012-05-18 22:02:50 +0000
commitf920ef497f3299ae24fe783ce03bdd93b419f764 (patch)
treebdaa9197c08d29ab141a6adfdd6cc0a68ddd3996 /plugins/db3x_mmap
parent6c3b0571f0678da0512069869afaa284c054377e (diff)
plugins folders renaming
git-svn-id: http://svn.miranda-ng.org/main/trunk@60 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/db3x_mmap')
-rw-r--r--plugins/db3x_mmap/Makefile53
-rw-r--r--plugins/db3x_mmap/commonheaders.c1
-rw-r--r--plugins/db3x_mmap/commonheaders.h70
-rw-r--r--plugins/db3x_mmap/database.c198
-rw-r--r--plugins/db3x_mmap/database.h221
-rw-r--r--plugins/db3x_mmap/db3x_mmap.rc174
-rw-r--r--plugins/db3x_mmap/db3x_mmap_10.vcxproj295
-rw-r--r--plugins/db3x_mmap/db3x_mmap_10.vcxproj.filters65
-rw-r--r--plugins/db3x_mmap/dbcache.c206
-rw-r--r--plugins/db3x_mmap/dbcontacts.c299
-rw-r--r--plugins/db3x_mmap/dbevents.c449
-rw-r--r--plugins/db3x_mmap/dbheaders.c68
-rw-r--r--plugins/db3x_mmap/dbmodulechain.c192
-rw-r--r--plugins/db3x_mmap/dbsettings.c1013
-rw-r--r--plugins/db3x_mmap/encrypt.c66
-rw-r--r--plugins/db3x_mmap/encryption.h23
-rw-r--r--plugins/db3x_mmap/init.c200
-rw-r--r--plugins/db3x_mmap/resource.h30
-rw-r--r--plugins/db3x_mmap/resource.rc2
-rw-r--r--plugins/db3x_mmap/version.h5
-rw-r--r--plugins/db3x_mmap/version.rc39
21 files changed, 0 insertions, 3669 deletions
diff --git a/plugins/db3x_mmap/Makefile b/plugins/db3x_mmap/Makefile
deleted file mode 100644
index 5a7563001f..0000000000
--- a/plugins/db3x_mmap/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-SRC = commonheaders.c \
- database.c \
- dbcache.c \
- dbcontacts.c \
- dbevents.c \
- dbheaders.c \
- dbini.c \
- dblists.c \
- dbmodulechain.c \
- dbsettings.c \
- dbtime.c \
- encrypt.c \
- init.c
-OBJ = $(SRC:.c=.o)
-RES = resource.res
-LIB = -lgdi32 -lversion -lcomctl32 -lcomdlg32 -lole32
-
-CC = gcc
-RC = windres
-RM = rm
-
-# Install location
-ifdef DEBUG
-BIN = ..\..\bin\debug\plugins\dbx_3x.dll
-else
-BIN = ..\..\bin\release\plugins\dbx_3x.dll
-endif
-
-# Defines
-DEFINES = -DWIN32 -D__SEH_NOOP
-ifdef DEBUG
-DEFINES := $(DEFINES) -D_DEBUG
-endif
-
-# Flags
-LFLAGS = -shared
-RCFLAGS = --input-format rc --output-format coff
-ifdef DEBUG
-CFLAGS = -g $(DEFINES) -I../../include
-else
-CFLAGS = -O1 $(DEFINES) -I../../include
-endif
-
-# Targets
-all : $(OBJ) $(RES)
- $(CC) $(LFLAGS) $(CFLAGS) -o $(BIN) $(OBJ) $(RES) $(LIB) -Wl
-
-$(RES) : $(RES:.res=.rc) $(RES:.res=.h) Makefile
- $(RC) $(RCFLAGS) -o $(RES) -i $(RES:.res=.rc)
-
-clean :
- $(RM) -f $(OBJ) $(RES)
-
diff --git a/plugins/db3x_mmap/commonheaders.c b/plugins/db3x_mmap/commonheaders.c
deleted file mode 100644
index 14f99f7d71..0000000000
--- a/plugins/db3x_mmap/commonheaders.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "commonheaders.h"
diff --git a/plugins/db3x_mmap/commonheaders.h b/plugins/db3x_mmap/commonheaders.h
deleted file mode 100644
index 726e69bf1f..0000000000
--- a/plugins/db3x_mmap/commonheaders.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#define MIRANDA_VER 0x0A00
-
-#define _WIN32_WINNT 0x0501
-
-#include "m_stdhdr.h"
-
-#include <windows.h>
-#include <commctrl.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <stddef.h>
-#include <process.h>
-#include <io.h>
-#include <string.h>
-#include <direct.h>
-#ifndef __GNUC__
-#include <crtdbg.h>
-#endif
-#include "resource.h"
-#include "version.h"
-#include <newpluginapi.h>
-#include <win2k.h>
-#include <m_plugins.h>
-#include <m_system.h>
-#include <m_database.h>
-#include <m_langpack.h>
-#include <m_utils.h>
-
-#include "database.h"
-
-extern PLUGINLINK *pluginLink;
-
-extern struct MM_INTERFACE memoryManagerInterface;
-extern struct LIST_INTERFACE li;
-
-extern CRITICAL_SECTION csDbAccess;
-extern struct DBHeader dbHeader;
-extern HANDLE hDbFile;
-
-#ifdef __GNUC__
-#define mir_i64(x) (x##LL)
-#else
-#define mir_i64(x) (x##i64)
-#endif
-
-#define NEWSTR_ALLOCA(A) (A==NULL)?NULL:strcpy((char*)alloca(strlen(A)+1),A)
diff --git a/plugins/db3x_mmap/database.c b/plugins/db3x_mmap/database.c
deleted file mode 100644
index b3bd3e70a0..0000000000
--- a/plugins/db3x_mmap/database.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-#include "commonheaders.h"
-
-int ProfileManager(char *szDbDest,int cbDbDest);
-int ShouldAutoCreate(void);
-int CreateDbHeaders(HANDLE hFile);
-int InitialiseDbHeaders(void);
-int InitSettings(void);
-void UninitSettings(void);
-int InitContacts(void);
-void UninitContacts(void);
-int InitEvents(void);
-void UninitEvents(void);
-int InitCrypt(void);
-int InitModuleNames(void);
-void UninitModuleNames(void);
-int InitCache(void);
-void UninitCache(void);
-int InitIni(void);
-void UninitIni(void);
-
-HANDLE hDbFile=INVALID_HANDLE_VALUE;
-CRITICAL_SECTION csDbAccess;
-struct DBHeader dbHeader;
-char szDbPath[MAX_PATH];
-
-static void UnloadDatabase(void)
-{
- // update profile last modified time
- DWORD bytesWritten;
- SetFilePointer(hDbFile,0,NULL,FILE_BEGIN);
- WriteFile(hDbFile,&dbSignature,1,&bytesWritten,NULL);
-
- CloseHandle(hDbFile);
-}
-
-DWORD CreateNewSpace(int bytes)
-{
- DWORD ofsNew;
- ofsNew=dbHeader.ofsFileEnd;
- dbHeader.ofsFileEnd+=bytes;
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- log2("newspace %d@%08x",bytes,ofsNew);
- return ofsNew;
-}
-
-void DeleteSpace(DWORD ofs,int bytes)
-{
- if (ofs+bytes == dbHeader.ofsFileEnd) {
- log2("freespace %d@%08x",bytes,ofs);
- dbHeader.ofsFileEnd=ofs;
- } else {
- log2("deletespace %d@%08x",bytes,ofs);
- dbHeader.slackSpace+=bytes;
- }
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- DBFill(ofs,bytes);
-}
-
-DWORD ReallocSpace(DWORD ofs,int oldSize,int newSize)
-{
- DWORD ofsNew;
-
- if (oldSize >= newSize) return ofs;
-
- if (ofs+oldSize == dbHeader.ofsFileEnd) {
- ofsNew = ofs;
- dbHeader.ofsFileEnd+=newSize-oldSize;
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- log3("adding newspace %d@%08x+%d",newSize,ofsNew,oldSize);
- } else {
- ofsNew=CreateNewSpace(newSize);
- DBMoveChunk(ofsNew,ofs,oldSize);
- DeleteSpace(ofs,oldSize);
- }
- return ofsNew;
-}
-
-void UnloadDatabaseModule(void)
-{
- //UninitIni();
- UninitEvents();
- UninitSettings();
- UninitContacts();
- UninitModuleNames();
- UninitCache();
- UnloadDatabase();
- DeleteCriticalSection(&csDbAccess);
-}
-
-int LoadDatabaseModule(void)
-{
- InitializeCriticalSection(&csDbAccess);
- log0("DB logging running");
- {
- DWORD dummy=0;
- hDbFile=CreateFileA(szDbPath,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL);
- if ( hDbFile == INVALID_HANDLE_VALUE ) {
- return 1;
- }
- if ( !ReadFile(hDbFile,&dbHeader,sizeof(dbHeader),&dummy,NULL) ) {
- CloseHandle(hDbFile);
- return 1;
- }
- }
- //if(ParseCommandLine()) return 1;
- if(InitCache()) return 1;
- if(InitModuleNames()) return 1;
- if(InitContacts()) return 1;
- if(InitSettings()) return 1;
- if(InitEvents()) return 1;
- if(InitCrypt()) return 1;
- return 0;
-}
-
-static DWORD DatabaseCorrupted=0;
-static TCHAR *msg = NULL;
-static DWORD dwErr = 0;
-
-void __cdecl dbpanic(void *arg)
-{
- if (msg)
- {
- TCHAR err[256];
-
- if (dwErr==ERROR_DISK_FULL)
- msg = TranslateT("Disk is full. Miranda will now shutdown.");
-
- mir_sntprintf(err, SIZEOF(err), msg, TranslateT("Database failure. Miranda will now shutdown."), dwErr);
-
- MessageBox(0,err,TranslateT("Database Error"),MB_SETFOREGROUND|MB_TOPMOST|MB_APPLMODAL|MB_ICONWARNING|MB_OK);
- }
- else
- MessageBox(0,TranslateT("Miranda has detected corruption in your database. This corruption maybe fixed by DBTool. Please download it from http://www.miranda-im.org. Miranda will now shutdown."),
- TranslateT("Database Panic"),MB_SETFOREGROUND|MB_TOPMOST|MB_APPLMODAL|MB_ICONWARNING|MB_OK);
- TerminateProcess(GetCurrentProcess(),255);
-}
-
-void DatabaseCorruption(TCHAR *text)
-{
- int kill=0;
-
- EnterCriticalSection(&csDbAccess);
- if (DatabaseCorrupted==0) {
- DatabaseCorrupted++;
- kill++;
- msg = text;
- dwErr = GetLastError();
- } else {
- /* db is already corrupted, someone else is dealing with it, wait here
- so that we don't do any more damage */
- LeaveCriticalSection(&csDbAccess);
- Sleep(INFINITE);
- return;
- }
- LeaveCriticalSection(&csDbAccess);
- if (kill) {
- _beginthread(dbpanic,0,NULL);
- Sleep(INFINITE);
- }
-}
-
-#ifdef DBLOGGING
-void DBLog(const char *file,int line,const char *fmt,...)
-{
- FILE *fp;
- va_list vararg;
- char str[1024];
-
- va_start(vararg,fmt);
- mir_vsnprintf(str,sizeof(str),fmt,vararg);
- va_end(vararg);
- fp=fopen("c:\\mirandadatabase.log.txt","at");
- fprintf(fp,"%u: %s %d: %s\n",GetTickCount(),file,line,str);
- fclose(fp);
-}
-#endif
diff --git a/plugins/db3x_mmap/database.h b/plugins/db3x_mmap/database.h
deleted file mode 100644
index 3dd602c8b9..0000000000
--- a/plugins/db3x_mmap/database.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-
-//all offsets are relative to the start of the file
-//offsets are 0 if there is nothing in the chain or this is the last in the
-//chain
-
-/* tree diagram
-
-DBHeader
- |-->end of file (plain offset)
- |-->first contact (DBContact)
- | |-->next contact (DBContact)
- | | \--> ...
- | |-->first settings (DBContactSettings)
- | | |-->next settings (DBContactSettings)
- | | | \--> ...
- | | \-->module name (DBModuleName)
- | \-->first/last/firstunread event
- |-->user contact (DBContact)
- | |-->next contact=NULL
- | |-->first settings as above
- | \-->first/last/firstunread event as above
- \-->first module name (DBModuleName)
- \-->next module name (DBModuleName)
- \--> ...
-*/
-
-//#define DB_RESIZE_GRANULARITY 16384
-#define DB_THIS_VERSION 0x00000700u
-#define DB_SETTINGS_RESIZE_GRANULARITY 128
-
-struct DBSignature {
- char name[15];
- BYTE eof;
-};
-
-static struct DBSignature dbSignature={"Miranda ICQ DB",0x1A};
-
-#include <pshpack1.h>
-struct DBHeader {
- BYTE signature[16]; // 'Miranda ICQ DB',0,26
- DWORD version; //as 4 bytes, ie 1.2.3.10=0x0102030a
- //this version is 0x00000700
- DWORD ofsFileEnd; //offset of the end of the database - place to write
- //new structures
- DWORD slackSpace; //a counter of the number of bytes that have been
- //wasted so far due to deleting structures and/or
- //re-making them at the end. We should compact when
- //this gets above a threshold
- DWORD contactCount; //number of contacts in the chain,excluding the user
- DWORD ofsFirstContact; //offset to first struct DBContact in the chain
- DWORD ofsUser; //offset to struct DBContact representing the user
- DWORD ofsFirstModuleName; //offset to first struct DBModuleName in the chain
-};
-
-#define DBCONTACT_SIGNATURE 0x43DECADEu
-struct DBContact {
- DWORD signature;
- DWORD ofsNext; //offset to the next contact in the chain. zero if
- //this is the 'user' contact or the last contact
- //in the chain
- DWORD ofsFirstSettings; //offset to the first DBContactSettings in the
- //chain for this contact.
- DWORD eventCount; //number of events in the chain for this contact
- DWORD ofsFirstEvent,ofsLastEvent; //offsets to the first and last DBEvent in
- //the chain for this contact
- DWORD ofsFirstUnreadEvent; //offset to the first (chronological) unread event
- //in the chain, 0 if all are read
- DWORD timestampFirstUnread; //timestamp of the event at ofsFirstUnreadEvent
-};
-
-#define DBMODULENAME_SIGNATURE 0x4DDECADEu
-struct DBModuleName {
- DWORD signature;
- DWORD ofsNext; //offset to the next module name in the chain
- BYTE cbName; //number of characters in this module name
- char name[1]; //name, no nul terminator
-};
-
-#define DBCONTACTSETTINGS_SIGNATURE 0x53DECADEu
-struct DBContactSettings {
- DWORD signature;
- DWORD ofsNext; //offset to the next contactsettings in the chain
- DWORD ofsModuleName; //offset to the DBModuleName of the owner of these
- //settings
- DWORD cbBlob; //size of the blob in bytes. May be larger than the
- //actual size for reducing the number of moves
- //required using granularity in resizing
- BYTE blob[1]; //the blob. a back-to-back sequence of DBSetting
- //structs, the last has cbName=0
-};
-
-/* not a valid structure, content is figured out on the fly
-struct DBSetting {
- BYTE cbName; //number of bytes in the name of this setting
- //this =0 marks the end
- char szName[...]; //setting name, excluding nul
- BYTE dataType; //type of data. see m_database.h, db/contact/getsetting
- union { //a load of types of data, length is defined by dataType
- BYTE bVal; WORD wVal; DWORD dVal;
- struct {
- WORD cbString;
- char szVal[...]; //excludes nul terminator
- };
- struct {
- WORD cbBlob;
- BYTE blobVal[...];
- };
- };
-};
-*/
-
-#define DBEVENT_SIGNATURE 0x45DECADEu
-struct DBEvent {
- DWORD signature;
- DWORD ofsPrev,ofsNext; //offset to the previous and next events in the
- //chain. Chain is sorted chronologically
- DWORD ofsModuleName; //offset to a DBModuleName struct of the name of
- //the owner of this event
- DWORD timestamp; //seconds since 00:00:00 01/01/1970
- DWORD flags; //see m_database.h, db/event/add
- WORD eventType; //module-defined event type
- DWORD cbBlob; //number of bytes in the blob
- BYTE blob[1]; //the blob. module-defined formatting
-};
-#include <poppack.h>
-
-typedef struct
-{
- BYTE bIsResident;
- char name[1];
-}
- DBCachedSettingName;
-
-typedef struct
-{
- char* name;
- DBVARIANT value;
-}
- DBCachedGlobalValue;
-
-typedef struct DBCachedContactValue_tag
-{
- char* name;
- DBVARIANT value;
- struct DBCachedContactValue_tag* next;
-}
- DBCachedContactValue;
-
-typedef struct
-{
- HANDLE hContact;
- HANDLE hNext;
- DBCachedContactValue* first;
- DBCachedContactValue* last;
-}
- DBCachedContactValueList;
-
-//databasecorruption: with NULL called if any signatures are broken. very very fatal
-void DatabaseCorruption(TCHAR *text);
-PBYTE DBRead(DWORD ofs,int bytesRequired,int *bytesAvail); //any preview result could be invalidated by the next call
-void DBWrite(DWORD ofs,PVOID pData,int count);
-void DBFill(DWORD ofs,int bytes);
-void DBFlush(int setting);
-void DBMoveChunk(DWORD ofsDest,DWORD ofsSource,int bytes);
-DWORD CreateNewSpace(int bytes);
-void DeleteSpace(DWORD ofs,int bytes);
-DWORD ReallocSpace(DWORD ofs,int oldSize,int newSize);
-void GetProfileDirectory(char *szPath,int cbPath);
-int GetDefaultProfilePath(char *szPath,int cbPath,int *specified);
-int ShouldShowProfileManager(void);
-int CheckDbHeaders(struct DBHeader * hdr);
-int CreateDbHeaders(HANDLE hFile);
-int LoadDatabaseModule(void);
-void UnloadDatabaseModule(void);
-
-#define MAXCACHEDREADSIZE 65536
-
-//#define DBLOGGING
-
-#ifdef _DEBUG
-//#define DBLOGGING
-#endif
-#ifdef DBLOGGING
-void DBLog(const char *file,int line,const char *fmt,...);
-#define logg() DBLog(__FILE__,__LINE__,"")
-#define log0(s) DBLog(__FILE__,__LINE__,s)
-#define log1(s,a) DBLog(__FILE__,__LINE__,s,a)
-#define log2(s,a,b) DBLog(__FILE__,__LINE__,s,a,b)
-#define log3(s,a,b,c) DBLog(__FILE__,__LINE__,s,a,b,c)
-#define log4(s,a,b,c,d) DBLog(__FILE__,__LINE__,s,a,b,c,d)
-#else
-#define logg()
-#define log0(s)
-#define log1(s,a)
-#define log2(s,a,b)
-#define log3(s,a,b,c)
-#define log4(s,a,b,c,d)
-#endif
diff --git a/plugins/db3x_mmap/db3x_mmap.rc b/plugins/db3x_mmap/db3x_mmap.rc
deleted file mode 100644
index 434e5437b5..0000000000
--- a/plugins/db3x_mmap/db3x_mmap.rc
+++ /dev/null
@@ -1,174 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include <winres.h>
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_INSTALLINI DIALOGEX 0, 0, 212, 102
-STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK |
- DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION |
- WS_SYSMENU
-EXSTYLE WS_EX_CONTROLPARENT
-CAPTION "Install Database Settings"
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- DEFPUSHBUTTON "Yes",IDOK,26,83,50,14
- PUSHBUTTON "No",IDCANCEL,81,83,50,14
- LTEXT "A file containing new database settings has been placed in the Miranda IM directory.",
- IDC_STATIC,5,5,202,16
- LTEXT "Do you want to import the settings now?",IDC_STATIC,5,
- 69,202,8
- PUSHBUTTON "No to all",IDC_NOTOALL,136,83,50,14
- LTEXT "",IDC_ININAME,5,24,143,16,SS_NOPREFIX | SS_CENTERIMAGE
- PUSHBUTTON "&View contents",IDC_VIEWINI,149,25,58,14
- LTEXT "Security systems to prevent malicious changes are in place and you will be warned before changes that are not known to be safe.",
- IDC_SECURITYINFO,5,43,202,24
-END
-
-IDD_WARNINICHANGE DIALOGEX 0, 0, 187, 113
-STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK |
- DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION |
- WS_SYSMENU
-EXSTYLE WS_EX_CONTROLPARENT
-CAPTION "Database Setting Change"
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- LTEXT "Database settings are being imported from",IDC_STATIC,5,
- 5,177,8
- CONTROL "",IDC_ININAME,"Static",SS_SIMPLE | SS_NOPREFIX |
- WS_GROUP,5,13,177,8
- LTEXT "This file wishes to change the setting",IDC_STATIC,5,24,
- 177,8
- CONTROL "",IDC_SETTINGNAME,"Static",SS_SIMPLE | SS_NOPREFIX |
- WS_GROUP,12,33,170,8
- LTEXT "to the value",IDC_STATIC,5,42,177,8
- CONTROL "",IDC_NEWVALUE,"Static",SS_SIMPLE | SS_NOPREFIX |
- WS_GROUP,12,51,170,8
- LTEXT "",IDC_SECURITYINFO,5,60,177,8
- LTEXT "Do you want to allow this change?",IDC_STATIC,5,71,177,
- 8
- CONTROL "&Allow all further changes to this section",
- IDC_WARNNOMORE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,
- 80,169,10
- DEFPUSHBUTTON "&Yes",IDYES,5,94,50,14
- PUSHBUTTON "&No",IDNO,59,94,50,14
- PUSHBUTTON "Cancel Import",IDCANCEL,123,94,59,14
-END
-
-IDD_INIIMPORTDONE DIALOGEX 0, 0, 186, 73
-STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK |
- DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION |
- WS_SYSMENU
-EXSTYLE WS_EX_CONTROLPARENT
-CAPTION "Database Import Complete"
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- LTEXT "The import has completed from",IDC_STATIC,5,5,176,8
- CONTROL "",IDC_ININAME,"Static",SS_SIMPLE | SS_NOPREFIX |
- WS_GROUP,5,13,176,8
- LTEXT "What do you want to do with the file now?",IDC_STATIC,5,
- 24,176,8
- PUSHBUTTON "&Recycle",IDC_RECYCLE,5,36,50,14
- PUSHBUTTON "&Delete",IDC_DELETE,68,36,50,14
- EDITTEXT IDC_NEWNAME,5,55,117,12,ES_AUTOHSCROLL
- PUSHBUTTON "&Move/Rename",IDC_MOVE,124,54,57,14
- PUSHBUTTON "&Leave",IDC_LEAVE,131,36,50,14
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
- IDD_INSTALLINI, DIALOG
- BEGIN
- LEFTMARGIN, 5
- RIGHTMARGIN, 207
- TOPMARGIN, 5
- BOTTOMMARGIN, 97
- END
-
- IDD_WARNINICHANGE, DIALOG
- BEGIN
- LEFTMARGIN, 5
- RIGHTMARGIN, 182
- TOPMARGIN, 5
- BOTTOMMARGIN, 108
- END
-
- IDD_INIIMPORTDONE, DIALOG
- BEGIN
- LEFTMARGIN, 5
- RIGHTMARGIN, 181
- TOPMARGIN, 5
- BOTTOMMARGIN, 68
- END
-END
-#endif // APSTUDIO_INVOKED
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include <winres.h>\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
diff --git a/plugins/db3x_mmap/db3x_mmap_10.vcxproj b/plugins/db3x_mmap/db3x_mmap_10.vcxproj
deleted file mode 100644
index 1305b3d229..0000000000
--- a/plugins/db3x_mmap/db3x_mmap_10.vcxproj
+++ /dev/null
@@ -1,295 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>db3x_mmap</ProjectName>
- <ProjectGuid>{20D781FB-4A20-4B75-B863-304A47182966}</ProjectGuid>
- <RootNamespace>db3x_mmap</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>Unicode</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>Unicode</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
- <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
- <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</IgnoreImportLibrary>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
- <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
- <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</IgnoreImportLibrary>
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">dbx_mmap</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">dbx_mmap</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">dbx_mmap</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dbx_mmap</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>Win32</TargetEnvironment>
- <TypeLibraryName>.\Debug/db3x.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DB3X_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <FloatingPointModel>Fast</FloatingPointModel>
- <RuntimeTypeInfo>false</RuntimeTypeInfo>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>commonheaders.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <StringPooling>false</StringPooling>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0809</Culture>
- <AdditionalIncludeDirectories>./../../include/msapi/</AdditionalIncludeDirectories>
- </ResourceCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\Debug/db3x.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DB3X_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>false</StringPooling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <FloatingPointModel>Fast</FloatingPointModel>
- <RuntimeTypeInfo>false</RuntimeTypeInfo>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>commonheaders.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0809</Culture>
- <AdditionalIncludeDirectories>./../../include/msapi/</AdditionalIncludeDirectories>
- </ResourceCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX64</TargetMachine>
- <OutputFile>c:\miranda im\plugins\$(TargetName)$(TargetExt)</OutputFile>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>Win32</TargetEnvironment>
- <TypeLibraryName>.\Release/db3x.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DB3X_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <ExceptionHandling>false</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <FloatingPointModel>Fast</FloatingPointModel>
- <RuntimeTypeInfo>false</RuntimeTypeInfo>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>commonheaders.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0809</Culture>
- <AdditionalIncludeDirectories>./../../include/msapi/</AdditionalIncludeDirectories>
- </ResourceCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
- <BaseAddress>0x5130000</BaseAddress>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>X64</TargetEnvironment>
- <TypeLibraryName>.\Release/db3x.tlb</TypeLibraryName>
- </Midl>
- <ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DB3X_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <ExceptionHandling>false</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <FloatingPointModel>Fast</FloatingPointModel>
- <RuntimeTypeInfo>false</RuntimeTypeInfo>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>commonheaders.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0809</Culture>
- <AdditionalIncludeDirectories>./../../include/msapi/</AdditionalIncludeDirectories>
- </ResourceCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
- <BaseAddress>0x5130000</BaseAddress>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="commonheaders.c">
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
- </ClCompile>
- <ClCompile Include="database.c" />
- <ClCompile Include="dbcache.c" />
- <ClCompile Include="dbcontacts.c" />
- <ClCompile Include="dbevents.c" />
- <ClCompile Include="dbheaders.c" />
- <ClCompile Include="dbmodulechain.c" />
- <ClCompile Include="dbsettings.c" />
- <ClCompile Include="encrypt.c" />
- <ClCompile Include="init.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="commonheaders.h" />
- <ClInclude Include="database.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="db3x_mmap.rc" />
- <ResourceCompile Include="version.rc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/plugins/db3x_mmap/db3x_mmap_10.vcxproj.filters b/plugins/db3x_mmap/db3x_mmap_10.vcxproj.filters
deleted file mode 100644
index 448b7073e8..0000000000
--- a/plugins/db3x_mmap/db3x_mmap_10.vcxproj.filters
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{60d2ae39-2690-4258-aa90-e825ef024b81}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{a2637eb4-34a4-4341-9c84-0e0ecfdc0f35}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{e5e10389-c0d7-4cf8-8442-6714f0d5aff1}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="commonheaders.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="database.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dbcache.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dbcontacts.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dbevents.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dbheaders.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dbmodulechain.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dbsettings.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="encrypt.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="init.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="commonheaders.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="database.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="db3x_mmap.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- <ResourceCompile Include="version.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/plugins/db3x_mmap/dbcache.c b/plugins/db3x_mmap/dbcache.c
deleted file mode 100644
index 8e177c6f6d..0000000000
--- a/plugins/db3x_mmap/dbcache.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-BOOL safetyMode = TRUE;
-static UINT_PTR flushBuffersTimerId;
-
-static PBYTE pNull = 0;
-static PBYTE pDbCache = NULL;
-static HANDLE hMap = NULL;
-static DWORD dwFileSize = 0;
-static DWORD ChunkSize = 65536;
-static DWORD flushFailTick = 0;
-
-
-void Map()
-{
- hMap = CreateFileMapping(hDbFile, NULL, PAGE_READWRITE, 0, dwFileSize, NULL);
-
- if (hMap)
- {
- pDbCache = MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS/*FILE_MAP_WRITE*/, 0, 0 ,0);
- if (!pDbCache)
- DatabaseCorruption( _T("%s (MapViewOfFile failed. Code: %d)"));
- }
- else
- DatabaseCorruption( _T("%s (CreateFileMapping failed. Code: %d)"));
-}
-
-void ReMap(DWORD needed)
-{
- KillTimer(NULL,flushBuffersTimerId);
-
- log3("remapping %d + %d (file end: %d)",dwFileSize,needed,dbHeader.ofsFileEnd);
-
- if (needed > ChunkSize)
- {
- if (needed + dwFileSize > dbHeader.ofsFileEnd + ChunkSize)
- DatabaseCorruption( _T("%s (Too large increment)"));
- else
- {
- DWORD x = dbHeader.ofsFileEnd/ChunkSize;
- dwFileSize = (x+1)*ChunkSize;
- }
- }
- else
- dwFileSize += ChunkSize;
-
-// FlushViewOfFile(pDbCache, 0);
- UnmapViewOfFile(pDbCache);
- pDbCache = NULL;
- CloseHandle(hMap);
-
- Map();
-}
-
-void DBMoveChunk(DWORD ofsDest,DWORD ofsSource,int bytes)
-{
- int x = 0;
- log3("move %d %08x->%08x",bytes,ofsSource,ofsDest);
- if (ofsDest+bytes>dwFileSize) ReMap(ofsDest+bytes-dwFileSize);
- if (ofsSource+bytes>dwFileSize) {
- x = ofsSource+bytes-dwFileSize;
- log0("buggy move!");
- _ASSERT(0);
- }
- if (x > 0)
- ZeroMemory(pDbCache+ofsDest+bytes-x, x);
- if (ofsSource < dwFileSize)
- MoveMemory(pDbCache+ofsDest,pDbCache+ofsSource, bytes-x);
-
- logg();
-}
-
-//we are assumed to be in a mutex here
-PBYTE DBRead(DWORD ofs,int bytesRequired,int *bytesAvail)
-{
- // buggy read
- if (ofs>=dwFileSize) {
- log2("read from outside %d@%08x",bytesRequired,ofs);
- if (bytesAvail!=NULL) *bytesAvail = ChunkSize;
- return pNull;
- }
- log3((ofs+bytesRequired>dwFileSize)?"read %d@%08x, only %d avaliable":"read %d@%08x",bytesRequired,ofs,dwFileSize-ofs);
- if (bytesAvail!=NULL) *bytesAvail = dwFileSize - ofs;
- return pDbCache+ofs;
-}
-
-//we are assumed to be in a mutex here
-void DBWrite(DWORD ofs,PVOID pData,int bytes)
-{
- log2("write %d@%08x",bytes,ofs);
- if (ofs+bytes>dwFileSize) ReMap(ofs+bytes-dwFileSize);
- MoveMemory(pDbCache+ofs,pData,bytes);
- logg();
-}
-
-//we are assumed to be in a mutex here
-void DBFill(DWORD ofs,int bytes)
-{
- log2("zerofill %d@%08x",bytes,ofs);
- if (ofs+bytes<=dwFileSize)
- ZeroMemory(pDbCache+ofs,bytes);
- logg();
-}
-
-static VOID CALLBACK DoBufferFlushTimerProc(HWND hwnd, UINT message, UINT_PTR idEvent, DWORD dwTime)
-{
- if (!pDbCache) return;
-
- KillTimer(NULL,flushBuffersTimerId);
- log0("tflush1");
- if (FlushViewOfFile(pDbCache, 0) == 0) {
- if (flushFailTick == 0)
- flushFailTick = GetTickCount();
- else if (GetTickCount() - flushFailTick > 5000)
- DatabaseCorruption(NULL);
- }
- else
- flushFailTick = 0;
- log0("tflush2");
-}
-
-void DBFlush(int setting)
-{
- if(!setting) {
- log0("nflush1");
- if(safetyMode && pDbCache) {
- if (FlushViewOfFile(pDbCache, 0) == 0) {
- if (flushFailTick == 0)
- flushFailTick = GetTickCount();
- else if (GetTickCount() - flushFailTick > 5000)
- DatabaseCorruption(NULL);
- }
- else
- flushFailTick = 0;
- }
- log0("nflush2");
- return;
- }
- KillTimer(NULL,flushBuffersTimerId);
- flushBuffersTimerId=SetTimer(NULL,flushBuffersTimerId,50,DoBufferFlushTimerProc);
-}
-
-static INT_PTR CacheSetSafetyMode(WPARAM wParam,LPARAM lParam)
-{
- EnterCriticalSection(&csDbAccess);
- safetyMode=wParam;
- LeaveCriticalSection(&csDbAccess);
- DBFlush(1);
- return 0;
-}
-
-int InitCache(void)
-{
- DWORD x;
- SYSTEM_INFO sinf;
-
- GetSystemInfo(&sinf);
- ChunkSize = sinf.dwAllocationGranularity;
-
- dwFileSize = GetFileSize(hDbFile, NULL);
-
- // Align to chunk
- x = dwFileSize % ChunkSize;
- if (x) dwFileSize += ChunkSize - x;
-
- Map();
-
- // zero region for reads outside the file
- pNull = calloc(ChunkSize,1);
-
- CreateServiceFunction(MS_DB_SETSAFETYMODE,CacheSetSafetyMode);
-
- return 0;
-}
-
-void UninitCache(void)
-{
- KillTimer(NULL,flushBuffersTimerId);
- FlushViewOfFile(pDbCache, 0);
- UnmapViewOfFile(pDbCache);
- CloseHandle(hMap);
- if (pNull) free(pNull);
-}
diff --git a/plugins/db3x_mmap/dbcontacts.c b/plugins/db3x_mmap/dbcontacts.c
deleted file mode 100644
index 0803f1f746..0000000000
--- a/plugins/db3x_mmap/dbcontacts.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-extern HANDLE hCacheHeap;
-extern SortedList lContacts;
-extern HANDLE hLastCachedContact;
-
-INT_PTR GetContactSettingStatic(WPARAM wParam,LPARAM lParam);
-void FreeCachedVariant( DBVARIANT* V );
-
-static INT_PTR GetContactCount(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindFirstContact(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindNextContact(WPARAM wParam,LPARAM lParam);
-static INT_PTR DeleteContact(WPARAM wParam,LPARAM lParam);
-static INT_PTR AddContact(WPARAM wParam,LPARAM lParam);
-static INT_PTR IsDbContact(WPARAM wParam,LPARAM lParam);
-
-static HANDLE hContactDeletedEvent,hContactAddedEvent;
-
-
-int InitContacts(void)
-{
- CreateServiceFunction(MS_DB_CONTACT_GETCOUNT,GetContactCount);
- CreateServiceFunction(MS_DB_CONTACT_FINDFIRST,FindFirstContact);
- CreateServiceFunction(MS_DB_CONTACT_FINDNEXT,FindNextContact);
- CreateServiceFunction(MS_DB_CONTACT_DELETE,DeleteContact);
- CreateServiceFunction(MS_DB_CONTACT_ADD,AddContact);
- CreateServiceFunction(MS_DB_CONTACT_IS,IsDbContact);
- hContactDeletedEvent=CreateHookableEvent(ME_DB_CONTACT_DELETED);
- hContactAddedEvent=CreateHookableEvent(ME_DB_CONTACT_ADDED);
- return 0;
-}
-
-void UninitContacts(void)
-{
-}
-
-DBCachedContactValueList* AddToCachedContactList(HANDLE hContact, int index)
-{
- DBCachedContactValueList* VL;
- VL = (DBCachedContactValueList*)HeapAlloc(hCacheHeap,HEAP_ZERO_MEMORY,sizeof(DBCachedContactValueList));
- VL->hContact = hContact;
- if (index == -1) li.List_GetIndex(&lContacts,VL,&index);
- li.List_Insert(&lContacts,VL,index);
- return VL;
-}
-
-static INT_PTR GetContactCount(WPARAM wParam,LPARAM lParam)
-{
- int ret;
-
- EnterCriticalSection(&csDbAccess);
- ret=dbHeader.contactCount;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-#define proto_module "Protocol"
-#define proto_setting "p"
-
-static int CheckProto(HANDLE hContact, const char *proto)
-{
- static char protobuf[MAX_PATH] = {0};
- static DBVARIANT dbv;
- static DBCONTACTGETSETTING sVal = {proto_module,proto_setting,&dbv};
-
- dbv.type = DBVT_ASCIIZ;
- dbv.pszVal = protobuf;
- dbv.cchVal = sizeof(protobuf);
-
- if (GetContactSettingStatic((WPARAM)hContact, (LPARAM )&sVal) != 0
- || (dbv.type != DBVT_ASCIIZ)) return 0;
-
- return !strcmp(protobuf,proto);
-}
-
-static INT_PTR FindFirstContact(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret = 0;
- EnterCriticalSection(&csDbAccess);
- ret = (INT_PTR)dbHeader.ofsFirstContact;
- if (lParam && !CheckProto((HANDLE)ret,(const char*)lParam))
- ret = FindNextContact((WPARAM)ret,lParam);
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR FindNextContact(WPARAM wParam,LPARAM lParam)
-{
- int index;
- struct DBContact *dbc;
- DBCachedContactValueList VLtemp, *VL = NULL;
- VLtemp.hContact = (HANDLE)wParam;
- EnterCriticalSection(&csDbAccess);
- while(VLtemp.hContact) {
- if ( li.List_GetIndex(&lContacts,&VLtemp,&index)) {
- VL = ( DBCachedContactValueList* )lContacts.items[index];
- if (VL->hNext != NULL) {
- if (!lParam || CheckProto(VL->hNext,(const char*)lParam)) {
- LeaveCriticalSection(&csDbAccess);
- return (INT_PTR)VL->hNext;
- }
- else {
- VLtemp.hContact = VL->hNext;
- continue;
- } } }
-
- dbc=(struct DBContact*)DBRead((DWORD)VLtemp.hContact,sizeof(struct DBContact),NULL);
- if (dbc->signature!=DBCONTACT_SIGNATURE)
- break;
- else {
- if ( VL == NULL )
- VL = AddToCachedContactList(VLtemp.hContact,index);
-
- VL->hNext = (HANDLE)dbc->ofsNext;
- if (VL->hNext != NULL && (!lParam || CheckProto(VL->hNext,(const char*)lParam))) {
- LeaveCriticalSection(&csDbAccess);
- return (INT_PTR)VL->hNext;
- }
- VLtemp.hContact = VL->hNext;
- } }
- LeaveCriticalSection(&csDbAccess);
- return 0;
-}
-
-static INT_PTR DeleteContact(WPARAM wParam,LPARAM lParam)
-{
- struct DBContact *dbc,*dbcPrev;
- DWORD ofsThis,ofsNext,ofsFirstEvent;
- struct DBContactSettings *dbcs;
- struct DBEvent *dbe;
- int index;
-
- if((HANDLE)wParam==NULL) return 1;
- EnterCriticalSection(&csDbAccess);
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- if ( (HANDLE)wParam == (HANDLE)dbHeader.ofsUser ) {
- LeaveCriticalSection(&csDbAccess);
- log0("FATAL: del of user chain attempted.");
- return 1;
- }
- log0("del contact");
- LeaveCriticalSection(&csDbAccess);
- //call notifier while outside mutex
- NotifyEventHooks(hContactDeletedEvent,wParam,0);
- //get back in
- EnterCriticalSection(&csDbAccess);
-
- { DBCachedContactValueList VLtemp;
- VLtemp.hContact = (HANDLE)wParam;
- if ( li.List_GetIndex(&lContacts,&VLtemp,&index))
- {
- DBCachedContactValueList *VL = ( DBCachedContactValueList* )lContacts.items[index];
- DBCachedContactValue* V = VL->first;
- while ( V != NULL ) {
- DBCachedContactValue* V1 = V->next;
- FreeCachedVariant(&V->value);
- HeapFree( hCacheHeap, 0, V );
- V = V1;
- }
- HeapFree( hCacheHeap, 0, VL );
-
- if (VLtemp.hContact == hLastCachedContact)
- hLastCachedContact = NULL;
- li.List_Remove(&lContacts,index);
- } }
-
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- //delete settings chain
- ofsThis=dbc->ofsFirstSettings;
- ofsFirstEvent=dbc->ofsFirstEvent;
- while(ofsThis) {
- dbcs=(struct DBContactSettings*)DBRead(ofsThis,sizeof(struct DBContactSettings),NULL);
- ofsNext=dbcs->ofsNext;
- DeleteSpace(ofsThis,offsetof(struct DBContactSettings,blob)+dbcs->cbBlob);
- ofsThis=ofsNext;
- }
- //delete event chain
- ofsThis=ofsFirstEvent;
- while(ofsThis) {
- dbe=(struct DBEvent*)DBRead(ofsThis,sizeof(struct DBEvent),NULL);
- ofsNext=dbe->ofsNext;
- DeleteSpace(ofsThis,offsetof(struct DBEvent,blob)+dbe->cbBlob);
- ofsThis=ofsNext;
- }
- //find previous contact in chain and change ofsNext
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbHeader.ofsFirstContact==wParam) {
- dbHeader.ofsFirstContact=dbc->ofsNext;
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- }
- else {
- ofsNext=dbc->ofsNext;
- ofsThis=dbHeader.ofsFirstContact;
- dbcPrev=(struct DBContact*)DBRead(ofsThis,sizeof(struct DBContact),NULL);
- while(dbcPrev->ofsNext!=wParam) {
- if(dbcPrev->ofsNext==0) DatabaseCorruption(NULL);
- ofsThis=dbcPrev->ofsNext;
- dbcPrev=(struct DBContact*)DBRead(ofsThis,sizeof(struct DBContact),NULL);
- }
- dbcPrev->ofsNext=ofsNext;
- DBWrite(ofsThis,dbcPrev,sizeof(struct DBContact));
- {
- DBCachedContactValueList VLtemp;
- VLtemp.hContact = (HANDLE)ofsThis;
- if ( li.List_GetIndex(&lContacts,&VLtemp,&index))
- {
- DBCachedContactValueList *VL = ( DBCachedContactValueList* )lContacts.items[index];
- VL->hNext = ( HANDLE )ofsNext;
- } }
- }
- //delete contact
- DeleteSpace(wParam,sizeof(struct DBContact));
- //decrement contact count
- dbHeader.contactCount--;
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- DBFlush(0);
- //quit
- LeaveCriticalSection(&csDbAccess);
- return 0;
-}
-
-static INT_PTR AddContact(WPARAM wParam,LPARAM lParam)
-{
- struct DBContact dbc;
- DWORD ofsNew;
-
- log0("add contact");
- EnterCriticalSection(&csDbAccess);
- ofsNew=CreateNewSpace(sizeof(struct DBContact));
- dbc.signature=DBCONTACT_SIGNATURE;
- dbc.eventCount=0;
- dbc.ofsFirstEvent=dbc.ofsLastEvent=0;
- dbc.ofsFirstSettings=0;
- dbc.ofsNext=dbHeader.ofsFirstContact;
- dbc.ofsFirstUnreadEvent=0;
- dbc.timestampFirstUnread=0;
- dbHeader.ofsFirstContact=ofsNew;
- dbHeader.contactCount++;
- DBWrite(ofsNew,&dbc,sizeof(struct DBContact));
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- DBFlush(0);
-
- AddToCachedContactList((HANDLE)ofsNew, -1);
-
- LeaveCriticalSection(&csDbAccess);
- NotifyEventHooks(hContactAddedEvent,(WPARAM)ofsNew,0);
- return (INT_PTR)ofsNew;
-}
-
-static INT_PTR IsDbContact(WPARAM wParam,LPARAM lParam)
-{
- struct DBContact *dbc;
- DWORD ofsContact=(DWORD)wParam;
- int ret;
-
- EnterCriticalSection(&csDbAccess);
- {
- int index;
- DBCachedContactValueList VLtemp;
- VLtemp.hContact = (HANDLE)wParam;
- if ( li.List_GetIndex(&lContacts,&VLtemp,&index))
- ret = TRUE;
- else {
- dbc=(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- ret=dbc->signature==DBCONTACT_SIGNATURE;
- if (ret)
- AddToCachedContactList((HANDLE)wParam, index);
- } }
-
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
diff --git a/plugins/db3x_mmap/dbevents.c b/plugins/db3x_mmap/dbevents.c
deleted file mode 100644
index 24c568f02d..0000000000
--- a/plugins/db3x_mmap/dbevents.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-extern BOOL safetyMode;
-
-DWORD GetModuleNameOfs(const char *szName);
-char *GetModuleNameByOfs(DWORD ofs);
-
-static INT_PTR GetEventCount(WPARAM wParam,LPARAM lParam);
-static INT_PTR AddEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR DeleteEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR GetBlobSize(WPARAM wParam,LPARAM lParam);
-static INT_PTR GetEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR MarkEventRead(WPARAM wParam,LPARAM lParam);
-static INT_PTR GetEventContact(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindFirstEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindFirstUnreadEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindLastEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindNextEvent(WPARAM wParam,LPARAM lParam);
-static INT_PTR FindPrevEvent(WPARAM wParam,LPARAM lParam);
-
-static HANDLE hEventDeletedEvent,hEventAddedEvent,hEventFilterAddedEvent;
-
-int InitEvents(void)
-{
- CreateServiceFunction(MS_DB_EVENT_GETCOUNT,GetEventCount);
- CreateServiceFunction(MS_DB_EVENT_ADD,AddEvent);
- CreateServiceFunction(MS_DB_EVENT_DELETE,DeleteEvent);
- CreateServiceFunction(MS_DB_EVENT_GETBLOBSIZE,GetBlobSize);
- CreateServiceFunction(MS_DB_EVENT_GET,GetEvent);
- CreateServiceFunction(MS_DB_EVENT_MARKREAD,MarkEventRead);
- CreateServiceFunction(MS_DB_EVENT_GETCONTACT,GetEventContact);
- CreateServiceFunction(MS_DB_EVENT_FINDFIRST,FindFirstEvent);
- CreateServiceFunction(MS_DB_EVENT_FINDFIRSTUNREAD,FindFirstUnreadEvent);
- CreateServiceFunction(MS_DB_EVENT_FINDLAST,FindLastEvent);
- CreateServiceFunction(MS_DB_EVENT_FINDNEXT,FindNextEvent);
- CreateServiceFunction(MS_DB_EVENT_FINDPREV,FindPrevEvent);
- hEventDeletedEvent=CreateHookableEvent(ME_DB_EVENT_DELETED);
- hEventAddedEvent=CreateHookableEvent(ME_DB_EVENT_ADDED);
- hEventFilterAddedEvent=CreateHookableEvent(ME_DB_EVENT_FILTER_ADD);
- return 0;
-}
-
-void UninitEvents(void)
-{
-}
-
-static INT_PTR GetEventCount(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBContact *dbc;
-
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) wParam=dbHeader.ofsUser;
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) ret=-1;
- else ret=dbc->eventCount;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR AddEvent(WPARAM wParam,LPARAM lParam)
-{
- DBEVENTINFO *dbei=(DBEVENTINFO*)lParam;
- struct DBContact dbc;
- struct DBEvent dbe,*dbeTest;
- DWORD ofsNew,ofsModuleName,ofsContact,ofsThis;
- BOOL neednotify;
-
- if(dbei==NULL||dbei->cbSize!=sizeof(DBEVENTINFO)) return 0;
- if(dbei->timestamp==0) return 0;
- if (NotifyEventHooks(hEventFilterAddedEvent,wParam,lParam)) {
- return 0;
- }
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) ofsContact=dbHeader.ofsUser;
- else ofsContact=(DWORD)wParam;
- dbc=*(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- if(dbc.signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 0;
- }
- ofsNew=CreateNewSpace(offsetof(struct DBEvent,blob)+dbei->cbBlob);
- ofsModuleName=GetModuleNameOfs(dbei->szModule);
-
- dbe.signature=DBEVENT_SIGNATURE;
- dbe.ofsModuleName=ofsModuleName;
- dbe.timestamp=dbei->timestamp;
- dbe.flags=dbei->flags;
- dbe.eventType=dbei->eventType;
- dbe.cbBlob=dbei->cbBlob;
- //find where to put it - sort by timestamp
- if(dbc.eventCount==0) {
- dbe.ofsPrev=wParam;
- dbe.ofsNext=0;
- dbe.flags|=DBEF_FIRST;
- dbc.ofsFirstEvent=dbc.ofsLastEvent=ofsNew;
- }
- else {
- dbeTest=(struct DBEvent*)DBRead(dbc.ofsFirstEvent,sizeof(struct DBEvent),NULL);
- // Should new event be placed before first event in chain?
- if (dbei->timestamp < dbeTest->timestamp) {
- dbe.ofsPrev=wParam;
- dbe.ofsNext=dbc.ofsFirstEvent;
- dbe.flags|=DBEF_FIRST;
- dbc.ofsFirstEvent=ofsNew;
- dbeTest=(struct DBEvent*)DBRead(dbe.ofsNext,sizeof(struct DBEvent),NULL);
- dbeTest->flags&=~DBEF_FIRST;
- dbeTest->ofsPrev=ofsNew;
- DBWrite(dbe.ofsNext,dbeTest,sizeof(struct DBEvent));
- }
- else {
- // Loop through the chain, starting at the end
- ofsThis = dbc.ofsLastEvent;
- dbeTest = (struct DBEvent*)DBRead(ofsThis, sizeof(struct DBEvent), NULL);
- for(;;) {
- // If the new event's timesstamp is equal to or greater than the
- // current dbevent, it will be inserted after. If not, continue
- // with the previous dbevent in chain.
- if (dbe.timestamp >= dbeTest->timestamp) {
- dbe.ofsPrev = ofsThis;
- dbe.ofsNext = dbeTest->ofsNext;
- dbeTest->ofsNext = ofsNew;
- DBWrite(ofsThis, dbeTest, sizeof(struct DBEvent));
- if (dbe.ofsNext == 0)
- dbc.ofsLastEvent = ofsNew;
- else {
- dbeTest = (struct DBEvent*)DBRead(dbe.ofsNext, sizeof(struct DBEvent), NULL);
- dbeTest->ofsPrev = ofsNew;
- DBWrite(dbe.ofsNext, dbeTest, sizeof(struct DBEvent));
- }
- break;
- }
- ofsThis = dbeTest->ofsPrev;
- dbeTest = (struct DBEvent*)DBRead(ofsThis, sizeof(struct DBEvent), NULL);
- }
- }
- }
- dbc.eventCount++;
- if(!(dbe.flags&(DBEF_READ|DBEF_SENT))) {
- if(dbe.timestamp<dbc.timestampFirstUnread || dbc.timestampFirstUnread==0) {
- dbc.timestampFirstUnread=dbe.timestamp;
- dbc.ofsFirstUnreadEvent=ofsNew;
- }
- neednotify = TRUE;
- }
- else neednotify = safetyMode;
-
- DBWrite(ofsContact,&dbc,sizeof(struct DBContact));
- DBWrite(ofsNew,&dbe,offsetof(struct DBEvent,blob));
- DBWrite(ofsNew+offsetof(struct DBEvent,blob),dbei->pBlob,dbei->cbBlob);
- DBFlush(0);
-
- LeaveCriticalSection(&csDbAccess);
- log1("add event @ %08x",ofsNew);
-
- // Notify only in safe mode or on really new events
- if (neednotify)
- NotifyEventHooks(hEventAddedEvent,wParam,(LPARAM)ofsNew);
-
- return (INT_PTR)ofsNew;
-}
-
-static INT_PTR DeleteEvent(WPARAM wParam,LPARAM lParam)
-{
- struct DBContact dbc;
- DWORD ofsContact,ofsThis;
- struct DBEvent dbe,*dbeNext,*dbePrev;
-
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) ofsContact=dbHeader.ofsUser;
- else ofsContact=wParam;
- dbc=*(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- dbe=*(struct DBEvent*)DBRead(lParam,sizeof(struct DBEvent),NULL);
- if(dbc.signature!=DBCONTACT_SIGNATURE || dbe.signature!=DBEVENT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- log1("delete event @ %08x",wParam);
- LeaveCriticalSection(&csDbAccess);
- //call notifier while outside mutex
- NotifyEventHooks(hEventDeletedEvent,wParam,lParam);
- //get back in
- EnterCriticalSection(&csDbAccess);
- dbc=*(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- dbe=*(struct DBEvent*)DBRead(lParam,sizeof(struct DBEvent),NULL);
- //check if this was the first unread, if so, recalc the first unread
- if(dbc.ofsFirstUnreadEvent==(DWORD)lParam) {
- dbeNext=&dbe;
- for(;;) {
- if(dbeNext->ofsNext==0) {
- dbc.ofsFirstUnreadEvent=0;
- dbc.timestampFirstUnread=0;
- break;
- }
- ofsThis=dbeNext->ofsNext;
- dbeNext=(struct DBEvent*)DBRead(ofsThis,sizeof(struct DBEvent),NULL);
- if(!(dbeNext->flags&(DBEF_READ|DBEF_SENT))) {
- dbc.ofsFirstUnreadEvent=ofsThis;
- dbc.timestampFirstUnread=dbeNext->timestamp;
- break;
- }
- }
- }
- //get previous and next events in chain and change offsets
- if(dbe.flags&DBEF_FIRST) {
- if(dbe.ofsNext==0) {
- dbc.ofsFirstEvent=dbc.ofsLastEvent=0;
- }
- else {
- dbeNext=(struct DBEvent*)DBRead(dbe.ofsNext,sizeof(struct DBEvent),NULL);
- dbeNext->flags|=DBEF_FIRST;
- dbeNext->ofsPrev=dbe.ofsPrev;
- DBWrite(dbe.ofsNext,dbeNext,sizeof(struct DBEvent));
- dbc.ofsFirstEvent=dbe.ofsNext;
- }
- }
- else {
- if(dbe.ofsNext==0) {
- dbePrev=(struct DBEvent*)DBRead(dbe.ofsPrev,sizeof(struct DBEvent),NULL);
- dbePrev->ofsNext=0;
- DBWrite(dbe.ofsPrev,dbePrev,sizeof(struct DBEvent));
- dbc.ofsLastEvent=dbe.ofsPrev;
- }
- else {
- dbePrev=(struct DBEvent*)DBRead(dbe.ofsPrev,sizeof(struct DBEvent),NULL);
- dbePrev->ofsNext=dbe.ofsNext;
- DBWrite(dbe.ofsPrev,dbePrev,sizeof(struct DBEvent));
- dbeNext=(struct DBEvent*)DBRead(dbe.ofsNext,sizeof(struct DBEvent),NULL);
- dbeNext->ofsPrev=dbe.ofsPrev;
- DBWrite(dbe.ofsNext,dbeNext,sizeof(struct DBEvent));
- }
- }
- //delete event
- DeleteSpace(lParam,offsetof(struct DBEvent,blob)+dbe.cbBlob);
- //decrement event count
- dbc.eventCount--;
- DBWrite(ofsContact,&dbc,sizeof(struct DBContact));
- DBFlush(0);
- //quit
- LeaveCriticalSection(&csDbAccess);
- return 0;
-}
-
-static INT_PTR GetBlobSize(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBEvent *dbe;
-
- EnterCriticalSection(&csDbAccess);
- dbe=(struct DBEvent*)DBRead(wParam,sizeof(struct DBEvent),NULL);
- if(dbe->signature!=DBEVENT_SIGNATURE) ret=-1;
- else ret=dbe->cbBlob;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR GetEvent(WPARAM wParam,LPARAM lParam)
-{
- struct DBEvent *dbe;
- DBEVENTINFO *dbei=(DBEVENTINFO*)lParam;
- int bytesToCopy,i;
-
- if(dbei==NULL||dbei->cbSize!=sizeof(DBEVENTINFO)) return 1;
- if(dbei->cbBlob>0 && dbei->pBlob==NULL) {
- dbei->cbBlob = 0;
- return 1;
- }
- EnterCriticalSection(&csDbAccess);
- dbe=(struct DBEvent*)DBRead(wParam,sizeof(struct DBEvent),NULL);
- if(dbe->signature!=DBEVENT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- dbei->szModule=GetModuleNameByOfs(dbe->ofsModuleName);
- dbei->timestamp=dbe->timestamp;
- dbei->flags=dbe->flags;
- dbei->eventType=dbe->eventType;
- if(dbei->cbBlob<dbe->cbBlob) bytesToCopy=dbei->cbBlob;
- else bytesToCopy=dbe->cbBlob;
- dbei->cbBlob=dbe->cbBlob;
- if (bytesToCopy && dbei->pBlob)
- {
- for(i=0;;i+=MAXCACHEDREADSIZE) {
- if(bytesToCopy-i<=MAXCACHEDREADSIZE) {
- CopyMemory(dbei->pBlob+i,DBRead(wParam+offsetof(struct DBEvent,blob)+i,bytesToCopy-i,NULL),bytesToCopy-i);
- break;
- }
- CopyMemory(dbei->pBlob+i,DBRead(wParam+offsetof(struct DBEvent,blob)+i,MAXCACHEDREADSIZE,NULL),MAXCACHEDREADSIZE);
- }
- }
- LeaveCriticalSection(&csDbAccess);
- return 0;
-}
-
-static INT_PTR MarkEventRead(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBEvent *dbe;
- struct DBContact dbc;
- DWORD ofsThis;
-
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) wParam=dbHeader.ofsUser;
- dbc=*(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- dbe=(struct DBEvent*)DBRead(lParam,sizeof(struct DBEvent),NULL);
- if(dbe->signature!=DBEVENT_SIGNATURE || dbc.signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return -1;
- }
- if(dbe->flags&DBEF_READ || dbe->flags&DBEF_SENT) {
- ret=(INT_PTR)dbe->flags;
- LeaveCriticalSection(&csDbAccess);
- return ret;
- }
- log1("mark read @ %08x",wParam);
- dbe->flags|=DBEF_READ;
- DBWrite(lParam,dbe,sizeof(struct DBEvent));
- ret=(int)dbe->flags;
- if(dbc.ofsFirstUnreadEvent==(DWORD)lParam) {
- for(;;) {
- if(dbe->ofsNext==0) {
- dbc.ofsFirstUnreadEvent=0;
- dbc.timestampFirstUnread=0;
- break;
- }
- ofsThis=dbe->ofsNext;
- dbe=(struct DBEvent*)DBRead(ofsThis,sizeof(struct DBEvent),NULL);
- if(!(dbe->flags&(DBEF_READ|DBEF_SENT))) {
- dbc.ofsFirstUnreadEvent=ofsThis;
- dbc.timestampFirstUnread=dbe->timestamp;
- break;
- }
- }
- }
- DBWrite(wParam,&dbc,sizeof(struct DBContact));
- DBFlush(0);
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR GetEventContact(WPARAM wParam,LPARAM lParam)
-{
- int ret;
- struct DBEvent *dbe;
-
- EnterCriticalSection(&csDbAccess);
- dbe=(struct DBEvent*)DBRead(wParam,sizeof(struct DBEvent),NULL);
- if(dbe->signature!=DBEVENT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return -1;
- }
- while(!(dbe->flags&DBEF_FIRST))
- dbe=(struct DBEvent*)DBRead(dbe->ofsPrev,sizeof(struct DBEvent),NULL);
- ret=(INT_PTR)dbe->ofsPrev;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR FindFirstEvent(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBContact *dbc;
-
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) wParam=dbHeader.ofsUser;
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) ret=0;
- else ret=(INT_PTR)dbc->ofsFirstEvent;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR FindFirstUnreadEvent(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBContact *dbc;
-
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) wParam=dbHeader.ofsUser;
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) ret=0;
- else ret=(INT_PTR)dbc->ofsFirstUnreadEvent;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR FindLastEvent(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBContact *dbc;
-
- EnterCriticalSection(&csDbAccess);
- if(wParam==0) wParam=dbHeader.ofsUser;
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) ret=0;
- else ret=(INT_PTR)dbc->ofsLastEvent;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR FindNextEvent(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBEvent *dbe;
-
- EnterCriticalSection(&csDbAccess);
- dbe=(struct DBEvent*)DBRead(wParam,sizeof(struct DBEvent),NULL);
- if(dbe->signature!=DBEVENT_SIGNATURE) ret=0;
- else ret=(INT_PTR)dbe->ofsNext;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
-
-static INT_PTR FindPrevEvent(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR ret;
- struct DBEvent *dbe;
-
- EnterCriticalSection(&csDbAccess);
- dbe=(struct DBEvent*)DBRead(wParam,sizeof(struct DBEvent),NULL);
- if(dbe->signature!=DBEVENT_SIGNATURE) ret=0;
- else if(dbe->flags&DBEF_FIRST) ret=0;
- else ret=(INT_PTR)dbe->ofsPrev;
- LeaveCriticalSection(&csDbAccess);
- return ret;
-}
diff --git a/plugins/db3x_mmap/dbheaders.c b/plugins/db3x_mmap/dbheaders.c
deleted file mode 100644
index 6ae9b33002..0000000000
--- a/plugins/db3x_mmap/dbheaders.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-//the cache has not been loaded when these functions are used
-
-int CreateDbHeaders(HANDLE hFile)
-{
- struct DBContact user;
- DWORD bytesWritten;
-
- CopyMemory(dbHeader.signature,&dbSignature,sizeof(dbHeader.signature));
- dbHeader.version=DB_THIS_VERSION;
- dbHeader.ofsFileEnd=sizeof(struct DBHeader);
- dbHeader.slackSpace=0;
- dbHeader.contactCount=0;
- dbHeader.ofsFirstContact=0;
- dbHeader.ofsFirstModuleName=0;
- dbHeader.ofsUser=0;
- //create user
- dbHeader.ofsUser=dbHeader.ofsFileEnd;
- dbHeader.ofsFileEnd+=sizeof(struct DBContact);
- SetFilePointer(hFile,0,NULL,FILE_BEGIN);
- WriteFile(hFile,&dbHeader,sizeof(dbHeader),&bytesWritten,NULL);
- user.signature=DBCONTACT_SIGNATURE;
- user.ofsNext=0;
- user.ofsFirstSettings=0;
- user.eventCount=0;
- user.ofsFirstEvent=user.ofsLastEvent=0;
- SetFilePointer(hFile,dbHeader.ofsUser,NULL,FILE_BEGIN);
- WriteFile(hFile,&user,sizeof(struct DBContact),&bytesWritten,NULL);
- FlushFileBuffers(hFile);
- return 0;
-}
-
-int CheckDbHeaders(struct DBHeader * hdr)
-{
- if(memcmp(hdr->signature,&dbSignature,sizeof(hdr->signature))) return 1;
- if(hdr->version!=DB_THIS_VERSION) return 2;
- if(hdr->ofsUser==0) return 3;
- return 0;
-}
-
-int InitialiseDbHeaders(void)
-{
- return 0;
-}
diff --git a/plugins/db3x_mmap/dbmodulechain.c b/plugins/db3x_mmap/dbmodulechain.c
deleted file mode 100644
index 1af4226419..0000000000
--- a/plugins/db3x_mmap/dbmodulechain.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-static INT_PTR EnumModuleNames(WPARAM wParam,LPARAM lParam);
-
-typedef struct {
- char *name;
- DWORD ofs;
-} ModuleName;
-
-HANDLE hModHeap = NULL;
-static SortedList lMods, lOfs;
-
-static int ModCompare( ModuleName *mn1, ModuleName *mn2 )
-{
- return strcmp( mn1->name, mn2->name );
-}
-
-static int OfsCompare( ModuleName *mn1, ModuleName *mn2 )
-{
- return ( mn1->ofs - mn2->ofs );
-}
-
-void AddToList(char *name, DWORD len, DWORD ofs)
-{
- int index;
- ModuleName *mn = (ModuleName*)HeapAlloc(hModHeap,0,sizeof(ModuleName));
- mn->name = name;
- mn->ofs = ofs;
-
- if (li.List_GetIndex(&lMods,mn,&index))
- DatabaseCorruption( _T("%s (Module Name not unique)"));
-
- li.List_Insert(&lMods,mn,index);
-
- if (li.List_GetIndex(&lOfs,mn,&index))
- DatabaseCorruption( _T("%s (Module Offset not unique)"));
-
- li.List_Insert(&lOfs,mn,index);
-}
-
-
-int InitModuleNames(void)
-{
- struct DBModuleName *dbmn;
- DWORD ofsThis;
- int nameLen;
- char *mod;
-
- hModHeap=HeapCreate(0,0,0);
- lMods.sortFunc=ModCompare;
- lMods.increment=50;
- lOfs.sortFunc=OfsCompare;
- lOfs.increment=50;
-
- ofsThis=dbHeader.ofsFirstModuleName;
- dbmn=(struct DBModuleName*)DBRead(ofsThis,sizeof(struct DBModuleName),NULL);
- while(ofsThis) {
- if(dbmn->signature!=DBMODULENAME_SIGNATURE) DatabaseCorruption(NULL);
-
- nameLen=dbmn->cbName;
-
- mod = (char*)HeapAlloc(hModHeap,0,nameLen+1);
- CopyMemory(mod,DBRead(ofsThis+offsetof(struct DBModuleName,name),nameLen,NULL),nameLen);
- mod[nameLen] = 0;
-
- AddToList(mod, nameLen, ofsThis);
-
- ofsThis=dbmn->ofsNext;
- dbmn=(struct DBModuleName*)DBRead(ofsThis,sizeof(struct DBModuleName),NULL);
- }
- CreateServiceFunction(MS_DB_MODULES_ENUM,EnumModuleNames);
- return 0;
-}
-
-void UninitModuleNames(void)
-{
- HeapDestroy(hModHeap);
- li.List_Destroy(&lMods);
- li.List_Destroy(&lOfs);
-}
-
-static DWORD FindExistingModuleNameOfs(const char *szName)
-{
- static ModuleName *lastmn = NULL;
- ModuleName mn, *pmn;
- int index;
-
- mn.name = (char*)szName;
- mn.ofs = 0;
-
- if (lastmn && ModCompare(&mn,lastmn) == 0)
- return lastmn->ofs;
-
- if (li.List_GetIndex(&lMods,&mn,&index)) {
- pmn = (ModuleName*)lMods.items[index];
- lastmn = pmn;
- return pmn->ofs;
- }
-
- return 0;
-}
-
-//will create the offset if it needs to
-DWORD GetModuleNameOfs(const char *szName)
-{
- struct DBModuleName dbmn;
- int nameLen;
- DWORD ofsNew,ofsExisting;
- char *mod;
-
- ofsExisting=FindExistingModuleNameOfs(szName);
- if(ofsExisting) return ofsExisting;
-
- nameLen = (int)strlen(szName);
-
- //need to create the module name
- ofsNew=CreateNewSpace(nameLen+offsetof(struct DBModuleName,name));
- dbmn.signature=DBMODULENAME_SIGNATURE;
- dbmn.cbName=nameLen;
- dbmn.ofsNext=dbHeader.ofsFirstModuleName;
- dbHeader.ofsFirstModuleName=ofsNew;
- DBWrite(0,&dbHeader,sizeof(dbHeader));
- DBWrite(ofsNew,&dbmn,offsetof(struct DBModuleName,name));
- DBWrite(ofsNew+offsetof(struct DBModuleName,name),(PVOID)szName,nameLen);
- DBFlush(0);
-
- //add to cache
- mod = (char*)HeapAlloc(hModHeap,0,nameLen+1);
- strcpy(mod,szName);
- AddToList(mod, nameLen, ofsNew);
-
- //quit
- return ofsNew;
-}
-
-char *GetModuleNameByOfs(DWORD ofs)
-{
- static ModuleName *lastmn = NULL;
- ModuleName mn, *pmn;
- int index;
-
- if (lastmn && lastmn->ofs == ofs)
- return lastmn->name;
-
- mn.name = NULL;
- mn.ofs = ofs;
-
- if (li.List_GetIndex(&lOfs,&mn,&index)) {
- pmn = (ModuleName*)lOfs.items[index];
- lastmn = pmn;
- return pmn->name;
- }
-
- DatabaseCorruption(NULL);
- return NULL;
-}
-
-static INT_PTR EnumModuleNames(WPARAM wParam,LPARAM lParam)
-{
- int i;
- int ret;
- ModuleName *pmn;
- for(i = 0; i < lMods.realCount; i++) {
- pmn = (ModuleName *)lMods.items[i];
- ret=((DBMODULEENUMPROC)lParam)(pmn->name,pmn->ofs,wParam);
- if(ret) return ret;
- }
- return 0;
-}
diff --git a/plugins/db3x_mmap/dbsettings.c b/plugins/db3x_mmap/dbsettings.c
deleted file mode 100644
index 85b91b1b6c..0000000000
--- a/plugins/db3x_mmap/dbsettings.c
+++ /dev/null
@@ -1,1013 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-DWORD GetModuleNameOfs(const char *szName);
-DBCachedContactValueList* AddToCachedContactList(HANDLE hContact, int index);
-
-static int mirCp = CP_ACP;
-
-HANDLE hCacheHeap = NULL;
-SortedList lContacts = {0};
-HANDLE hLastCachedContact = NULL;
-static DBCachedContactValueList *LastVL = NULL;
-
-static SortedList lSettings={0}, lGlobalSettings={0}, lResidentSettings={0};
-static HANDLE hSettingChangeEvent = NULL;
-
-static DWORD GetSettingsGroupOfsByModuleNameOfs(struct DBContact *dbc,DWORD ofsModuleName)
-{
- struct DBContactSettings *dbcs;
- DWORD ofsThis;
-
- ofsThis=dbc->ofsFirstSettings;
- while(ofsThis) {
- dbcs=(struct DBContactSettings*)DBRead(ofsThis,sizeof(struct DBContactSettings),NULL);
- if(dbcs->signature!=DBCONTACTSETTINGS_SIGNATURE) DatabaseCorruption(NULL);
- if(dbcs->ofsModuleName==ofsModuleName)
- return ofsThis;
-
- ofsThis=dbcs->ofsNext;
- }
- return 0;
-}
-
-static DWORD __inline GetSettingValueLength(PBYTE pSetting)
-{
- if(pSetting[0]&DBVTF_VARIABLELENGTH) return 2+*(PWORD)(pSetting+1);
- return pSetting[0];
-}
-
-static char* InsertCachedSetting( const char* szName, size_t cbNameLen, int index )
-{
- char* newValue = (char*)HeapAlloc( hCacheHeap, 0, cbNameLen );
- *newValue = 0;
- strcpy(newValue+1,szName+1);
- li.List_Insert(&lSettings,newValue,index);
- return newValue;
-}
-
-static char* GetCachedSetting(const char *szModuleName,const char *szSettingName, int moduleNameLen, int settingNameLen)
-{
- static char *lastsetting = NULL;
- int index;
- char szFullName[512];
-
- strcpy(szFullName+1,szModuleName);
- szFullName[moduleNameLen+1]='/';
- strcpy(szFullName+moduleNameLen+2,szSettingName);
-
- if (lastsetting && strcmp(szFullName+1,lastsetting) == 0)
- return lastsetting;
-
- if (li.List_GetIndex(&lSettings,szFullName,&index))
- lastsetting = (char*)lSettings.items[index]+1;
- else
- lastsetting = InsertCachedSetting( szFullName, settingNameLen+moduleNameLen+3, index )+1;
-
- return lastsetting;
-}
-
-static void SetCachedVariant( DBVARIANT* s /* new */, DBVARIANT* d /* cached */ )
-{
- char* szSave = ( d->type == DBVT_UTF8 || d->type == DBVT_ASCIIZ ) ? d->pszVal : NULL;
-
- memcpy( d, s, sizeof( DBVARIANT ));
- if (( s->type == DBVT_UTF8 || s->type == DBVT_ASCIIZ ) && s->pszVal != NULL ) {
- if ( szSave != NULL )
- d->pszVal = (char*)HeapReAlloc(hCacheHeap,0,szSave,strlen(s->pszVal)+1);
- else
- d->pszVal = (char*)HeapAlloc(hCacheHeap,0,strlen(s->pszVal)+1);
- strcpy(d->pszVal,s->pszVal);
- }
- else if ( szSave != NULL )
- HeapFree(hCacheHeap,0,szSave);
-
-#ifdef DBLOGGING
- switch( d->type ) {
- case DBVT_BYTE: log1( "set cached byte: %d", d->bVal ); break;
- case DBVT_WORD: log1( "set cached word: %d", d->wVal ); break;
- case DBVT_DWORD: log1( "set cached dword: %d", d->dVal ); break;
- case DBVT_UTF8:
- case DBVT_ASCIIZ: log1( "set cached string: '%s'", d->pszVal ); break;
- default: log1( "set cached crap: %d", d->type ); break;
- }
-#endif
-}
-
-void FreeCachedVariant( DBVARIANT* V )
-{
- if (( V->type == DBVT_ASCIIZ || V->type == DBVT_UTF8 ) && V->pszVal != NULL )
- HeapFree(hCacheHeap,0,V->pszVal);
-}
-
-static DBVARIANT* GetCachedValuePtr( HANDLE hContact, char* szSetting, int bAllocate )
-{
- int index;
-
- if ( hContact == 0 ) {
- DBCachedGlobalValue Vtemp, *V;
- Vtemp.name = szSetting;
- if ( li.List_GetIndex(&lGlobalSettings,&Vtemp,&index)) {
- V = (DBCachedGlobalValue*)lGlobalSettings.items[index];
- if ( bAllocate == -1 ) {
- FreeCachedVariant( &V->value );
- li.List_Remove(&lGlobalSettings,index);
- HeapFree(hCacheHeap,0,V);
- return NULL;
- } }
- else {
- if ( bAllocate != 1 )
- return NULL;
-
- V = (DBCachedGlobalValue*)HeapAlloc(hCacheHeap,HEAP_ZERO_MEMORY,sizeof(DBCachedGlobalValue));
- V->name = szSetting;
- li.List_Insert(&lGlobalSettings,V,index);
- }
-
- return &V->value;
- }
- else {
- DBCachedContactValue *V, *V1;
- DBCachedContactValueList VLtemp,*VL;
-
- if (hLastCachedContact==hContact && LastVL) {
- VL = LastVL;
- }
- else {
- VLtemp.hContact=hContact;
-
- if ( !li.List_GetIndex(&lContacts,&VLtemp,&index))
- {
- if ( bAllocate != 1 )
- return NULL;
-
- VL = AddToCachedContactList(hContact,index);
- }
- else VL = (DBCachedContactValueList*)lContacts.items[index];
-
- LastVL = VL;
- hLastCachedContact = hContact;
- }
-
- for ( V = VL->first; V != NULL; V = V->next)
- if (V->name == szSetting)
- break;
-
- if ( V == NULL ) {
- if ( bAllocate != 1 )
- return NULL;
-
- V = HeapAlloc(hCacheHeap,HEAP_ZERO_MEMORY,sizeof(DBCachedContactValue));
- if (VL->last)
- VL->last->next = V;
- else
- VL->first = V;
- VL->last = V;
- V->name = szSetting;
- }
- else if ( bAllocate == -1 ) {
- LastVL = NULL;
- FreeCachedVariant(&V->value);
- if ( VL->first == V ) {
- VL->first = V->next;
- if (VL->last == V)
- VL->last = V->next; // NULL
- }
- else
- for ( V1 = VL->first; V1 != NULL; V1 = V1->next )
- if ( V1->next == V ) {
- V1->next = V->next;
- if (VL->last == V)
- VL->last = V1;
- break;
- }
- HeapFree(hCacheHeap,0,V);
- return NULL;
- }
-
- return &V->value;
-} }
-
-#define NeedBytes(n) if(bytesRemaining<(n)) pBlob=(PBYTE)DBRead(ofsBlobPtr,(n),&bytesRemaining)
-#define MoveAlong(n) {int x=n; pBlob+=(x); ofsBlobPtr+=(x); bytesRemaining-=(x);}
-#define VLT(n) ((n==DBVT_UTF8)?DBVT_ASCIIZ:n)
-static __inline int GetContactSettingWorker(HANDLE hContact,DBCONTACTGETSETTING *dbcgs,int isStatic)
-{
- struct DBContact *dbc;
- DWORD ofsModuleName,ofsContact,ofsSettingsGroup,ofsBlobPtr;
- int settingNameLen,moduleNameLen;
- int bytesRemaining;
- PBYTE pBlob;
- char* szCachedSettingName;
-
- if ((!dbcgs->szSetting) || (!dbcgs->szModule))
- return 1;
- // the db format can't tolerate more than 255 bytes of space (incl. null) for settings+module name
- settingNameLen=(int)strlen(dbcgs->szSetting);
- moduleNameLen=(int)strlen(dbcgs->szModule);
- if ( settingNameLen > 0xFE )
- {
- #ifdef _DEBUG
- OutputDebugStringA("GetContactSettingWorker() got a > 255 setting name length. \n");
- #endif
- return 1;
- }
- if ( moduleNameLen > 0xFE )
- {
- #ifdef _DEBUG
- OutputDebugStringA("GetContactSettingWorker() got a > 255 module name length. \n");
- #endif
- return 1;
- }
-
- EnterCriticalSection(&csDbAccess);
-
- log3("get [%08p] %s/%s",hContact,dbcgs->szModule,dbcgs->szSetting);
-
- szCachedSettingName = GetCachedSetting(dbcgs->szModule,dbcgs->szSetting,moduleNameLen,settingNameLen);
- {
- DBVARIANT* pCachedValue = GetCachedValuePtr( hContact, szCachedSettingName, 0 );
- if ( pCachedValue != NULL ) {
- if ( pCachedValue->type == DBVT_ASCIIZ || pCachedValue->type == DBVT_UTF8 ) {
- int cbOrigLen = dbcgs->pValue->cchVal;
- char* cbOrigPtr = dbcgs->pValue->pszVal;
- memcpy( dbcgs->pValue, pCachedValue, sizeof( DBVARIANT ));
- if ( isStatic ) {
- int cbLen = 0;
- if ( pCachedValue->pszVal != NULL )
- cbLen = (int)strlen( pCachedValue->pszVal );
-
- cbOrigLen--;
- dbcgs->pValue->pszVal = cbOrigPtr;
- if(cbLen<cbOrigLen) cbOrigLen=cbLen;
- CopyMemory(dbcgs->pValue->pszVal,pCachedValue->pszVal,cbOrigLen);
- dbcgs->pValue->pszVal[cbOrigLen]=0;
- dbcgs->pValue->cchVal=cbLen;
- }
- else {
- dbcgs->pValue->pszVal = (char*)mir_alloc(strlen(pCachedValue->pszVal)+1);
- strcpy(dbcgs->pValue->pszVal,pCachedValue->pszVal);
- }
- }
- else
- memcpy( dbcgs->pValue, pCachedValue, sizeof( DBVARIANT ));
-
- switch( dbcgs->pValue->type ) {
- case DBVT_BYTE: log1( "get cached byte: %d", dbcgs->pValue->bVal ); break;
- case DBVT_WORD: log1( "get cached word: %d", dbcgs->pValue->wVal ); break;
- case DBVT_DWORD: log1( "get cached dword: %d", dbcgs->pValue->dVal ); break;
- case DBVT_UTF8:
- case DBVT_ASCIIZ: log1( "get cached string: '%s'", dbcgs->pValue->pszVal); break;
- default: log1( "get cached crap: %d", dbcgs->pValue->type ); break;
- }
-
- LeaveCriticalSection(&csDbAccess);
- return ( pCachedValue->type == DBVT_DELETED ) ? 1 : 0;
- } }
-
- ofsModuleName=GetModuleNameOfs(dbcgs->szModule);
- if(hContact==NULL) ofsContact=dbHeader.ofsUser;
- else ofsContact=(DWORD)hContact;
- dbc=(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- ofsSettingsGroup=GetSettingsGroupOfsByModuleNameOfs(dbc,ofsModuleName);
- if(ofsSettingsGroup) {
- ofsBlobPtr=ofsSettingsGroup+offsetof(struct DBContactSettings,blob);
- pBlob = DBRead(ofsBlobPtr,sizeof(struct DBContactSettings),&bytesRemaining);
- while(pBlob[0]) {
- NeedBytes(1+settingNameLen);
- if(pBlob[0]==settingNameLen && !memcmp(pBlob+1,dbcgs->szSetting,settingNameLen)) {
- MoveAlong(1+settingNameLen);
- NeedBytes(5);
- if(isStatic && pBlob[0]&DBVTF_VARIABLELENGTH && VLT(dbcgs->pValue->type) != VLT(pBlob[0])) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- dbcgs->pValue->type=pBlob[0];
- switch(pBlob[0]) {
- case DBVT_DELETED: { /* this setting is deleted */
- dbcgs->pValue->type=DBVT_DELETED;
- LeaveCriticalSection(&csDbAccess);
- return 2;
- }
- case DBVT_BYTE: dbcgs->pValue->bVal=pBlob[1]; break;
- case DBVT_WORD: dbcgs->pValue->wVal=*(PWORD)(pBlob+1); break;
- case DBVT_DWORD: dbcgs->pValue->dVal=*(PDWORD)(pBlob+1); break;
- case DBVT_UTF8:
- case DBVT_ASCIIZ:
- NeedBytes(3+*(PWORD)(pBlob+1));
- if(isStatic) {
- dbcgs->pValue->cchVal--;
- if(*(PWORD)(pBlob+1)<dbcgs->pValue->cchVal) dbcgs->pValue->cchVal=*(PWORD)(pBlob+1);
- CopyMemory(dbcgs->pValue->pszVal,pBlob+3,dbcgs->pValue->cchVal);
- dbcgs->pValue->pszVal[dbcgs->pValue->cchVal]=0;
- dbcgs->pValue->cchVal=*(PWORD)(pBlob+1);
- }
- else {
- dbcgs->pValue->pszVal=(char*)mir_alloc(1+*(PWORD)(pBlob+1));
- CopyMemory(dbcgs->pValue->pszVal,pBlob+3,*(PWORD)(pBlob+1));
- dbcgs->pValue->pszVal[*(PWORD)(pBlob+1)]=0;
- }
- break;
- case DBVT_BLOB:
- NeedBytes(3+*(PWORD)(pBlob+1));
- if(isStatic) {
- if(*(PWORD)(pBlob+1)<dbcgs->pValue->cpbVal) dbcgs->pValue->cpbVal=*(PWORD)(pBlob+1);
- CopyMemory(dbcgs->pValue->pbVal,pBlob+3,dbcgs->pValue->cpbVal);
- }
- else {
- dbcgs->pValue->pbVal=(char*)mir_alloc(*(PWORD)(pBlob+1));
- CopyMemory(dbcgs->pValue->pbVal,pBlob+3,*(PWORD)(pBlob+1));
- }
- dbcgs->pValue->cpbVal=*(PWORD)(pBlob+1);
- break;
- }
-
- /**** add to cache **********************/
- if ( dbcgs->pValue->type != DBVT_BLOB )
- {
- DBVARIANT* pCachedValue = GetCachedValuePtr( hContact, szCachedSettingName, 1 );
- if ( pCachedValue != NULL )
- SetCachedVariant(dbcgs->pValue,pCachedValue);
- }
-
- LeaveCriticalSection(&csDbAccess);
- logg();
- return 0;
- }
- NeedBytes(1);
- MoveAlong(pBlob[0]+1);
- NeedBytes(3);
- MoveAlong(1+GetSettingValueLength(pBlob));
- NeedBytes(1);
- } }
-
- /**** add missing setting to cache **********************/
- if ( dbcgs->pValue->type != DBVT_BLOB )
- {
- DBVARIANT* pCachedValue = GetCachedValuePtr( hContact, szCachedSettingName, 1 );
- if ( pCachedValue != NULL )
- pCachedValue->type = DBVT_DELETED;
- }
-
- LeaveCriticalSection(&csDbAccess);
- logg();
- return 1;
-}
-
-static INT_PTR GetContactSetting(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTGETSETTING* dgs = ( DBCONTACTGETSETTING* )lParam;
- dgs->pValue->type = 0;
- if ( GetContactSettingWorker(( HANDLE )wParam, dgs, 0 ))
- return 1;
-
- if ( dgs->pValue->type == DBVT_UTF8 ) {
- WCHAR* tmp = NULL;
- char* p = NEWSTR_ALLOCA(dgs->pValue->pszVal);
- if ( mir_utf8decode( p, &tmp ) != NULL ) {
- BOOL bUsed = FALSE;
- int result = WideCharToMultiByte( mirCp, WC_NO_BEST_FIT_CHARS, tmp, -1, NULL, 0, NULL, &bUsed );
-
- mir_free( dgs->pValue->pszVal );
-
- if ( bUsed || result == 0 ) {
- dgs->pValue->type = DBVT_WCHAR;
- dgs->pValue->pwszVal = tmp;
- }
- else {
- dgs->pValue->type = DBVT_ASCIIZ;
- dgs->pValue->pszVal = mir_alloc( result );
- WideCharToMultiByte( mirCp, WC_NO_BEST_FIT_CHARS, tmp, -1, dgs->pValue->pszVal, result, NULL, NULL );
- mir_free( tmp );
- }
- }
- else {
- dgs->pValue->type = DBVT_ASCIIZ;
- mir_free( tmp );
- } }
-
- return 0;
-}
-
-static INT_PTR GetContactSettingStr(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTGETSETTING* dgs = (DBCONTACTGETSETTING*)lParam;
- int iSaveType = dgs->pValue->type;
-
- if ( GetContactSettingWorker(( HANDLE )wParam, dgs, 0 ))
- return 1;
-
- if ( iSaveType == 0 || iSaveType == dgs->pValue->type )
- return 0;
-
- if ( dgs->pValue->type != DBVT_ASCIIZ && dgs->pValue->type != DBVT_UTF8 )
- return 1;
-
- if ( iSaveType == DBVT_WCHAR ) {
- if ( dgs->pValue->type != DBVT_UTF8 ) {
- int len = MultiByteToWideChar( CP_ACP, 0, dgs->pValue->pszVal, -1, NULL, 0 );
- wchar_t* wszResult = ( wchar_t* )mir_alloc(( len+1 )*sizeof( wchar_t ));
- if ( wszResult == NULL )
- return 1;
-
- MultiByteToWideChar( CP_ACP, 0, dgs->pValue->pszVal, -1, wszResult, len );
- wszResult[ len ] = 0;
- mir_free( dgs->pValue->pszVal );
- dgs->pValue->pwszVal = wszResult;
- }
- else {
- char* savePtr = NEWSTR_ALLOCA(dgs->pValue->pszVal);
- mir_free( dgs->pValue->pszVal );
- if ( !mir_utf8decode( savePtr, &dgs->pValue->pwszVal ))
- return 1;
- }
- }
- else if ( iSaveType == DBVT_UTF8 ) {
- char* tmpBuf = mir_utf8encode( dgs->pValue->pszVal );
- if ( tmpBuf == NULL )
- return 1;
-
- mir_free( dgs->pValue->pszVal );
- dgs->pValue->pszVal = tmpBuf;
- }
- else if ( iSaveType == DBVT_ASCIIZ )
- mir_utf8decode( dgs->pValue->pszVal, NULL );
-
- dgs->pValue->type = iSaveType;
- return 0;
-}
-
-INT_PTR GetContactSettingStatic(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTGETSETTING* dgs = (DBCONTACTGETSETTING*)lParam;
- if ( GetContactSettingWorker(( HANDLE )wParam, dgs, 1 ))
- return 1;
-
- if ( dgs->pValue->type == DBVT_UTF8 ) {
- mir_utf8decode( dgs->pValue->pszVal, NULL );
- dgs->pValue->type = DBVT_ASCIIZ;
- }
-
- return 0;
-}
-
-static INT_PTR FreeVariant(WPARAM wParam,LPARAM lParam)
-{
- DBVARIANT *dbv=(DBVARIANT*)lParam;
- if ( dbv == 0 ) return 1;
- switch ( dbv->type ) {
- case DBVT_ASCIIZ:
- case DBVT_UTF8:
- case DBVT_WCHAR:
- {
- if ( dbv->pszVal ) mir_free(dbv->pszVal);
- dbv->pszVal=0;
- break;
- }
- case DBVT_BLOB:
- {
- if ( dbv->pbVal ) mir_free(dbv->pbVal);
- dbv->pbVal=0;
- break;
- }
- }
- dbv->type=0;
- return 0;
-}
-
-static INT_PTR SetSettingResident(WPARAM wParam,LPARAM lParam)
-{
- size_t cbSettingNameLen = strlen(( char* )lParam) + 2;
- if (cbSettingNameLen < 512)
- {
- char* szSetting;
- int idx;
- char szTemp[512];
- strcpy( szTemp+1, ( char* )lParam );
-
- EnterCriticalSection(&csDbAccess);
- if ( !li.List_GetIndex( &lSettings, szTemp, &idx ))
- szSetting = InsertCachedSetting( szTemp, cbSettingNameLen, idx );
- else
- szSetting = lSettings.items[ idx ];
-
- *szSetting = (char)wParam;
-
- if ( !li.List_GetIndex( &lResidentSettings, szSetting+1, &idx ))
- {
- if (wParam)
- li.List_Insert(&lResidentSettings,szSetting+1,idx);
- }
- else if (!wParam)
- li.List_Remove(&lResidentSettings,idx);
-
- LeaveCriticalSection(&csDbAccess);
- }
- return 0;
-}
-
-static INT_PTR WriteContactSetting(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTWRITESETTING *dbcws=(DBCONTACTWRITESETTING*)lParam;
- DBCONTACTWRITESETTING tmp;
- struct DBContact dbc;
- DWORD ofsModuleName;
- struct DBContactSettings dbcs;
- PBYTE pBlob;
- int settingNameLen=0;
- int moduleNameLen=0;
- int settingDataLen=0;
- int bytesRequired,bytesRemaining;
- DWORD ofsContact,ofsSettingsGroup,ofsBlobPtr;
-
- if (dbcws == NULL || dbcws->szSetting==NULL || dbcws->szModule==NULL )
- return 1;
-
- // the db format can't tolerate more than 255 bytes of space (incl. null) for settings+module name
- settingNameLen=(int)strlen(dbcws->szSetting);
- moduleNameLen=(int)strlen(dbcws->szModule);
- if ( settingNameLen > 0xFE )
- {
- #ifdef _DEBUG
- OutputDebugStringA("WriteContactSetting() got a > 255 setting name length. \n");
- #endif
- return 1;
- }
- if ( moduleNameLen > 0xFE )
- {
- #ifdef _DEBUG
- OutputDebugStringA("WriteContactSetting() got a > 255 module name length. \n");
- #endif
- return 1;
- }
-
- tmp = *dbcws;
-
- if (tmp.value.type == DBVT_WCHAR) {
- if (tmp.value.pszVal != NULL) {
- char* val = mir_utf8encodeW(tmp.value.pwszVal);
- if ( val == NULL )
- return 1;
-
- tmp.value.pszVal = ( char* )alloca( strlen( val )+1 );
- strcpy( tmp.value.pszVal, val );
- mir_free(val);
- tmp.value.type = DBVT_UTF8;
- }
- else return 1;
- }
-
- if(tmp.value.type!=DBVT_BYTE && tmp.value.type!=DBVT_WORD && tmp.value.type!=DBVT_DWORD && tmp.value.type!=DBVT_ASCIIZ && tmp.value.type!=DBVT_UTF8 && tmp.value.type!=DBVT_BLOB)
- return 1;
- if ((!tmp.szModule) || (!tmp.szSetting) || ((tmp.value.type == DBVT_ASCIIZ || tmp.value.type == DBVT_UTF8 )&& tmp.value.pszVal == NULL) || (tmp.value.type == DBVT_BLOB && tmp.value.pbVal == NULL) )
- return 1;
-
- // the db can not tolerate strings/blobs longer than 0xFFFF since the format writes 2 lengths
- switch( tmp.value.type ) {
- case DBVT_ASCIIZ: case DBVT_BLOB: case DBVT_UTF8:
- { size_t len = ( tmp.value.type != DBVT_BLOB ) ? strlen(tmp.value.pszVal) : tmp.value.cpbVal;
- if ( len >= 0xFFFF ) {
- #ifdef _DEBUG
- OutputDebugStringA("WriteContactSetting() writing huge string/blob, rejecting ( >= 0xFFFF ) \n");
- #endif
- return 1;
- }
- }
- }
-
- EnterCriticalSection(&csDbAccess);
- {
- char* szCachedSettingName = GetCachedSetting(tmp.szModule, tmp.szSetting, moduleNameLen, settingNameLen);
- if ( tmp.value.type != DBVT_BLOB ) {
- DBVARIANT* pCachedValue = GetCachedValuePtr((HANDLE)wParam, szCachedSettingName, 1);
- if ( pCachedValue != NULL ) {
- BOOL bIsIdentical = FALSE;
- if ( pCachedValue->type == tmp.value.type ) {
- switch(tmp.value.type) {
- case DBVT_BYTE: bIsIdentical = pCachedValue->bVal == tmp.value.bVal; break;
- case DBVT_WORD: bIsIdentical = pCachedValue->wVal == tmp.value.wVal; break;
- case DBVT_DWORD: bIsIdentical = pCachedValue->dVal == tmp.value.dVal; break;
- case DBVT_UTF8:
- case DBVT_ASCIIZ: bIsIdentical = strcmp( pCachedValue->pszVal, tmp.value.pszVal ) == 0; break;
- }
- if ( bIsIdentical ) {
- LeaveCriticalSection(&csDbAccess);
- return 0;
- }
- }
- SetCachedVariant(&tmp.value, pCachedValue);
- }
- if ( szCachedSettingName[-1] != 0 ) {
- LeaveCriticalSection(&csDbAccess);
- NotifyEventHooks(hSettingChangeEvent,wParam,(LPARAM)&tmp);
- return 0;
- }
- }
- else GetCachedValuePtr((HANDLE)wParam, szCachedSettingName, -1);
- }
-
- ofsModuleName=GetModuleNameOfs(tmp.szModule);
- if(wParam==0) ofsContact=dbHeader.ofsUser;
- else ofsContact=wParam;
-
- dbc=*(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- if(dbc.signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- log0("write setting");
- //make sure the module group exists
- ofsSettingsGroup=GetSettingsGroupOfsByModuleNameOfs(&dbc,ofsModuleName);
- if(ofsSettingsGroup==0) { //module group didn't exist - make it
- if(tmp.value.type&DBVTF_VARIABLELENGTH) {
- if(tmp.value.type==DBVT_ASCIIZ || tmp.value.type==DBVT_UTF8) bytesRequired=(int)strlen(tmp.value.pszVal)+2;
- else if(tmp.value.type==DBVT_BLOB) bytesRequired=tmp.value.cpbVal+2;
- }
- else bytesRequired=tmp.value.type;
- bytesRequired+=2+settingNameLen;
- bytesRequired+=(DB_SETTINGS_RESIZE_GRANULARITY-(bytesRequired%DB_SETTINGS_RESIZE_GRANULARITY))%DB_SETTINGS_RESIZE_GRANULARITY;
- ofsSettingsGroup=CreateNewSpace(bytesRequired+offsetof(struct DBContactSettings,blob));
- dbcs.signature=DBCONTACTSETTINGS_SIGNATURE;
- dbcs.ofsNext=dbc.ofsFirstSettings;
- dbcs.ofsModuleName=ofsModuleName;
- dbcs.cbBlob=bytesRequired;
- dbcs.blob[0]=0;
- dbc.ofsFirstSettings=ofsSettingsGroup;
- DBWrite(ofsContact,&dbc,sizeof(struct DBContact));
- DBWrite(ofsSettingsGroup,&dbcs,sizeof(struct DBContactSettings));
- ofsBlobPtr=ofsSettingsGroup+offsetof(struct DBContactSettings,blob);
- pBlob=(PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining);
- }
- else {
- dbcs=*(struct DBContactSettings*)DBRead(ofsSettingsGroup,sizeof(struct DBContactSettings),&bytesRemaining);
- //find if the setting exists
- ofsBlobPtr=ofsSettingsGroup+offsetof(struct DBContactSettings,blob);
- pBlob=(PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining);
- while(pBlob[0]) {
- NeedBytes(settingNameLen+1);
- if(pBlob[0]==settingNameLen && !memcmp(pBlob+1,tmp.szSetting,settingNameLen))
- break;
- NeedBytes(1);
- MoveAlong(pBlob[0]+1);
- NeedBytes(3);
- MoveAlong(1+GetSettingValueLength(pBlob));
- NeedBytes(1);
- }
- if(pBlob[0]) { //setting already existed, and up to end of name is in cache
- MoveAlong(1+settingNameLen);
- //if different type or variable length and length is different
- NeedBytes(3);
- if(pBlob[0]!=tmp.value.type || ((pBlob[0]==DBVT_ASCIIZ || pBlob[0]==DBVT_UTF8) && *(PWORD)(pBlob+1)!=strlen(tmp.value.pszVal)) || (pBlob[0]==DBVT_BLOB && *(PWORD)(pBlob+1)!=tmp.value.cpbVal)) {
- //bin it
- int nameLen,valLen;
- DWORD ofsSettingToCut;
- NeedBytes(3);
- nameLen=1+settingNameLen;
- valLen=1+GetSettingValueLength(pBlob);
- ofsSettingToCut=ofsBlobPtr-nameLen;
- MoveAlong(valLen);
- NeedBytes(1);
- while(pBlob[0]) {
- MoveAlong(pBlob[0]+1);
- NeedBytes(3);
- MoveAlong(1+GetSettingValueLength(pBlob));
- NeedBytes(1);
- }
- DBMoveChunk(ofsSettingToCut,ofsSettingToCut+nameLen+valLen,ofsBlobPtr+1-ofsSettingToCut);
- ofsBlobPtr-=nameLen+valLen;
- pBlob=(PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining);
- }
- else {
- //replace existing setting at pBlob
- MoveAlong(1); //skip data type
- switch(tmp.value.type) {
- case DBVT_BYTE: DBWrite(ofsBlobPtr,&tmp.value.bVal,1); break;
- case DBVT_WORD: DBWrite(ofsBlobPtr,&tmp.value.wVal,2); break;
- case DBVT_DWORD: DBWrite(ofsBlobPtr,&tmp.value.dVal,4); break;
- case DBVT_UTF8:
- case DBVT_ASCIIZ: DBWrite(ofsBlobPtr+2,tmp.value.pszVal,(int)strlen(tmp.value.pszVal)); break;
- case DBVT_BLOB: DBWrite(ofsBlobPtr+2,tmp.value.pbVal,tmp.value.cpbVal); break;
- }
- //quit
- DBFlush(1);
- LeaveCriticalSection(&csDbAccess);
- //notify
- NotifyEventHooks(hSettingChangeEvent,wParam,(LPARAM)&tmp);
- return 0;
- }
- }
- }
- //cannot do a simple replace, add setting to end of list
- //pBlob already points to end of list
- //see if it fits
- if(tmp.value.type&DBVTF_VARIABLELENGTH) {
- if(tmp.value.type==DBVT_ASCIIZ || tmp.value.type==DBVT_UTF8) bytesRequired=(int)strlen(tmp.value.pszVal)+2;
- else if(tmp.value.type==DBVT_BLOB) bytesRequired=tmp.value.cpbVal+2;
- }
- else bytesRequired=tmp.value.type;
- bytesRequired+=2+settingNameLen;
- bytesRequired+=ofsBlobPtr+1-(ofsSettingsGroup+offsetof(struct DBContactSettings,blob));
- if((DWORD)bytesRequired>dbcs.cbBlob) {
- //doesn't fit: move entire group
- struct DBContactSettings *dbcsPrev;
- DWORD ofsDbcsPrev,ofsNew;
-
- bytesRequired+=(DB_SETTINGS_RESIZE_GRANULARITY-(bytesRequired%DB_SETTINGS_RESIZE_GRANULARITY))%DB_SETTINGS_RESIZE_GRANULARITY;
- //find previous group to change its offset
- ofsDbcsPrev=dbc.ofsFirstSettings;
- if(ofsDbcsPrev==ofsSettingsGroup) ofsDbcsPrev=0;
- else {
- dbcsPrev=(struct DBContactSettings*)DBRead(ofsDbcsPrev,sizeof(struct DBContactSettings),NULL);
- while(dbcsPrev->ofsNext!=ofsSettingsGroup) {
- if(dbcsPrev->ofsNext==0) DatabaseCorruption(NULL);
- ofsDbcsPrev=dbcsPrev->ofsNext;
- dbcsPrev=(struct DBContactSettings*)DBRead(ofsDbcsPrev,sizeof(struct DBContactSettings),NULL);
- }
- }
-
- //create the new one
- ofsNew=ReallocSpace(ofsSettingsGroup, dbcs.cbBlob+offsetof(struct DBContactSettings,blob), bytesRequired+offsetof(struct DBContactSettings,blob));
-
- dbcs.cbBlob=bytesRequired;
-
- DBWrite(ofsNew,&dbcs,offsetof(struct DBContactSettings,blob));
- if(ofsDbcsPrev==0) {
- dbc.ofsFirstSettings=ofsNew;
- DBWrite(ofsContact,&dbc,sizeof(struct DBContact));
- }
- else {
- dbcsPrev=(struct DBContactSettings*)DBRead(ofsDbcsPrev,sizeof(struct DBContactSettings),NULL);
- dbcsPrev->ofsNext=ofsNew;
- DBWrite(ofsDbcsPrev,dbcsPrev,offsetof(struct DBContactSettings,blob));
- }
- ofsBlobPtr+=ofsNew-ofsSettingsGroup;
- ofsSettingsGroup=ofsNew;
- pBlob=(PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining);
- }
- //we now have a place to put it and enough space: make it
- DBWrite(ofsBlobPtr,&settingNameLen,1);
- DBWrite(ofsBlobPtr+1,(PVOID)tmp.szSetting,settingNameLen);
- MoveAlong(1+settingNameLen);
- DBWrite(ofsBlobPtr,&tmp.value.type,1);
- MoveAlong(1);
- switch(tmp.value.type) {
- case DBVT_BYTE: DBWrite(ofsBlobPtr,&tmp.value.bVal,1); MoveAlong(1); break;
- case DBVT_WORD: DBWrite(ofsBlobPtr,&tmp.value.wVal,2); MoveAlong(2); break;
- case DBVT_DWORD: DBWrite(ofsBlobPtr,&tmp.value.dVal,4); MoveAlong(4); break;
- case DBVT_UTF8:
- case DBVT_ASCIIZ:
- { int len=(int)strlen(tmp.value.pszVal);
- DBWrite(ofsBlobPtr,&len,2);
- DBWrite(ofsBlobPtr+2,tmp.value.pszVal,len);
- MoveAlong(2+len);
- }
- break;
- case DBVT_BLOB:
- DBWrite(ofsBlobPtr,&tmp.value.cpbVal,2) ;
- DBWrite(ofsBlobPtr+2,tmp.value.pbVal,tmp.value.cpbVal);
- MoveAlong(2+tmp.value.cpbVal);
- break;
- }
- { BYTE zero=0;
- DBWrite(ofsBlobPtr,&zero,1);
- }
- //quit
- DBFlush(1);
- LeaveCriticalSection(&csDbAccess);
- //notify
- NotifyEventHooks(hSettingChangeEvent, wParam, (LPARAM)&tmp );
- return 0;
-}
-
-static INT_PTR DeleteContactSetting(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTGETSETTING *dbcgs=(DBCONTACTGETSETTING*)lParam;
- struct DBContact *dbc;
- DWORD ofsModuleName,ofsSettingsGroup,ofsBlobPtr;
- PBYTE pBlob;
- int settingNameLen,moduleNameLen,bytesRemaining;
- char* szCachedSettingName;
- WPARAM saveWparam = wParam;
-
- if ((!dbcgs->szModule) || (!dbcgs->szSetting))
- return 1;
- // the db format can't tolerate more than 255 bytes of space (incl. null) for settings+module name
- settingNameLen=(int)strlen(dbcgs->szSetting);
- moduleNameLen=(int)strlen(dbcgs->szModule);
- if ( settingNameLen > 0xFE )
- {
- #ifdef _DEBUG
- OutputDebugStringA("DeleteContactSetting() got a > 255 setting name length. \n");
- #endif
- return 1;
- }
- if ( moduleNameLen > 0xFE )
- {
- #ifdef _DEBUG
- OutputDebugStringA("DeleteContactSetting() got a > 255 module name length. \n");
- #endif
- return 1;
- }
-
- EnterCriticalSection(&csDbAccess);
- ofsModuleName=GetModuleNameOfs(dbcgs->szModule);
- if(wParam==0) wParam=dbHeader.ofsUser;
-
- dbc=(struct DBContact*)DBRead(wParam,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- //make sure the module group exists
- ofsSettingsGroup=GetSettingsGroupOfsByModuleNameOfs(dbc,ofsModuleName);
- if(ofsSettingsGroup==0) {
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- //find if the setting exists
- ofsBlobPtr=ofsSettingsGroup+offsetof(struct DBContactSettings,blob);
- pBlob=(PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining);
- while(pBlob[0]) {
- NeedBytes(settingNameLen+1);
- if(pBlob[0]==settingNameLen && !memcmp(pBlob+1,dbcgs->szSetting,settingNameLen))
- break;
- NeedBytes(1);
- MoveAlong(pBlob[0]+1);
- NeedBytes(3);
- MoveAlong(1+GetSettingValueLength(pBlob));
- NeedBytes(1);
- }
- if(!pBlob[0]) { //setting didn't exist
- LeaveCriticalSection(&csDbAccess);
- return 1;
- }
- { //bin it
- int nameLen,valLen;
- DWORD ofsSettingToCut;
- MoveAlong(1+settingNameLen);
- NeedBytes(3);
- nameLen=1+settingNameLen;
- valLen=1+GetSettingValueLength(pBlob);
- ofsSettingToCut=ofsBlobPtr-nameLen;
- MoveAlong(valLen);
- NeedBytes(1);
- while(pBlob[0]) {
- MoveAlong(pBlob[0]+1);
- NeedBytes(3);
- MoveAlong(1+GetSettingValueLength(pBlob));
- NeedBytes(1);
- }
- DBMoveChunk(ofsSettingToCut,ofsSettingToCut+nameLen+valLen,ofsBlobPtr+1-ofsSettingToCut);
- }
-
- szCachedSettingName = GetCachedSetting(dbcgs->szModule,dbcgs->szSetting,moduleNameLen,settingNameLen);
- GetCachedValuePtr((HANDLE)saveWparam, szCachedSettingName, -1 );
-
- //quit
- DBFlush(1);
- LeaveCriticalSection(&csDbAccess);
- { //notify
- DBCONTACTWRITESETTING dbcws={0};
- dbcws.szModule=dbcgs->szModule;
- dbcws.szSetting=dbcgs->szSetting;
- dbcws.value.type=DBVT_DELETED;
- NotifyEventHooks(hSettingChangeEvent,saveWparam,(LPARAM)&dbcws);
- }
- return 0;
-}
-
-static INT_PTR EnumContactSettings(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTENUMSETTINGS *dbces=(DBCONTACTENUMSETTINGS*)lParam;
- struct DBContact *dbc;
- DWORD ofsModuleName,ofsContact,ofsBlobPtr;
- int bytesRemaining, result;
- PBYTE pBlob;
- char szSetting[256];
-
- if (!dbces->szModule)
- return -1;
-
- EnterCriticalSection(&csDbAccess);
-
- ofsModuleName=GetModuleNameOfs(dbces->szModule);
- if(wParam==0) ofsContact=dbHeader.ofsUser;
- else ofsContact=wParam;
- dbc=(struct DBContact*)DBRead(ofsContact,sizeof(struct DBContact),NULL);
- if(dbc->signature!=DBCONTACT_SIGNATURE) {
- LeaveCriticalSection(&csDbAccess);
- return -1;
- }
- dbces->ofsSettings=GetSettingsGroupOfsByModuleNameOfs(dbc,ofsModuleName);
- if(!dbces->ofsSettings) {
- LeaveCriticalSection(&csDbAccess);
- return -1;
- }
- ofsBlobPtr=dbces->ofsSettings+offsetof(struct DBContactSettings,blob);
- pBlob=(PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining);
- if(pBlob[0]==0) {
- LeaveCriticalSection(&csDbAccess);
- return -1;
- }
- result = 0;
- while(pBlob[0]) {
- NeedBytes(1);
- NeedBytes(1+pBlob[0]);
- CopyMemory(szSetting,pBlob+1,pBlob[0]); szSetting[pBlob[0]]=0;
- result = (dbces->pfnEnumProc)(szSetting,dbces->lParam);
- MoveAlong(1+pBlob[0]);
- NeedBytes(3);
- MoveAlong(1+GetSettingValueLength(pBlob));
- NeedBytes(1);
- }
- LeaveCriticalSection(&csDbAccess);
- return result;
-}
-
-static INT_PTR EnumResidentSettings(WPARAM wParam,LPARAM lParam)
-{
- int i;
- int ret;
- for(i = 0; i < lResidentSettings.realCount; i++) {
- ret=((DBMODULEENUMPROC)lParam)(lResidentSettings.items[i],0,wParam);
- if(ret) return ret;
- }
- return 0;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-//
-// Module initialization procedure
-
-static int stringCompare( DBCachedSettingName* p1, DBCachedSettingName* p2 )
-{
- return strcmp( p1->name, p2->name );
-}
-
-static int stringCompare2( char* p1, char* p2 )
-{
- return strcmp( p1, p2);
-}
-
-int InitSettings(void)
-{
- CreateServiceFunction(MS_DB_CONTACT_GETSETTING,GetContactSetting);
- CreateServiceFunction(MS_DB_CONTACT_GETSETTING_STR,GetContactSettingStr);
- CreateServiceFunction(MS_DB_CONTACT_GETSETTINGSTATIC,GetContactSettingStatic);
- CreateServiceFunction(MS_DB_CONTACT_FREEVARIANT,FreeVariant);
- CreateServiceFunction(MS_DB_CONTACT_WRITESETTING,WriteContactSetting);
- CreateServiceFunction(MS_DB_CONTACT_DELETESETTING,DeleteContactSetting);
- CreateServiceFunction(MS_DB_CONTACT_ENUMSETTINGS,EnumContactSettings);
- CreateServiceFunction(MS_DB_SETSETTINGRESIDENT,SetSettingResident);
- CreateServiceFunction("DB/ResidentSettings/Enum",EnumResidentSettings);
-
- hSettingChangeEvent=CreateHookableEvent(ME_DB_CONTACT_SETTINGCHANGED);
-
- hCacheHeap=HeapCreate(0,0,0);
- lSettings.sortFunc=stringCompare;
- lSettings.increment=100;
- lContacts.sortFunc=HandleKeySort;
- lContacts.increment=50;
- lGlobalSettings.sortFunc=HandleKeySort;
- lGlobalSettings.increment=50;
- lResidentSettings.sortFunc=stringCompare2;
- lResidentSettings.increment=50;
-
- mirCp = CallService( MS_LANGPACK_GETCODEPAGE, 0, 0 );
- return 0;
-}
-
-void UninitSettings(void)
-{
- HeapDestroy(hCacheHeap);
- li.List_Destroy(&lContacts);
- li.List_Destroy(&lSettings);
- li.List_Destroy(&lGlobalSettings);
- li.List_Destroy(&lResidentSettings);
-}
diff --git a/plugins/db3x_mmap/encrypt.c b/plugins/db3x_mmap/encrypt.c
deleted file mode 100644
index a42d79eae2..0000000000
--- a/plugins/db3x_mmap/encrypt.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-//VERY VERY VERY BASIC ENCRYPTION FUNCTION
-
-
-void Encrypt(char*msg,BOOL up)
-{
- int i;
- int jump;
- if (up)
- {
- jump=5;
- }
- else
- {
- jump=-5;
- }
-
- for (i=0;msg[i];i++)
- {
- msg[i]=msg[i]+jump;
- }
-
-}
-
-static INT_PTR EncodeString(WPARAM wParam,LPARAM lParam)
-{
- Encrypt((char*)lParam,TRUE);
- return 0;
-}
-
-static INT_PTR DecodeString(WPARAM wParam,LPARAM lParam)
-{
- Encrypt((char*)lParam,FALSE);
- return 0;
-}
-
-int InitCrypt(void)
-{
- CreateServiceFunction(MS_DB_CRYPT_ENCODESTRING,EncodeString);
- CreateServiceFunction(MS_DB_CRYPT_DECODESTRING,DecodeString);
- return 0;
-}
diff --git a/plugins/db3x_mmap/encryption.h b/plugins/db3x_mmap/encryption.h
deleted file mode 100644
index 73c2d7e13a..0000000000
--- a/plugins/db3x_mmap/encryption.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Miranda ICQ: the free icq client for MS Windows
-Copyright (C) 2000-2 Richard Hughes, Roland Rabien & Tristan Van de Vreede
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-#ifndef MODULAR
-#include <windows.h>
-
-void Encrypt(char*msg,BOOL up);
-#endif \ No newline at end of file
diff --git a/plugins/db3x_mmap/init.c b/plugins/db3x_mmap/init.c
deleted file mode 100644
index 452c315d29..0000000000
--- a/plugins/db3x_mmap/init.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2003 Miranda ICQ/IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "commonheaders.h"
-
-struct MM_INTERFACE mmi;
-struct LIST_INTERFACE li;
-struct UTF8_INTERFACE utfi;
-int hLangpack;
-
-extern char szDbPath[MAX_PATH];
-
-static PLUGININFOEX pluginInfo = {
- sizeof(PLUGININFOEX),
- "Miranda mmap database driver",
- __VERSION_DWORD,
- "Provides Miranda database support: global settings, contacts, history, settings per contact.",
- "Miranda-IM project",
- "bio@msx.ru; ghazan@miranda-im.org",
- "Copyright 2000-2011 Miranda IM project",
- "",
- UNICODE_AWARE,
- DEFMOD_DB,
- {0xf7a6b27c, 0x9d9c, 0x4a42, { 0xbe, 0x86, 0xa4, 0x48, 0xae, 0x10, 0x91, 0x61 }} //{F7A6B27C-9D9C-4a42-BE86-A448AE109161}
-};
-
-HINSTANCE g_hInst=NULL;
-PLUGINLINK *pluginLink;
-
-static int getCapability( int flag )
-{
- return 0;
-}
-
-// returns 0 if the profile is created, EMKPRF*
-static int makeDatabase(char * profile, int * error)
-{
- HANDLE hFile = CreateFileA(profile, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
- if ( hFile != INVALID_HANDLE_VALUE ) {
- CreateDbHeaders(hFile);
- CloseHandle(hFile);
- return 0;
- }
- if ( error != NULL ) *error=EMKPRF_CREATEFAILED;
- return 1;
-}
-
-// returns 0 if the given profile has a valid header
-static int grokHeader( char * profile, int * error )
-{
- int rc=1;
- int chk=0;
- struct DBHeader hdr;
- HANDLE hFile = INVALID_HANDLE_VALUE;
- DWORD dummy=0;
-
- hFile = CreateFileA(profile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
- if ( hFile == INVALID_HANDLE_VALUE ) {
- if ( error != NULL ) *error=EGROKPRF_CANTREAD;
- return 1;
- }
- // read the header, which can fail (for various reasons)
- if ( !ReadFile(hFile, &hdr, sizeof(struct DBHeader), &dummy, NULL) ) {
- if ( error != NULL) *error=EGROKPRF_CANTREAD;
- CloseHandle(hFile);
- return 1;
- }
- chk=CheckDbHeaders(&hdr);
- if ( chk == 0 ) {
- // all the internal tests passed, hurrah
- rc=0;
- if ( error != NULL ) *error=0;
- } else {
- // didn't pass at all, or some did.
- switch ( chk ) {
- case 1:
- {
- // "Miranda ICQ DB" wasn't present
- if ( error != NULL ) *error = EGROKPRF_UNKHEADER;
- break;
- }
- case 2:
- {
- // header was present, but version information newer
- if ( error != NULL ) *error= EGROKPRF_VERNEWER;
- break;
- }
- case 3:
- {
- // header/version OK, internal data missing
- if ( error != NULL ) *error=EGROKPRF_DAMAGED;
- break;
- }
- } // switch
- } //if
- CloseHandle(hFile);
- return rc;
-}
-
-// returns 0 if all the APIs are injected otherwise, 1
-static int LoadDatabase( char * profile, void * plink )
-{
- PLUGINLINK *link = plink;
-#ifdef _DEBUG
- _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
-#endif
- // don't need thread notifications
- strncpy(szDbPath, profile, sizeof(szDbPath));
-
- // this is like Load()'s pluginLink
- pluginLink=link;
-
- // set the memory, lists & UTF8 manager
- mir_getLI( &li );
- mir_getMMI( &mmi );
- mir_getUTFI( &utfi );
- mir_getLP( &pluginInfo );
-
- // inject all APIs and hooks into the core
- return LoadDatabaseModule();
-}
-
-static int UnloadDatabase(int wasLoaded)
-{
- if ( !wasLoaded) return 0;
- UnloadDatabaseModule();
- return 0;
-}
-
-static int getFriendlyName( char * buf, size_t cch, int shortName )
-{
- strncpy(buf,shortName ? "db3x mmap driver" : "db3x mmap database support",cch);
- return 0;
-}
-
-static DATABASELINK dblink = {
- sizeof(DATABASELINK),
- getCapability,
- getFriendlyName,
- makeDatabase,
- grokHeader,
- LoadDatabase,
- UnloadDatabase,
-};
-
-BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD dwReason, LPVOID reserved)
-{
- g_hInst=hInstDLL;
- return TRUE;
-}
-
-__declspec(dllexport) DATABASELINK* DatabasePluginInfo(void * reserved)
-{
- return &dblink;
-}
-
-__declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD mirandaVersion)
-{
- if ( mirandaVersion < MIRANDA_VERSION_CORE ) {
- MessageBox( NULL, _T("The db3x_mmap plugin cannot be loaded. It requires Miranda IM 0.7.0.0 or later."), _T("db3x_mmap Plugin"), MB_OK|MB_ICONWARNING|MB_SETFOREGROUND|MB_TOPMOST );
- return NULL;
- }
- return &pluginInfo;
-}
-
-static const MUUID interfaces[] = {MIID_DATABASE, MIID_LAST};
-__declspec(dllexport) const MUUID* MirandaPluginInterfaces(void)
-{
- return interfaces;
-}
-
-int __declspec(dllexport) Load(PLUGINLINK * link)
-{
- return 1;
-}
-
-int __declspec(dllexport) Unload(void)
-{
- return 0;
-}
diff --git a/plugins/db3x_mmap/resource.h b/plugins/db3x_mmap/resource.h
deleted file mode 100644
index 96abbfff99..0000000000
--- a/plugins/db3x_mmap/resource.h
+++ /dev/null
@@ -1,30 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by resource.rc
-//
-#define IDC_NOTOALL 3
-#define IDD_INSTALLINI 235
-#define IDD_WARNINICHANGE 236
-#define IDD_INIIMPORTDONE 237
-#define IDC_ININAME 1333
-#define IDC_VIEWINI 1334
-#define IDC_SECURITYINFO 1335
-#define IDC_SETTINGNAME 1336
-#define IDC_NEWVALUE 1337
-#define IDC_WARNNOMORE 1338
-#define IDC_DELETE 1339
-#define IDC_RECYCLE 1340
-#define IDC_NEWNAME 1341
-#define IDC_MOVE 1342
-#define IDC_LEAVE 1343
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 269
-#define _APS_NEXT_COMMAND_VALUE 40018
-#define _APS_NEXT_CONTROL_VALUE 1657
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/plugins/db3x_mmap/resource.rc b/plugins/db3x_mmap/resource.rc
deleted file mode 100644
index 47b87e4156..0000000000
--- a/plugins/db3x_mmap/resource.rc
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "db3x_mmap.rc"
-#include "version.rc"
diff --git a/plugins/db3x_mmap/version.h b/plugins/db3x_mmap/version.h
deleted file mode 100644
index 826d9fdefb..0000000000
--- a/plugins/db3x_mmap/version.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "../../include/m_version.h"
-
-#define __FILEVERSION_STRING MIRANDA_VERSION_FILEVERSION
-#define __VERSION_STRING MIRANDA_VERSION_STRING
-#define __VERSION_DWORD MIRANDA_VERSION_DWORD
diff --git a/plugins/db3x_mmap/version.rc b/plugins/db3x_mmap/version.rc
deleted file mode 100644
index 4cb51b5037..0000000000
--- a/plugins/db3x_mmap/version.rc
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#include <windows.h>
-#include "version.h"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION __FILEVERSION_STRING
- PRODUCTVERSION __FILEVERSION_STRING
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "041904b0"
- BEGIN
- VALUE "FileDescription", "Miranda IM Mmap DataBase Engine 3x"
- VALUE "FileVersion", __VERSION_STRING
- VALUE "LegalCopyright", "Copyright (C) 2000-2007"
- VALUE "OriginalFilename", "dbx_mmap.dll"
- VALUE "ProductName", "Miranda IM Mmap DataBase Engine 3x"
- VALUE "ProductVersion", __VERSION_STRING
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x419, 1200
- END
-END