summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin10/lib/mir_core.libbin32224 -> 34880 bytes
-rw-r--r--bin10/lib/mir_core64.libbin29424 -> 31852 bytes
-rw-r--r--bin11/lib/mir_core.libbin32224 -> 34880 bytes
-rw-r--r--bin11/lib/mir_core64.libbin29424 -> 31852 bytes
-rw-r--r--include/delphi/m_core.inc348
-rw-r--r--include/delphi/m_database.inc31
-rw-r--r--include/m_core.h35
-rw-r--r--include/m_database.h27
-rw-r--r--include/m_protosvc.h4
-rw-r--r--src/mir_core/db.cpp63
-rw-r--r--src/mir_core/mir_core.def12
11 files changed, 317 insertions, 203 deletions
diff --git a/bin10/lib/mir_core.lib b/bin10/lib/mir_core.lib
index 76c63681c7..93fe2e26e3 100644
--- a/bin10/lib/mir_core.lib
+++ b/bin10/lib/mir_core.lib
Binary files differ
diff --git a/bin10/lib/mir_core64.lib b/bin10/lib/mir_core64.lib
index db6ff56939..4e05648914 100644
--- a/bin10/lib/mir_core64.lib
+++ b/bin10/lib/mir_core64.lib
Binary files differ
diff --git a/bin11/lib/mir_core.lib b/bin11/lib/mir_core.lib
index 44aa9504ae..875cf1ce32 100644
--- a/bin11/lib/mir_core.lib
+++ b/bin11/lib/mir_core.lib
Binary files differ
diff --git a/bin11/lib/mir_core64.lib b/bin11/lib/mir_core64.lib
index bf5c841786..bcff920f11 100644
--- a/bin11/lib/mir_core64.lib
+++ b/bin11/lib/mir_core64.lib
Binary files differ
diff --git a/include/delphi/m_core.inc b/include/delphi/m_core.inc
index 3d29c24b77..cff99d5b69 100644
--- a/include/delphi/m_core.inc
+++ b/include/delphi/m_core.inc
@@ -32,10 +32,10 @@ const
// Parse ptszCmdLine. it must NOT be a constant (content will be patched)
procedure CmdLine_Parse(ptszCmdLine:PWideChar); stdcall;
- external CoreDLL name 'CmdLine_Parse';
+ external CoreDLL name 'CmdLine_Parse';
function CmdLine_GetOption(ptszParameter:PWideChar):PWideChar; stdcall;
- external CoreDLL name 'CmdLine_GetOption';
+ external CoreDLL name 'CmdLine_GetOption';
///////////////////////////////////////////////////////////////////////////////
// database functions
@@ -74,82 +74,132 @@ type
);
end;
+const
+ DBEF_FIRST = 1; // internally only, do not use
+ DBEF_SENT = 2; // if set, the event was sent by the user, otherwise it was received
+ DBEF_READ = 4; // event has been read by the user -- only needed for history
+ DBEF_RTL = 8; // event contains the right-to-left aligned text
+ DBEF_UTF = 16; // event contains a text in utf-8
+
+ EVENTTYPE_MESSAGE = 0;
+ EVENTTYPE_URL = 1;
+ EVENTTYPE_CONTACTS = 2; // v0.1.2.2+
+ EVENTTYPE_ADDED = 1000; // v0.1.1.0+: these used to be module-
+ EVENTTYPE_AUTHREQUEST = 1001; // specific codes, hence the module-
+ EVENTTYPE_FILE = 1002; // specific limit has been raised to 2000
+
+type
+ PDBEVENTINFO = ^TDBEVENTINFO;
+ TDBEVENTINFO = record
+ cbSize : int; // size of the structure
+ szModule : PAnsiChar; // module that 'owns' this event and controls the data format
+ timestamp: DWORD; // timestamp in UNIX time
+ flags : DWORD; // the DBEF_* flags above
+ eventType: WORD; // event type, such as message, can be module defined
+ cbBlob : DWORD; // size in bytes of pBlob^
+ pBlob : PByte; // pointer to buffer containing the module defined event data
+ end;
+
+function db_event_add(hContact:THANDLE; dbei:PDBEVENTINFO):THANDLE; stdcall;
+ external CoreDLL name 'db_event_add';
+function db_event_count(hContact:THANDLE):int; stdcall;
+ external CoreDLL name 'db_event_count';
+function db_event_delete(hContact:THANDLE; hDbEvent:THANDLE):int; stdcall;
+ external CoreDLL name 'db_event_delete';
+function db_event_first(hContact:THANDLE):THANDLE; stdcall;
+ external CoreDLL name 'db_event_first';
+function db_event_firstUnread(hContact:THANDLE):THANDLE; stdcall;
+ external CoreDLL name 'db_event_firstUnread';
+function db_event_get(hDbEvent:THANDLE; dbei:PDBEVENTINFO):int; stdcall;
+ external CoreDLL name 'db_event_get';
+function db_event_getBlobSize(hDbEvent:THANDLE):int; stdcall;
+ external CoreDLL name 'db_event_getBlobSize';
+function db_event_getContact(hDbEvent:THANDLE):THANDLE; stdcall;
+ external CoreDLL name 'db_event_getContact';
+function db_event_last(hDbEvent:THANDLE):THANDLE; stdcall;
+ external CoreDLL name 'db_event_last';
+function db_event_markRead(hContact, hDbEvent:THANDLE):int; stdcall;
+ external CoreDLL name 'db_event_markRead';
+function db_event_next(hDbEvent:THANDLE):THANDLE; stdcall;
+ external CoreDLL name 'db_event_next';
+function db_event_prev(hDbEvent:THANDLE):THANDLE; stdcall;
+ external CoreDLL name 'db_event_prev';
function db_free(dbv:PDBVARIANT):int_ptr; stdcall;
external CoreDLL name 'db_free';
function db_unset(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar):int_ptr; stdcall;
- external CoreDLL name 'db_unset';
+ external CoreDLL name 'db_unset';
function db_find_first(const szModule:pAnsiChar=nil):THANDLE; stdcall;
external CoreDLL name 'db_find_first';
function db_find_next(hContact:THANDLE; const szModule:pAnsiChar=nil):THANDLE; stdcall;
- external CoreDLL name 'db_find_next';
+ external CoreDLL name 'db_find_next';
function db_get_b(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; errorValue:int):int; stdcall;
- external CoreDLL name 'db_get_b';
+ external CoreDLL name 'db_get_b';
function db_get_w(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; errorValue:int):int; stdcall;
- external CoreDLL name 'db_get_w';
+ external CoreDLL name 'db_get_w';
function db_get_dw(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; errorValue:dword):dword; stdcall;
- external CoreDLL name 'db_get_dw';
+ external CoreDLL name 'db_get_dw';
function db_get(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; dbv:PDBVARIANT):int_ptr; stdcall;
- external CoreDLL name 'db_get';
+ external CoreDLL name 'db_get';
function db_get_s(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; dbv:PDBVARIANT; const nType:int=DBVT_ASCIIZ):int_ptr; stdcall;
- external CoreDLL name 'db_get_s';
+ external CoreDLL name 'db_get_s';
function db_get_sa(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar):pAnsiChar; stdcall;
- external CoreDLL name 'db_get_sa';
+ external CoreDLL name 'db_get_sa';
function db_get_wsa(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar):pWideChar; stdcall;
- external CoreDLL name 'db_get_wsa';
+ external CoreDLL name 'db_get_wsa';
function db_set_b(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:byte):int_ptr; stdcall;
- external CoreDLL name 'db_set_b';
+ external CoreDLL name 'db_set_b';
function db_set_w(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:word):int_ptr; stdcall;
- external CoreDLL name 'db_set_w';
+ external CoreDLL name 'db_set_w';
function db_set_dw(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:dword):int_ptr; stdcall;
- external CoreDLL name 'db_set_dw';
+ external CoreDLL name 'db_set_dw';
function db_set_s(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; const val:pAnsiChar):int_ptr; stdcall;
- external CoreDLL name 'db_set_s';
+ external CoreDLL name 'db_set_s';
function db_set_ws(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; const val:pWideChar):int_ptr; stdcall;
- external CoreDLL name 'db_set_ws';
+ external CoreDLL name 'db_set_ws';
function db_set_utf(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; const val:pAnsiChar):int_ptr; stdcall;
- external CoreDLL name 'db_set_utf';
+ external CoreDLL name 'db_set_utf';
function db_set_blob(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:pointer; len:uint):int_ptr; stdcall;
- external CoreDLL name 'db_set_blob';
+ external CoreDLL name 'db_set_blob';
// Aliases
function DBFreeVariant(dbv:PDBVARIANT):int_ptr; stdcall;
external CoreDLL name 'db_free';
function DBDeleteContactSetting(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar):int_ptr; stdcall;
- external CoreDLL name 'db_unset';
+ external CoreDLL name 'db_unset';
function DBGetContactSettingByte(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; errorValue:int):int; stdcall;
- external CoreDLL name 'db_get_b';
+ external CoreDLL name 'db_get_b';
function DBGetContactSettingWord(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; errorValue:int):int; stdcall;
- external CoreDLL name 'db_get_w';
+ external CoreDLL name 'db_get_w';
function DBGetContactSettingDWord(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; errorValue:dword):dword; stdcall;
- external CoreDLL name 'db_get_dw';
+ external CoreDLL name 'db_get_dw';
function DBGetContactSetting(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; dbv:PDBVARIANT):int_ptr; stdcall;
- external CoreDLL name 'db_get';
+ external CoreDLL name 'db_get';
function DBGetContactSettingStr(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; dbv:PDBVARIANT; const nType:int=DBVT_ASCIIZ):int_ptr; stdcall;
- external CoreDLL name 'db_get_s';
+ external CoreDLL name 'db_get_s';
function DBGetContactSettingString(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar):pAnsiChar; stdcall;
- external CoreDLL name 'db_get_sa';
+ external CoreDLL name 'db_get_sa';
function DBGetContactSettingWString(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar):pWideChar; stdcall;
- external CoreDLL name 'db_get_wsa';
+ external CoreDLL name 'db_get_wsa';
function DBWriteContactSettingByte(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:byte):int_ptr; stdcall;
- external CoreDLL name 'db_set_b';
+ external CoreDLL name 'db_set_b';
function DBWriteContactSettingWord(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:word):int_ptr; stdcall;
- external CoreDLL name 'db_set_w';
+ external CoreDLL name 'db_set_w';
function DBWriteContactSettingDWord(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:dword):int_ptr; stdcall;
- external CoreDLL name 'db_set_dw';
+ external CoreDLL name 'db_set_dw';
function DBWriteContactSettingString(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; const val:pAnsiChar):int_ptr; stdcall;
- external CoreDLL name 'db_set_s';
+ external CoreDLL name 'db_set_s';
function DBWriteContactSettingWString(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; const val:pWideChar):int_ptr; stdcall;
- external CoreDLL name 'db_set_ws';
+ external CoreDLL name 'db_set_ws';
function DBWriteContactSettingUTF8String(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; const val:pAnsiChar):int_ptr; stdcall;
- external CoreDLL name 'db_set_utf';
+ external CoreDLL name 'db_set_utf';
function DBWriteContactSettingBlob(hContact:THANDLE; const szModule:pAnsiChar; const szSetting:pAnsiChar; val:pointer; len:uint):int_ptr; stdcall;
- external CoreDLL name 'db_set_blob';
+ external CoreDLL name 'db_set_blob';
///////////////////////////////////////////////////////////////////////////////
@@ -177,71 +227,71 @@ const
{$ENDIF}
function CreateHookableEvent(const name: PAnsiChar): THANDLE; stdcall;
- external CoreDLL name 'CreateHookableEvent';
+ external CoreDLL name 'CreateHookableEvent';
function DestroyHookableEvent(hEvent:THANDLE): int; stdcall;
- external CoreDLL name 'DestroyHookableEvent';
+ external CoreDLL name 'DestroyHookableEvent';
function SetHookDefaultForHookableEvent(hEvent:THANDLE; pfnHook:TMIRANDAHOOK):int; stdcall;
- external CoreDLL name 'SetHookDefaultForHookableEvent';
+ external CoreDLL name 'SetHookDefaultForHookableEvent';
function CallPluginEventHook(hInst:HINST; hEvent:THANDLE; wParam:WPARAM; lParam:LPARAM):int; stdcall;
- external CoreDLL name 'CallPluginEventHook';
+ external CoreDLL name 'CallPluginEventHook';
function NotifyEventHooks(hEvent:THANDLE; wParam:WPARAM; lParam:LPARAM): int; stdcall;
- external CoreDLL name 'NotifyEventHooks';
+ external CoreDLL name 'NotifyEventHooks';
function NotifyFastHook(hEvent:THANDLE; wParam:WPARAM; lParam:LPARAM): int; stdcall;
- external CoreDLL name 'NotifyFastHook';
+ external CoreDLL name 'NotifyFastHook';
function HookEvent(const name:PAnsiChar; hookProc: TMIRANDAHOOK): THANDLE; stdcall;
- external CoreDLL name 'HookEvent';
+ external CoreDLL name 'HookEvent';
function HookEventParam(const name:PAnsiChar; hookProc:TMIRANDAHOOKPARAM;lParam:LPARAM):THANDLE; stdcall;
- external CoreDLL name 'HookEventParam';
+ external CoreDLL name 'HookEventParam';
function HookEventObj(const name:PAnsiChar; hookProc:TMIRANDAHOOKOBJ;ptr:pointer):THANDLE; stdcall;
- external CoreDLL name 'HookEventObj';
+ external CoreDLL name 'HookEventObj';
function HookEventObjParam(const name:PAnsiChar; hookProc:TMIRANDAHOOKOBJPARAM;ptr:pointer;lParam:LPARAM):THANDLE; stdcall;
- external CoreDLL name 'HookEventObjParam';
+ external CoreDLL name 'HookEventObjParam';
function HookEventMessage(const name:PAnsiChar; Wnd:HWND; wMsg:uint):THANDLE; stdcall;
- external CoreDLL name 'HookEventMessage';
+ external CoreDLL name 'HookEventMessage';
function UnhookEvent(hHook:THANDLE): int; stdcall;
- external CoreDLL name 'UnhookEvent';
+ external CoreDLL name 'UnhookEvent';
procedure KillObjectEventHooks(var ptr); stdcall;
- external CoreDLL name 'KillObjectEventHooks';
+ external CoreDLL name 'KillObjectEventHooks';
procedure KillModuleEventHooks(pModule:HINST); stdcall;
- external CoreDLL name 'KillModuleEventHooks';
+ external CoreDLL name 'KillModuleEventHooks';
function CreateServiceFunction(const name:PAnsiChar; serviceProc:TMIRANDASERVICE): THANDLE; stdcall;
- external CoreDLL name 'CreateServiceFunction';
+ external CoreDLL name 'CreateServiceFunction';
function CreateServiceFunctionParam(const name:PAnsiChar; serviceProc:TMIRANDASERVICEPARAM;lParam:LPARAM):THANDLE; stdcall;
- external CoreDLL name 'CreateServiceFunctionParam';
+ external CoreDLL name 'CreateServiceFunctionParam';
function CreateServiceFunctionObj(const name:PAnsiChar; serviceProc:TMIRANDASERVICEOBJ;ptr:pointer):THANDLE; stdcall;
- external CoreDLL name 'CreateServiceFunctionObj';
+ external CoreDLL name 'CreateServiceFunctionObj';
function CreateServiceFunctionObjParam(const name:PAnsiChar; serviceProc:TMIRANDASERVICEOBJPARAM;ptr:pointer;lParam:LPARAM):THANDLE; stdcall;
- external CoreDLL name 'CreateServiceFunctionObjParam';
+ external CoreDLL name 'CreateServiceFunctionObjParam';
function DestroyServiceFunction(hService:THANDLE):int; stdcall;
- external CoreDLL name 'DestroyServiceFunction';
+ external CoreDLL name 'DestroyServiceFunction';
function ServiceExists(const name:PAnsiChar):int; stdcall;
- external CoreDLL name 'ServiceExists';
+ external CoreDLL name 'ServiceExists';
function CallService(const name:PAnsiChar; wParam:WPARAM; lParam:LPARAM):uint_ptr; stdcall;
- external CoreDLL name 'CallService';
+ external CoreDLL name 'CallService';
function CallServiceSync(const name:PAnsiChar; wParam:WPARAM; lParam:LPARAM):uint_ptr; stdcall;
- external CoreDLL name 'CallServiceSync';
+ external CoreDLL name 'CallServiceSync';
function CallFunctionAsync(ptr1,ptr2:pointer):int; stdcall;
- external CoreDLL name 'CallFunctionAsync';
+ external CoreDLL name 'CallFunctionAsync';
procedure KillModuleServices(hInst:HINST); stdcall;
- external CoreDLL name 'KillModuleServices';
+ external CoreDLL name 'KillModuleServices';
procedure KillObjectServices(var ptr); stdcall;
- external CoreDLL name 'KillObjectServices';
+ external CoreDLL name 'KillObjectServices';
function CallContactService(hContact:THANDLE;const name:PAnsiChar;wParam:WPARAM;lParam:LPARAM):uint_ptr; cdecl;
- external CoreDLL name 'CallContactService';
+ external CoreDLL name 'CallContactService';
function CallProtoService(const szModule:PAnsiChar;const szService:PAnsiChar;wParam:WPARAM;lParam:LPARAM):uint_ptr; cdecl;
- external CoreDLL name 'CallProtoService';
+ external CoreDLL name 'CallProtoService';
///////////////////////////////////////////////////////////////////////////////
// http
// returned result must be freed using mir_free()
function mir_urlEncode(url:pAnsiChar):pAnsiChar; stdcall;
- external CoreDLL name 'mir_urlEncode';
+ external CoreDLL name 'mir_urlEncode';
///////////////////////////////////////////////////////////////////////////////
// exceptions
@@ -251,9 +301,9 @@ type
pfnExceptionFilter = function(code:dword; info:PEXCEPTION_POINTERS):dword; cdecl;
function GetExceptionFilter():pfnExceptionFilter; stdcall;
- external CoreDLL name 'GetExceptionFilter';
+ external CoreDLL name 'GetExceptionFilter';
function SetExceptionFilter(pMirandaExceptFilter:pfnExceptionFilter):pfnExceptionFilter; stdcall;
- external CoreDLL name 'SetExceptionFilter';
+ external CoreDLL name 'SetExceptionFilter';
///////////////////////////////////////////////////////////////////////////////
@@ -282,10 +332,10 @@ type
procedure mir_Icon_Register(hInst:HINST; const szSection:pAnsiChar; pIcons:pIconItem;
iCount:size_t; prefix:PAnsiChar; hLangpack:int); stdcall;
- external CoreDLL name 'Icon_Register';
+ external CoreDLL name 'Icon_Register';
procedure mir_Icon_RegisterW(hInst:HINST; const szSection:pWideChar; pIcons:pIconItemW;
iCount:size_t; prefix:PAnsiChar; hLangpack:int); stdcall;
- external CoreDLL name 'Icon_RegisterT';
+ external CoreDLL name 'Icon_RegisterT';
///////////////////////////////////////////////////////////////////////////////
// language packs support
@@ -294,32 +344,32 @@ const
LANG_UNICODE = $1000;
procedure Langpack_SortDuplicates(); stdcall;
- external CoreDLL name 'Langpack_SortDuplicates';
+ external CoreDLL name 'Langpack_SortDuplicates';
function Langpack_GetDefaultCodePage():int; stdcall;
- external CoreDLL name 'Langpack_GetDefaultCodePage';
+ external CoreDLL name 'Langpack_GetDefaultCodePage';
function Langpack_GetDefaultLocale():int; stdcall;
- external CoreDLL name 'Langpack_GetDefaultLocale';
+ external CoreDLL name 'Langpack_GetDefaultLocale';
function Langpack_PcharToTchar(const pszStr:pAnsiChar):pWideChar; stdcall;
- external CoreDLL name 'Langpack_PcharToTchar';
+ external CoreDLL name 'Langpack_PcharToTchar';
function LoadLangPackModule():int; stdcall;
- external CoreDLL name 'LoadLangPackModule';
+ external CoreDLL name 'LoadLangPackModule';
function LoadLangPack(const szLangPack:pWideChar):int; stdcall;
- external CoreDLL name 'LoadLangPack';
+ external CoreDLL name 'LoadLangPack';
procedure ReloadLangpack(pszStr:pWideChar); stdcall;
- external CoreDLL name 'ReloadLangpack';
+ external CoreDLL name 'ReloadLangpack';
function TranslateA_LP(const str:pAnsiChar; hLang:int):pAnsiChar; stdcall;
- external CoreDLL name 'TranslateA_LP';
+ external CoreDLL name 'TranslateA_LP';
function TranslateW_LP(const str:pWideChar; hLang:int):pWideChar; stdcall;
- external CoreDLL name 'TranslateW_LP';
+ external CoreDLL name 'TranslateW_LP';
procedure TranslateMenu_LP(hMenu:HMENU; hLang:int); stdcall;
- external CoreDLL name 'TranslateMenu_LP';
+ external CoreDLL name 'TranslateMenu_LP';
procedure TranslateDialog_LP(hDlg:HWND; hLang:int); stdcall;
- external CoreDLL name 'TranslateDialog_LP';
+ external CoreDLL name 'TranslateDialog_LP';
function mir_hash(const key:pointer; len:uint):uint; stdcall;
- external CoreDLL name 'mir_hash';
+ external CoreDLL name 'mir_hash';
///////////////////////////////////////////////////////////////////////////////
@@ -350,28 +400,28 @@ type
// BUGGED with limit <> 0. list pointer must befreed by mir_free
function List_Create(limit:int; increment:int):PSortedList;stdcall;
- external CoreDLL name 'List_Create';
+ external CoreDLL name 'List_Create';
procedure List_Destroy(list:PSortedList);stdcall;
- external CoreDLL name 'List_Destroy';
+ external CoreDLL name 'List_Destroy';
function List_Find(list:PSortedList; value:pointer):pointer;stdcall;
- external CoreDLL name 'List_Find';
+ external CoreDLL name 'List_Find';
function List_GetIndex(list:PSortedList; value:pointer; index:Pint):int;stdcall;
- external CoreDLL name 'List_GetIndex';
+ external CoreDLL name 'List_GetIndex';
function List_IndexOf(list:PSortedList; value:pointer):int;stdcall;
- external CoreDLL name 'List_IndexOf';
+ external CoreDLL name 'List_IndexOf';
function List_Insert(list:PSortedList; value:pointer; index:int):int;stdcall;
- external CoreDLL name 'List_Insert';
+ external CoreDLL name 'List_Insert';
function List_InsertPtr(list:PSortedList; p:pointer):int;stdcall;
- external CoreDLL name 'List_InsertPtr';
+ external CoreDLL name 'List_InsertPtr';
function List_Remove(list:PSortedList; index:int):int;stdcall;
- external CoreDLL name 'List_Remove';
+ external CoreDLL name 'List_Remove';
function List_RemovePtr(list:PSortedList; p:pointer):int;stdcall;
- external CoreDLL name 'List_RemovePtr';
+ external CoreDLL name 'List_RemovePtr';
procedure List_Copy(src:PSortedList; dst:PSortedList; size:size_t); stdcall;
- external CoreDLL name 'List_Copy';
+ external CoreDLL name 'List_Copy';
procedure List_ObjCopy(src:PSortedList; dst:PSortedList; size:size_t); stdcall;
- external CoreDLL name 'List_ObjCopy';
+ external CoreDLL name 'List_ObjCopy';
///////////////////////////////////////////////////////////////////////////////
@@ -394,81 +444,81 @@ type
TMD5Hash = array [0..15] of mir_md5_byte_t;
procedure mir_md5_init(pms:pmir_md5_state_t); stdcall;
- external CoreDLL name 'mir_md5_init';
+ external CoreDLL name 'mir_md5_init';
procedure mir_md5_append(pms:pmir_md5_state_t; const data:pmir_md5_byte_t; nbytes:int); stdcall;
- external CoreDLL name 'mir_md5_append';
+ external CoreDLL name 'mir_md5_append';
procedure mir_md5_finish(pms:pmir_md5_state_t; digest:TMD5Hash); stdcall;
- external CoreDLL name 'mir_md5_finish';
+ external CoreDLL name 'mir_md5_finish';
procedure mir_md5_hash(const data:pmir_md5_byte_t; len:int; digest:TMD5Hash); stdcall;
- external CoreDLL name 'mir_md5_hash';
+ external CoreDLL name 'mir_md5_hash';
///////////////////////////////////////////////////////////////////////////////
// memory functions
function mir_alloc(para1:size_t):pointer; cdecl;
- external CoreDLL name 'mir_alloc';
+ external CoreDLL name 'mir_alloc';
function mir_calloc(para1:size_t):pointer; cdecl;
- external CoreDLL name 'mir_calloc';
+ external CoreDLL name 'mir_calloc';
function mir_realloc(para1:pointer; para2:size_t):pointer; cdecl;
- external CoreDLL name 'mir_realloc';
+ external CoreDLL name 'mir_realloc';
procedure mir_free(para1:pointer); cdecl;
- external CoreDLL name 'mir_free';
+ external CoreDLL name 'mir_free';
function mir_strdup(const src:PAnsiChar):PAnsiChar; stdcall;
- external CoreDLL name 'mir_strdup';
+ external CoreDLL name 'mir_strdup';
function mir_wstrdup(const src:PWideChar):PWideChar; stdcall;
- external CoreDLL name 'mir_wstrdup';
+ external CoreDLL name 'mir_wstrdup';
function mir_strndup(const src:PAnsiChar; len:size_t):PAnsiChar; stdcall;
- external CoreDLL name 'mir_strndup';
+ external CoreDLL name 'mir_strndup';
function mir_wstrndup(const src:PWideChar; len:size_t):PWideChar; stdcall;
- external CoreDLL name 'mir_wstrndup';
+ external CoreDLL name 'mir_wstrndup';
///////////////////////////////////////////////////////////////////////////////
// modules
procedure RegisterModule(hInst:HINST); stdcall;
- external CoreDLL name 'RegisterModule';
+ external CoreDLL name 'RegisterModule';
procedure UnregisterModule(hInst:HINST); stdcall;
- external CoreDLL name 'UnregisterModule';
+ external CoreDLL name 'UnregisterModule';
function GetInstByAddress(codePtr:pointer):HINST; stdcall;
- external CoreDLL name 'GetInstByAddress';
+ external CoreDLL name 'GetInstByAddress';
///////////////////////////////////////////////////////////////////////////////
// path utils
procedure CreatePathToFile(wszFilePath:pAnsiChar); stdcall;
- external CoreDLL name 'CreatePathToFile';
+ external CoreDLL name 'CreatePathToFile';
function CreateDirectoryTree(const szDir:pAnsiChar):int; stdcall;
- external CoreDLL name 'CreateDirectoryTree';
+ external CoreDLL name 'CreateDirectoryTree';
function PathToAbsolute(const pSrc:pAnsiChar; pOut:pAnsiChar; base:pAnsiChar=nil):int; stdcall;
- external CoreDLL name 'PathToAbsolute';
+ external CoreDLL name 'PathToAbsolute';
function PathToRelative(const pSrc:pAnsiChar; pOut:pAnsiChar):int; stdcall;
- external CoreDLL name 'PathToRelative';
+ external CoreDLL name 'PathToRelative';
procedure CreatePathToFileW(wszFilePath:pWideChar); stdcall;
- external CoreDLL name 'CreatePathToFileW';
+ external CoreDLL name 'CreatePathToFileW';
function CreateDirectoryTreeW(const szDir:pWideChar):int; stdcall;
- external CoreDLL name 'CreateDirectoryTreeW';
+ external CoreDLL name 'CreateDirectoryTreeW';
function PathToAbsoluteW(const pSrc:pWideChar; pOut:pWideChar; base:pWideChar=nil):int; stdcall;
- external CoreDLL name 'PathToAbsoluteW';
+ external CoreDLL name 'PathToAbsoluteW';
function PathToRelativeW(const pSrc:pWideChar; pOut:pWideChar):int; stdcall;
- external CoreDLL name 'PathToRelativeW';
+ external CoreDLL name 'PathToRelativeW';
///////////////////////////////////////////////////////////////////////////////
// print functions
function mir_snprintf(buffer:pAnsiChar;count:size_t;fmt:pAnsiChar{, ...}):int; stdcall;
- external CoreDLL name 'mir_snprintf';
+ external CoreDLL name 'mir_snprintf';
function mir_sntprintf(buffer:pWideChar;count:size_t;fmt:pWideChar{, ...}):int; stdcall;
- external CoreDLL name 'mir_sntprintf';
+ external CoreDLL name 'mir_sntprintf';
function mir_vsnprintf(buffer:pAnsiChar;count:size_t;fmt:pAnsiChar;va:va_list):int; stdcall;
- external CoreDLL name 'mir_vsnprintf';
+ external CoreDLL name 'mir_vsnprintf';
function mir_vsntprintf(buffer:pWideChar;count:size_t;fmt:pWideChar;va:va_list):int; stdcall;
- external CoreDLL name 'mir_vsntprintf';
+ external CoreDLL name 'mir_vsntprintf';
///////////////////////////////////////////////////////////////////////////////
@@ -494,13 +544,13 @@ type
SHA1Hash = array [0..MIR_SHA1_HASH_SIZE-1] of mir_sha1_byte_t;
procedure mir_sha1_init(ctx:pmir_sha1_ctx); stdcall;
- external CoreDLL name 'mir_sha1_init';
+ external CoreDLL name 'mir_sha1_init';
procedure mir_sha1_append(ctx:pmir_sha1_ctx; dataIn:pmir_sha1_byte_t; len:int); stdcall;
- external CoreDLL name 'mir_sha1_append';
+ external CoreDLL name 'mir_sha1_append';
procedure mir_sha1_finish(ctx:pmir_sha1_ctx; hashout:SHA1Hash); stdcall;
- external CoreDLL name 'mir_sha1_finish';
+ external CoreDLL name 'mir_sha1_finish';
procedure mir_sha1_hash(dataIn:pmir_sha1_byte_t; len:int;hashout:SHA1Hash); stdcall;
- external CoreDLL name 'mir_sha1_hash';
+ external CoreDLL name 'mir_sha1_hash';
///////////////////////////////////////////////////////////////////////////////
@@ -530,11 +580,11 @@ function replaceStrW(var dest:pWideChar; const src:pWideChar):pWideChar; stdcall
// text conversion functions
function mir_a2u_cp(src:PAnsiChar;codepage:int):pWideChar; stdcall;
- external CoreDLL name 'mir_a2u_cp';
+ external CoreDLL name 'mir_a2u_cp';
function mir_a2u(src:PAnsiChar):pWideChar; stdcall;
external CoreDLL name 'mir_a2u';
function mir_u2a_cp(src:pWideChar;codepage:int):PAnsiChar; stdcall;
- external CoreDLL name 'mir_u2a_cp';
+ external CoreDLL name 'mir_u2a_cp';
function mir_u2a(src:pWideChar):PAnsiChar; stdcall;
external CoreDLL name 'mir_u2a';
@@ -547,86 +597,86 @@ type
pThreadFuncOwner = function (owner:pointer;param:pointer):uint_ptr; cdecl;
function Thread_Push(hInst:HINST; Owner:pointer):int_ptr; stdcall;
- external CoreDLL name 'Thread_Push';
+ external CoreDLL name 'Thread_Push';
function Thread_Pop():int_ptr; stdcall;
- external CoreDLL name 'Thread_Pop';
+ external CoreDLL name 'Thread_Pop';
procedure Thread_Wait(); stdcall;
- external CoreDLL name 'Thread_Wait';
+ external CoreDLL name 'Thread_Wait';
function forkthread(func:pThreadFunc; stacksize:uint; arg:pointer):uint_ptr; stdcall;
- external CoreDLL name 'forkthread';
+ external CoreDLL name 'forkthread';
function forkthreadex(sec:pointer; stacksize:uint; func:pThreadFuncEx; owner:pointer; arg:pointer; thraddr:puint_ptr):uint_ptr; stdcall;
- external CoreDLL name 'forkthreadex';
+ external CoreDLL name 'forkthreadex';
procedure Thread_SetName(const szThreadName:pAnsiChar); stdcall;
- external CoreDLL name 'Thread_SetName';
+ external CoreDLL name 'Thread_SetName';
procedure KillObjectThreads(pObject:pointer); stdcall;
- external CoreDLL name 'KillObjectThreads';
+ external CoreDLL name 'KillObjectThreads';
///////////////////////////////////////////////////////////////////////////////
// utf8 interface
{ commented to avoid newer Delphi version conflicts
function Utf8Decode(str:PAnsiChar; var ucs2:pWideChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8Decode';
+ external CoreDLL name 'Utf8Decode';
function Utf8DecodeCP(str:PAnsiChar; codepage:int; var ucs2:pWideChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8DecodeCP';
+ external CoreDLL name 'Utf8DecodeCP';
function Utf8DecodeW(const str:PAnsiChar):pWideChar;stdcall;
- external CoreDLL name 'Utf8DecodeW';
+ external CoreDLL name 'Utf8DecodeW';
function Utf8Encode(const src:PAnsiChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8Encode';
+ external CoreDLL name 'Utf8Encode';
function Utf8EncodeCP(const src:PAnsiChar;codepage:int):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8EncodeCP';
+ external CoreDLL name 'Utf8EncodeCP';
function Utf8EncodeW(const src:PWideChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8EncodeW';
+ external CoreDLL name 'Utf8EncodeW';
function Ucs2toUtf8Len(const src:pWideChar):int; stdcall;
- external CoreDLL name 'Ucs2toUtf8Len';
+ external CoreDLL name 'Ucs2toUtf8Len';
function Utf8CheckString(const astr:PAnsiChar):bool;stdcall;
- external CoreDLL name 'Utf8CheckString';
+ external CoreDLL name 'Utf8CheckString';
}
// aliases
function mir_utf8decode(str:PAnsiChar; var ucs2:pWideChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8Decode';
+ external CoreDLL name 'Utf8Decode';
function mir_utf8decodecp(str:PAnsiChar; codepage:int; var ucs2:pWideChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8DecodeCP';
+ external CoreDLL name 'Utf8DecodeCP';
function mir_utf8decodew(const str:PAnsiChar):pWideChar;stdcall;
- external CoreDLL name 'Utf8DecodeW';
+ external CoreDLL name 'Utf8DecodeW';
function mir_utf8encode(const src:PAnsiChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8Encode';
+ external CoreDLL name 'Utf8Encode';
function mir_utf8encodecp(const src:PAnsiChar;codepage:int):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8EncodeCP';
+ external CoreDLL name 'Utf8EncodeCP';
function mir_utf8encodew(const src:PWideChar):PAnsiChar;stdcall;
- external CoreDLL name 'Utf8EncodeW';
+ external CoreDLL name 'Utf8EncodeW';
function mir_utf8lenW(const src:pWideChar):int; stdcall;
- external CoreDLL name 'Ucs2toUtf8Len';
+ external CoreDLL name 'Ucs2toUtf8Len';
function mir_utf8checkstring(const astr:PAnsiChar):bool;stdcall;
- external CoreDLL name 'Utf8CheckString';
+ external CoreDLL name 'Utf8CheckString';
///////////////////////////////////////////////////////////////////////////////
// Window subclassing
procedure mir_subclassWindow(Wnd:HWND; WndProc:TWNDPROC); stdcall;
- external CoreDLL name 'mir_subclassWindow';
+ external CoreDLL name 'mir_subclassWindow';
procedure mir_subclassWindowFull(Wnd:HWND; WndProc, OldWndProc:TWNDPROC); stdcall;
- external CoreDLL name 'mir_subclassWindowFull';
+ external CoreDLL name 'mir_subclassWindowFull';
function mir_callNextSubclass(Wnd:HWND; WndProc:TWNDPROC; uMsg:uint; wParam:WPARAM; lParam:LPARAM ):LRESULT; stdcall;
- external CoreDLL name 'mir_callNextSubclass';
+ external CoreDLL name 'mir_callNextSubclass';
procedure mir_unsubclassWindow(Wnd:HWND; WndProc:TWNDPROC); stdcall;
- external CoreDLL name 'mir_unsubclassWindow';
+ external CoreDLL name 'mir_unsubclassWindow';
///////////////////////////////////////////////////////////////////////////////
procedure UnloadCoreModule(); stdcall;
- external CoreDLL name 'UnloadCoreModule';
+ external CoreDLL name 'UnloadCoreModule';
{$ENDIF}
diff --git a/include/delphi/m_database.inc b/include/delphi/m_database.inc
index 784610fe3b..11af089f1a 100644
--- a/include/delphi/m_database.inc
+++ b/include/delphi/m_database.inc
@@ -242,7 +242,7 @@ const
Registers the specified database event type, with module, id & description.
When someone needs to retrieve an event's text, a service named Module/GetEventText<id>
will be called. For example, for module named 'foo' and event id 2000 a service
-foo/GetEventText2000 should be defined to process this request. That handler should
+foo/GetEventText2000 should be defined to process this request. That handler should
decode a blob and return the event text in the required format, its prototype is identical
to a call of MS_DB_EVENT_GETTEXT (see below)
wParam=0
@@ -316,31 +316,6 @@ const
DBEVENTINFO.timestamp is in GMT, as returned by time()
}
- DBEF_FIRST = 1; // internally only, do not use
- DBEF_SENT = 2; // if set, the event was sent by the user, otherwise it was received
- DBEF_READ = 4; // event has been read by the user -- only needed for history
- DBEF_RTL = 8; // event contains the right-to-left aligned text
- DBEF_UTF = 16; // event contains a text in utf-8
-
- EVENTTYPE_MESSAGE = 0;
- EVENTTYPE_URL = 1;
- EVENTTYPE_CONTACTS = 2; // v0.1.2.2+
- EVENTTYPE_ADDED = 1000; // v0.1.1.0+: these used to be module-
- EVENTTYPE_AUTHREQUEST = 1001; // specific codes, hence the module-
- EVENTTYPE_FILE = 1002; // specific limit has been raised to 2000
-
-type
- PDBEVENTINFO = ^TDBEVENTINFO;
- TDBEVENTINFO = record
- cbSize : int; // size of the structure
- szModule : PAnsiChar; // module that 'owns' this event and controls the data format
- timestamp: DWORD; // timestamp in UNIX time
- flags : DWORD; // the DBEF_* flags above
- eventType: WORD; // event type, such as message, can be module defined
- cbBlob : DWORD; // size in bytes of pBlob^
- pBlob : PByte; // pointer to buffer containing the module defined event data
- end;
-
const
MS_DB_EVENT_ADD:PAnsiChar = 'DB/Event/Add';
@@ -394,7 +369,7 @@ type
datatype:int; // DBVT_ASCIIZ, DBVT_WCHAR (DBVT_TCHAR)
codepage:int;
end;
-const
+const
MS_DB_EVENT_GETTEXT:PAnsiChar = 'DB/Event/GetText';
{ DB/Event/GetIcon (0.7.0.1+)
@@ -585,7 +560,7 @@ const
MS_DB_SETSAFETYMODE:PAnsiChar = 'DB/SetSafetyMode';
//*************************** Modules ******************************
-
+
{
wParam : (caller defined data) will be passed to lParam of the call back
lParam : function pointer to TDBMODULEENUMPROC
diff --git a/include/m_core.h b/include/m_core.h
index c073cdea66..87595defce 100644
--- a/include/m_core.h
+++ b/include/m_core.h
@@ -84,6 +84,28 @@ typedef struct {
};
} DBVARIANT;
+#define DBEF_FIRST 1 //this is the first event in the chain;
+ //internal only: *do not* use this flag
+#define DBEF_SENT 2 //this event was sent by the user. If not set this
+ //event was received.
+#define DBEF_READ 4 //event has been read by the user. It does not need
+ //to be processed any more except for history.
+#define DBEF_RTL 8 //event contains the right-to-left aligned text
+#define DBEF_UTF 16 //event contains a text in utf-8
+
+typedef struct {
+ int cbSize; //size of the structure in bytes
+ char *szModule; //pointer to name of the module that 'owns' this
+ //event, ie the one that is in control of the data format
+ DWORD timestamp; //seconds since 00:00, 01/01/1970. Gives us times until
+ //2106 unless you use the standard C library which is
+ //signed and can only do until 2038. In GMT.
+ DWORD flags; //the omnipresent flags
+ WORD eventType; //module-defined event type field
+ DWORD cbBlob; //size of pBlob in bytes
+ PBYTE pBlob; //pointer to buffer containing module-defined event data
+} DBEVENTINFO;
+
MIR_CORE_DLL(INT_PTR) db_free(DBVARIANT *dbv);
MIR_CORE_DLL(INT_PTR) db_unset(HANDLE hContact, const char *szModule, const char *szSetting);
@@ -95,6 +117,19 @@ MIR_CORE_DLL(HANDLE) db_find_first(const char *szProto);
MIR_CORE_DLL(HANDLE) db_find_next(HANDLE hContact, const char *szProto);
#endif
+MIR_CORE_DLL(HANDLE) db_event_add(HANDLE hContact, DBEVENTINFO *dbei);
+MIR_CORE_DLL(int) db_event_count(HANDLE hContact);
+MIR_CORE_DLL(int) db_event_delete(HANDLE hContact, HANDLE hDbEvent);
+MIR_CORE_DLL(HANDLE) db_event_first(HANDLE hContact);
+MIR_CORE_DLL(HANDLE) db_event_firstUnread(HANDLE hContact);
+MIR_CORE_DLL(int) db_event_get(HANDLE hDbEvent, DBEVENTINFO *dbei);
+MIR_CORE_DLL(int) db_event_getBlobSize(HANDLE hDbEvent);
+MIR_CORE_DLL(HANDLE) db_event_getContact(HANDLE hDbEvent);
+MIR_CORE_DLL(HANDLE) db_event_last(HANDLE hDbEvent);
+MIR_CORE_DLL(int) db_event_markRead(HANDLE hContact, HANDLE hDbEvent);
+MIR_CORE_DLL(HANDLE) db_event_next(HANDLE hDbEvent);
+MIR_CORE_DLL(HANDLE) db_event_prev(HANDLE hDbEvent);
+
MIR_CORE_DLL(int) db_get_b(HANDLE hContact, const char *szModule, const char *szSetting, int errorValue);
MIR_CORE_DLL(int) db_get_w(HANDLE hContact, const char *szModule, const char *szSetting, int errorValue);
MIR_CORE_DLL(DWORD) db_get_dw(HANDLE hContact, const char *szModule, const char *szSetting, DWORD errorValue);
diff --git a/include/m_database.h b/include/m_database.h
index 5bd82589f9..6e29b7d3ce 100644
--- a/include/m_database.h
+++ b/include/m_database.h
@@ -413,27 +413,6 @@ modules are free to define their own, beginning at 2000
DBEVENTINFO.timestamp is in GMT, as returned by time(). There are services
db/time/x below with useful stuff for dealing with it.
*/
-#define DBEF_FIRST 1 //this is the first event in the chain;
- //internal only: *do not* use this flag
-#define DBEF_SENT 2 //this event was sent by the user. If not set this
- //event was received.
-#define DBEF_READ 4 //event has been read by the user. It does not need
- //to be processed any more except for history.
-#define DBEF_RTL 8 //event contains the right-to-left aligned text
-#define DBEF_UTF 16 //event contains a text in utf-8
-
-typedef struct {
- int cbSize; //size of the structure in bytes
- char *szModule; //pointer to name of the module that 'owns' this
- //event, ie the one that is in control of the data format
- DWORD timestamp; //seconds since 00:00, 01/01/1970. Gives us times until
- //2106 unless you use the standard C library which is
- //signed and can only do until 2038. In GMT.
- DWORD flags; //the omnipresent flags
- WORD eventType; //module-defined event type field
- DWORD cbBlob; //size of pBlob in bytes
- PBYTE pBlob; //pointer to buffer containing module-defined event data
-} DBEVENTINFO;
#define EVENTTYPE_MESSAGE 0
#define EVENTTYPE_URL 1
@@ -488,7 +467,7 @@ of modules. Look but don't touch.
Retrieves the event's text
wParam = (WPARAM)0 (unused)
lParam = (LPARAM)(DBEVENTGETTEXT*)egt - pointer to structure with parameters
- egt->dbei should be the valid database event read via MS_DB_EVENT_GET
+ egt->dbei should be the valid database event read via db_event_get()
egt->datatype = DBVT_WCHAR or DBVT_ASCIIZ or DBVT_TCHAR. If a caller wants to
suppress Unicode part of event in answer, add DBVTF_DENYUNICODE to this field.
egt->codepage is any valid codepage, CP_ACP by default.
@@ -526,7 +505,7 @@ __forceinline TCHAR* DbGetEventTextT(DBEVENTINFO* dbei, int codepage)
Retrieves the event's icon
wParam = (WPARAM)(int)flags - use LR_SHARED for shared HICON
lParam = (LPARAM)(DBEVENTINFO*)dbei
-dbei should be a valid database event read via MS_DB_EVENT_GET
+dbei should be a valid database event read via db_event_get()
Function returns HICON (use DestroyIcon to release resources if not LR_SHARED)
@@ -777,7 +756,7 @@ at any particular position in the chain.
Called **before** a new event is made of a DBEVENTINFO structure, this
hook is not SAFE unless you know what you're doing with it, the arguments
are passed as-is (with errors, pointer problems, if any) from any arguments
-passed to MS_DB_EVENT_ADD.
+passed to db_event_add.
The point of this hook is to stop any unwanted database events, to stop
an event being added, return 1, to allow the event to pass through return
diff --git a/include/m_protosvc.h b/include/m_protosvc.h
index 9bfeda6d70..beb469a83c 100644
--- a/include/m_protosvc.h
+++ b/include/m_protosvc.h
@@ -736,7 +736,7 @@ typedef struct {
Copies a message from a PROTORECVEVENT event into the database
wParam = 0 (unused)
lParam = CCSDATA*
-Returns the result of MS_DB_EVENT_ADD
+Returns the result of db_event_add()
*/
#define PSR_MESSAGE "/RecvMessage"
@@ -752,7 +752,7 @@ __forceinline INT_PTR Proto_RecvMessage(HANDLE hContact, PROTORECVEVENT *pcre)
Copies the EVENTTYPE_AUTHREQUEST event from PROTORECVEVENT into DBEVENTINFO and adds it
wParam = char* : protocol name
lParam = PROTORECVEVENT*
-Returns the result of MS_DB_EVENT_ADD
+Returns the result of db_event_add()
*/
#define PSR_AUTH "/RecvAuth"
diff --git a/src/mir_core/db.cpp b/src/mir_core/db.cpp
index df1a83d83a..82013cc3f3 100644
--- a/src/mir_core/db.cpp
+++ b/src/mir_core/db.cpp
@@ -217,6 +217,69 @@ MIR_CORE_DLL(INT_PTR) db_set_blob(HANDLE hContact, const char *szModule, const c
}
/////////////////////////////////////////////////////////////////////////////////////////
+// events
+
+MIR_CORE_DLL(HANDLE) db_event_add(HANDLE hContact, DBEVENTINFO *dbei)
+{
+ return (currDb == NULL) ? 0 : currDb->AddEvent(hContact, dbei);
+}
+
+MIR_CORE_DLL(int) db_event_count(HANDLE hContact)
+{
+ return (currDb == NULL) ? 0 : currDb->GetEventCount(hContact);
+}
+
+MIR_CORE_DLL(int) db_event_delete(HANDLE hContact, HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->DeleteEvent(hContact, hDbEvent);
+}
+
+MIR_CORE_DLL(HANDLE) db_event_first(HANDLE hContact)
+{
+ return (currDb == NULL) ? 0 : currDb->FindFirstEvent(hContact);
+}
+
+MIR_CORE_DLL(HANDLE) db_event_firstUnread(HANDLE hContact)
+{
+ return (currDb == NULL) ? 0 : currDb->FindFirstUnreadEvent(hContact);
+}
+
+MIR_CORE_DLL(int) db_event_get(HANDLE hDbEvent, DBEVENTINFO *dbei)
+{
+ return (currDb == NULL) ? 1 : currDb->GetEvent(hDbEvent, dbei);
+}
+
+MIR_CORE_DLL(int) db_event_getBlobSize(HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->GetBlobSize(hDbEvent);
+}
+
+MIR_CORE_DLL(HANDLE) db_event_getContact(HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->GetEventContact(hDbEvent);
+}
+
+MIR_CORE_DLL(HANDLE) db_event_last(HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->FindLastEvent(hDbEvent);
+}
+
+MIR_CORE_DLL(int) db_event_markRead(HANDLE hContact, HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->MarkEventRead(hContact, hDbEvent);
+}
+
+MIR_CORE_DLL(HANDLE) db_event_next(HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->FindNextEvent(hDbEvent);
+}
+
+MIR_CORE_DLL(HANDLE) db_event_prev(HANDLE hDbEvent)
+{
+ return (currDb == NULL) ? 0 : currDb->FindPrevEvent(hDbEvent);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
// misc functions
MIR_CORE_DLL(INT_PTR) db_free(DBVARIANT *dbv)
diff --git a/src/mir_core/mir_core.def b/src/mir_core/mir_core.def
index 6858f16234..6e923548b6 100644
--- a/src/mir_core/mir_core.def
+++ b/src/mir_core/mir_core.def
@@ -142,3 +142,15 @@ KillModuleSubclassing @139
mir_wstrndup @140
mir_unsubclassWindow @141
mir_urlEncode @142
+db_event_add @143
+db_event_count @144
+db_event_delete @145
+db_event_first @146
+db_event_firstUnread @147
+db_event_get @148
+db_event_getBlobSize @149
+db_event_getContact @150
+db_event_last @151
+db_event_markRead @152
+db_event_next @153
+db_event_prev @154