summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-06-27 20:41:50 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-06-27 20:41:50 +0000
commit3f26a39c43faef04ea316ecc98d8d195982bb303 (patch)
tree0a584ad4f25c678838428bc53a6d6104f1b47d08
parent40814d047c86c10a10bf63ce6ba98afd22ce3a29 (diff)
final wipeout of all interfaces
git-svn-id: http://svn.miranda-ng.org/main/trunk@659 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--bin10/lib/mir_core.libbin23732 -> 24860 bytes
-rw-r--r--bin10/lib/mir_core64.libbin23226 -> 22848 bytes
-rw-r--r--include/m_core.h30
-rw-r--r--plugins/Mir_core/Miranda32.libbin1984 -> 2204 bytes
-rw-r--r--plugins/Mir_core/Miranda64.libbin1984 -> 2186 bytes
-rw-r--r--plugins/Mir_core/langpack.cpp2
-rw-r--r--plugins/Mir_core/memory.cpp8
-rw-r--r--plugins/Mir_core/mir_core.def108
-rw-r--r--plugins/Mir_core/mir_core_10.vcxproj4
-rw-r--r--plugins/Mir_core/miranda.cpp41
-rw-r--r--src/core/miranda.cpp213
-rw-r--r--src/miranda32_10.vcxproj5
-rw-r--r--src/miranda32_10.vcxproj.filters3
-rw-r--r--src/modules/database/database.cpp2
-rw-r--r--src/modules/netlib/netlibhttpproxy.cpp9
-rw-r--r--src/modules/plugins/newplugins.cpp41
-rw-r--r--src/modules/plugins/plugins.h4
-rw-r--r--src/modules/utils/md5.cpp80
-rw-r--r--src/modules/utils/utils.cpp4
19 files changed, 173 insertions, 381 deletions
diff --git a/bin10/lib/mir_core.lib b/bin10/lib/mir_core.lib
index c1edf06753..b88ee559dc 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 baa9532c93..36f89ac168 100644
--- a/bin10/lib/mir_core64.lib
+++ b/bin10/lib/mir_core64.lib
Binary files differ
diff --git a/include/m_core.h b/include/m_core.h
index 99321a1e5a..719509187d 100644
--- a/include/m_core.h
+++ b/include/m_core.h
@@ -25,11 +25,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define M_CORE_H__ 1
#ifdef MIR_CORE_EXPORTS
- #define MIR_CORE_DLL(T) __declspec(dllexport) T __cdecl
+ #define MIR_CORE_EXPORT __declspec(dllexport)
#else
- #define MIR_CORE_DLL(T) __declspec(dllimport) T __cdecl
+ #define MIR_CORE_EXPORT __declspec(dllimport)
#endif
+#define MIR_CORE_DLL(T) MIR_CORE_EXPORT T __stdcall
+#define MIR_C_CORE_DLL(T) MIR_CORE_EXPORT T __cdecl
+
#if defined(__cplusplus)
extern "C"
{
@@ -90,8 +93,8 @@ MIR_CORE_DLL(void) KillObjectServices(void* pObject);
__declspec(dllexport) INT_PTR CallContactService(HANDLE, const char *, WPARAM, LPARAM);
__declspec(dllexport) INT_PTR CallProtoService(const char *szModule, const char *szService, WPARAM wParam, LPARAM lParam);
#else
-MIR_CORE_DLL(INT_PTR) CallContactService(HANDLE, const char *, WPARAM, LPARAM);
-MIR_CORE_DLL(INT_PTR) CallProtoService(const char *szModule, const char *szService, WPARAM wParam, LPARAM lParam);
+MIR_C_CORE_DLL(INT_PTR) CallContactService(HANDLE, const char *, WPARAM, LPARAM);
+MIR_C_CORE_DLL(INT_PTR) CallProtoService(const char *szModule, const char *szService, WPARAM wParam, LPARAM lParam);
#endif
///////////////////////////////////////////////////////////////////////////////
@@ -217,10 +220,11 @@ MIR_CORE_DLL(void) mir_md5_hash(const mir_md5_byte_t *data, int len, mir_md5_byt
///////////////////////////////////////////////////////////////////////////////
// memory functions
-MIR_CORE_DLL(void*) mir_alloc(size_t);
-MIR_CORE_DLL(void*) mir_calloc(size_t);
-MIR_CORE_DLL(void*) mir_realloc(void* ptr, size_t);
-MIR_CORE_DLL(void) mir_free(void* ptr);
+MIR_C_CORE_DLL(void*) mir_alloc(size_t);
+MIR_C_CORE_DLL(void*) mir_calloc(size_t);
+MIR_C_CORE_DLL(void*) mir_realloc(void* ptr, size_t);
+MIR_C_CORE_DLL(void) mir_free(void* ptr);
+
MIR_CORE_DLL(char*) mir_strdup(const char* str);
MIR_CORE_DLL(WCHAR*) mir_wstrdup(const WCHAR* str);
MIR_CORE_DLL(char*) mir_strndup(const char* str, size_t len);
@@ -372,9 +376,13 @@ typedef void (__cdecl *pThreadFunc)(void*);
typedef unsigned (__stdcall *pThreadFuncEx)(void*);
typedef unsigned (__cdecl *pThreadFuncOwner)(void *owner, void* param);
-MIR_CORE_DLL(INT_PTR) UnwindThreadPush(WPARAM wParam, LPARAM lParam);
-MIR_CORE_DLL(INT_PTR) UnwindThreadPop(WPARAM, LPARAM);
-MIR_CORE_DLL(void) UnwindThreadWait(void);
+#if defined( __cplusplus )
+MIR_CORE_DLL(INT_PTR) Thread_Push(HINSTANCE hInst, void* pOwner=NULL);
+#else
+MIR_CORE_DLL(INT_PTR) Thread_Push(HINSTANCE hInst, void* pOwner);
+#endif
+MIR_CORE_DLL(INT_PTR) Thread_Pop(void);
+MIR_CORE_DLL(void) Thread_Wait(void);
MIR_CORE_DLL(UINT_PTR) forkthread(pThreadFunc, unsigned long stacksize, void *arg);
MIR_CORE_DLL(UINT_PTR) forkthreadex(void *sec, unsigned stacksize, pThreadFuncEx, void* owner, void *arg, unsigned *thraddr);
diff --git a/plugins/Mir_core/Miranda32.lib b/plugins/Mir_core/Miranda32.lib
index 310b8f690e..966aff352a 100644
--- a/plugins/Mir_core/Miranda32.lib
+++ b/plugins/Mir_core/Miranda32.lib
Binary files differ
diff --git a/plugins/Mir_core/Miranda64.lib b/plugins/Mir_core/Miranda64.lib
index 5b367952fd..b3feb4c445 100644
--- a/plugins/Mir_core/Miranda64.lib
+++ b/plugins/Mir_core/Miranda64.lib
Binary files differ
diff --git a/plugins/Mir_core/langpack.cpp b/plugins/Mir_core/langpack.cpp
index 140efb823a..eb3b4619b5 100644
--- a/plugins/Mir_core/langpack.cpp
+++ b/plugins/Mir_core/langpack.cpp
@@ -579,7 +579,7 @@ MIR_CORE_DLL(void) LangPackDropUnusedItems(void)
/////////////////////////////////////////////////////////////////////////////////////////
-int LoadLangPackModule(void)
+MIR_CORE_DLL(int) LoadLangPackModule(void)
{
bModuleInitialized = TRUE;
diff --git a/plugins/Mir_core/memory.cpp b/plugins/Mir_core/memory.cpp
index 25b4d880c2..a14d9fd3ad 100644
--- a/plugins/Mir_core/memory.cpp
+++ b/plugins/Mir_core/memory.cpp
@@ -63,7 +63,7 @@ static int CheckBlock(void* blk)
/******************************************************************************/
-MIR_CORE_DLL(void*) mir_alloc(size_t size)
+MIR_C_CORE_DLL(void*) mir_alloc(size_t size)
{
if (size == 0)
return NULL;
@@ -85,7 +85,7 @@ MIR_CORE_DLL(void*) mir_alloc(size_t size)
/******************************************************************************/
-MIR_CORE_DLL(void*) mir_calloc(size_t size)
+MIR_C_CORE_DLL(void*) mir_calloc(size_t size)
{
void* p = mir_alloc(size);
if (p != NULL)
@@ -95,7 +95,7 @@ MIR_CORE_DLL(void*) mir_calloc(size_t size)
/******************************************************************************/
-MIR_CORE_DLL(void*) mir_realloc(void* ptr, size_t size)
+MIR_C_CORE_DLL(void*) mir_realloc(void* ptr, size_t size)
{
char* p;
@@ -123,7 +123,7 @@ MIR_CORE_DLL(void*) mir_realloc(void* ptr, size_t size)
/******************************************************************************/
-MIR_CORE_DLL(void) mir_free(void* ptr)
+MIR_C_CORE_DLL(void) mir_free(void* ptr)
{
char* p;
DWORD size;
diff --git a/plugins/Mir_core/mir_core.def b/plugins/Mir_core/mir_core.def
index 78e8323ff8..ac94078de8 100644
--- a/plugins/Mir_core/mir_core.def
+++ b/plugins/Mir_core/mir_core.def
@@ -1,5 +1,109 @@
LIBRARY mir_core
EXPORTS
- CallContactService @1
- CallProtoService @2
+CallContactService @1
+CallProtoService @2
+LangPackLookupUuid @3 NONAME
+LangPackMarkPluginLoaded @4 NONAME
+CallFunctionAsync @5
+CallHookSubscribers @6
+CallPluginEventHook @7
+CallService @8
+CallServiceSync @9
+CreateDirectoryTree @10
+CreateDirectoryTreeW @11
+CreateHookableEvent @12
+CreatePathToFile @13
+CreatePathToFileW @14
+CreateServiceFunction @15
+CreateServiceFunctionObj @16
+CreateServiceFunctionObjParam @17
+CreateServiceFunctionParam @18
+DestroyHookableEvent @19
+DestroyServiceFunction @20
+GetExceptionFilter @21
+GetInstByAddress @22
+HookEvent @23
+HookEventMessage @24
+HookEventObj @25
+HookEventObjParam @26
+HookEventParam @27
+KillModuleEventHooks @28
+KillModuleServices @29
+KillObjectEventHooks @30
+KillObjectServices @31
+KillObjectThreads @32
+LangPackDropUnusedItems @33
+LangPackGetDefaultCodePage @34
+LangPackGetDefaultLocale @35
+LangPackPcharToTchar @36
+List_Copy @37
+List_Create @38
+List_Destroy @39
+List_Find @40
+List_GetIndex @41
+List_IndexOf @42
+List_Insert @43
+List_InsertPtr @44
+List_ObjCopy @45
+List_Remove @46
+List_RemovePtr @47
+LoadLangPack @48
+LoadLangPackModule @49
+NotifyEventHooks @50
+PathToAbsolute @51
+PathToAbsoluteW @52
+PathToRelative @53
+PathToRelativeW @54
+RegisterModule @55
+ReloadLangpack @56
+ServiceExists @57
+SetExceptionFilter @58
+SetHookDefaultForHookableEvent @59
+Thread_Pop @60
+Thread_Push @61
+Thread_Wait @62
+TranslateA_LP @63
+TranslateDialog_LP @64
+TranslateMenu_LP @65
+TranslateW_LP @66
+Ucs2toUtf8Len @67
+UnhookEvent @68
+UnregisterModule @69
+Utf8Decode @70
+Utf8DecodeCP @71
+Utf8DecodeW @72
+Utf8Encode @73
+Utf8EncodeCP @74
+Utf8EncodeW @75
+forkthread @76
+forkthreadex @77
+ltrim @78
+ltrimp @79
+mir_a2u @80
+mir_a2u_cp @81
+mir_alloc @82
+mir_calloc @83
+mir_free @84
+mir_hash @85
+mir_md5_append @86
+mir_md5_finish @87
+mir_md5_hash @88
+mir_md5_init @89
+mir_realloc @90
+mir_sha1_append @91
+mir_sha1_finish @92
+mir_sha1_hash @93
+mir_sha1_init @94
+mir_strdup @95
+mir_strndup @96
+mir_u2a @97
+mir_u2a_cp @98
+mir_vsnprintf @99
+mir_vsntprintf @100
+mir_wstrdup @101
+rtrim @102
+wildcmp @103
+wrtrim @104
+mir_snprintf @105
+mir_sntprintf @106
diff --git a/plugins/Mir_core/mir_core_10.vcxproj b/plugins/Mir_core/mir_core_10.vcxproj
index 54c1b2bb2b..1e6d7de8d1 100644
--- a/plugins/Mir_core/mir_core_10.vcxproj
+++ b/plugins/Mir_core/mir_core_10.vcxproj
@@ -144,7 +144,7 @@
<ModuleDefinitionFile>mir_core.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <ImportLibrary>$(IntDir)$(TargetName)64.lib</ImportLibrary>
<SubSystem>Windows</SubSystem>
<AdditionalDependencies>miranda64.lib;ws2_32.lib;comctl32.lib;winmm.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>
@@ -208,7 +208,7 @@
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <ImportLibrary>$(IntDir)$(TargetName)64.lib</ImportLibrary>
<SubSystem>Windows</SubSystem>
<AdditionalDependencies>miranda64.lib;ws2_32.lib;comctl32.lib;winmm.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>
diff --git a/plugins/Mir_core/miranda.cpp b/plugins/Mir_core/miranda.cpp
index 7f48e05bb2..0ca0f4bd6c 100644
--- a/plugins/Mir_core/miranda.cpp
+++ b/plugins/Mir_core/miranda.cpp
@@ -65,7 +65,7 @@ struct THREAD_WAIT_ENTRY
HANDLE hThread;
HINSTANCE hOwner;
void* pObject;
- PVOID addr;
+ //PVOID addr;
};
static LIST<THREAD_WAIT_ENTRY> threads(10, NumericKeySortT);
@@ -197,6 +197,8 @@ static int MirandaWaitForMutex(HANDLE hEvent)
}
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
static void CALLBACK KillAllThreads(HWND, UINT, UINT_PTR, DWORD)
{
if ( MirandaWaitForMutex(hStackMutex)) {
@@ -252,7 +254,9 @@ MIR_CORE_DLL(void) KillObjectThreads(void* owner)
}
}
-MIR_CORE_DLL(void) UnwindThreadWait(void)
+/////////////////////////////////////////////////////////////////////////////////////////
+
+MIR_CORE_DLL(void) Thread_Wait(void)
{
// acquire the list and wake up any alertable threads
if ( MirandaWaitForMutex(hStackMutex)) {
@@ -274,29 +278,7 @@ MIR_CORE_DLL(void) UnwindThreadWait(void)
typedef LONG (WINAPI *pNtQIT)(HANDLE, LONG, PVOID, ULONG, PULONG);
#define ThreadQuerySetWin32StartAddress 9
-MIR_CORE_DLL(void*) GetCurrentThreadEntryPoint()
-{
- LONG ntStatus;
- HANDLE hDupHandle, hCurrentProcess;
- DWORD_PTR dwStartAddress;
-
- pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(GetModuleHandle(_T("ntdll.dll")), "NtQueryInformationThread");
- if (NtQueryInformationThread == NULL)
- return 0;
-
- hCurrentProcess = GetCurrentProcess();
- if ( !DuplicateHandle(hCurrentProcess, GetCurrentThread(), hCurrentProcess, &hDupHandle, THREAD_QUERY_INFORMATION, FALSE, 0)) {
- SetLastError(ERROR_ACCESS_DENIED);
- return NULL;
- }
- ntStatus = NtQueryInformationThread(hDupHandle, ThreadQuerySetWin32StartAddress, &dwStartAddress, sizeof(DWORD_PTR), NULL);
- CloseHandle(hDupHandle);
-
- if (ntStatus != ERROR_SUCCESS) return 0;
- return (void*)dwStartAddress;
-}
-
-MIR_CORE_DLL(INT_PTR) UnwindThreadPush(WPARAM wParam, LPARAM lParam)
+MIR_CORE_DLL(INT_PTR) Thread_Push(HINSTANCE hInst, void* pOwner)
{
ResetEvent(hThreadQueueEmpty); // thread list is not empty
if ( WaitForSingleObject(hStackMutex, INFINITE) == WAIT_OBJECT_0) {
@@ -304,9 +286,8 @@ MIR_CORE_DLL(INT_PTR) UnwindThreadPush(WPARAM wParam, LPARAM lParam)
DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &p->hThread, 0, FALSE, DUPLICATE_SAME_ACCESS);
p->dwThreadId = GetCurrentThreadId();
- p->pObject = (void*)wParam;
- p->hOwner = GetInstByAddress((void*)lParam);
- p->addr = (void*)lParam;
+ p->pObject = pOwner;
+ p->hOwner = hInst;
threads.insert(p);
ReleaseMutex(hStackMutex);
@@ -314,7 +295,9 @@ MIR_CORE_DLL(INT_PTR) UnwindThreadPush(WPARAM wParam, LPARAM lParam)
return 0;
}
-MIR_CORE_DLL(INT_PTR) UnwindThreadPop(WPARAM, LPARAM)
+/////////////////////////////////////////////////////////////////////////////////////////
+
+MIR_CORE_DLL(INT_PTR) Thread_Pop()
{
if ( WaitForSingleObject(hStackMutex, INFINITE) == WAIT_OBJECT_0) {
DWORD dwThreadId = GetCurrentThreadId();
diff --git a/src/core/miranda.cpp b/src/core/miranda.cpp
index 8985d2a333..7a463c05c6 100644
--- a/src/core/miranda.cpp
+++ b/src/core/miranda.cpp
@@ -2,7 +2,7 @@
Miranda IM: the free IM client for Microsoft* Windows*
-Copyright 2000-2012 Miranda ICQ/IM project,
+Copyright 2000-2012 Miranda ICQ/IM project,
all portions of this codebase are copyrighted to the people
listed in contributors.txt.
@@ -11,7 +11,7 @@ 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,
+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.
@@ -126,27 +126,6 @@ static INT_PTR ForkThreadServiceEx(WPARAM wParam, LPARAM lParam)
typedef LONG (WINAPI *pNtQIT)(HANDLE, LONG, PVOID, ULONG, PULONG);
#define ThreadQuerySetWin32StartAddress 9
-void* GetCurrentThreadEntryPoint()
-{
- LONG ntStatus;
- HANDLE hDupHandle, hCurrentProcess;
- DWORD_PTR dwStartAddress;
-
- pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(GetModuleHandle(_T("ntdll.dll")), "NtQueryInformationThread");
- if (NtQueryInformationThread == NULL) return 0;
-
- hCurrentProcess = GetCurrentProcess();
- if ( !DuplicateHandle(hCurrentProcess, GetCurrentThread(), hCurrentProcess, &hDupHandle, THREAD_QUERY_INFORMATION, FALSE, 0)) {
- SetLastError(ERROR_ACCESS_DENIED);
- return NULL;
- }
- ntStatus = NtQueryInformationThread(hDupHandle, ThreadQuerySetWin32StartAddress, &dwStartAddress, sizeof(DWORD_PTR), NULL);
- CloseHandle(hDupHandle);
-
- if (ntStatus != ERROR_SUCCESS) return 0;
- return (void*)dwStartAddress;
-}
-
INT_PTR MirandaIsTerminated(WPARAM, LPARAM)
{
return WaitForSingleObject(hMirandaShutdown, 0) == WAIT_OBJECT_0;
@@ -246,8 +225,8 @@ void ParseCommandLine()
if (hProcess) {
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_WAITRESTART), NULL, WaitForProcessDlgProc, (LPARAM)hProcess);
CloseHandle(hProcess);
- }
- }
+ }
+ }
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
@@ -367,7 +346,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
DWORD pid = 0;
checkIdle(&msg);
if (h != NULL && GetWindowThreadProcessId(h, &pid) && pid == myPid && GetClassLongPtr(h, GCW_ATOM) == 32770)
- if (IsDialogMessage(h, &msg))
+ if (IsDialogMessage(h, &msg))
continue;
TranslateMessage(&msg);
@@ -381,7 +360,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
NotifyEventHooks(hPreShutdownEvent, 0, 0);
// this spins and processes the msg loop, objects and APC.
- UnwindThreadWait();
+ Thread_Wait();
NotifyEventHooks(hShutdownEvent, 0, 0);
// if the hooks generated any messages, it'll get processed before the second WM_QUIT
PostQuitMessage(0);
@@ -418,19 +397,16 @@ static INT_PTR OkToExit(WPARAM, LPARAM)
static INT_PTR GetMirandaVersion(WPARAM, LPARAM)
{
TCHAR filename[MAX_PATH];
- DWORD unused;
- DWORD verInfoSize;
- UINT blockSize;
- PVOID pVerInfo;
- VS_FIXEDFILEINFO *vsffi;
- DWORD ver;
-
GetModuleFileName(NULL, filename, SIZEOF(filename));
- verInfoSize=GetFileVersionInfoSize(filename, &unused);
- pVerInfo=mir_alloc(verInfoSize);
+
+ DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
+ PVOID pVerInfo = mir_alloc(verInfoSize);
GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
+
+ UINT blockSize;
+ VS_FIXEDFILEINFO *vsffi;
VerQueryValue(pVerInfo, _T("\\"), (PVOID*)&vsffi, &blockSize);
- ver=(((vsffi->dwProductVersionMS>>16)&0xFF)<<24)|
+ DWORD ver = (((vsffi->dwProductVersionMS>>16)&0xFF)<<24)|
((vsffi->dwProductVersionMS&0xFF)<<16)|
(((vsffi->dwProductVersionLS>>16)&0xFF)<<8)|
(vsffi->dwProductVersionLS&0xFF);
@@ -464,7 +440,7 @@ INT_PTR WaitOnHandle(WPARAM wParam, LPARAM lParam)
{
if (waitObjectCount >= MAXIMUM_WAIT_OBJECTS-1)
return 1;
-
+
hWaitObjects[waitObjectCount] = (HANDLE)wParam;
pszWaitServices[waitObjectCount] = (char*)lParam;
waitObjectCount++;
@@ -476,7 +452,7 @@ static INT_PTR RemoveWait(WPARAM wParam, LPARAM)
int i;
for (i=0;i<waitObjectCount;i++)
- if (hWaitObjects[i] == (HANDLE)wParam)
+ if (hWaitObjects[i] == (HANDLE)wParam)
break;
if (i == waitObjectCount)
@@ -490,166 +466,18 @@ static INT_PTR RemoveWait(WPARAM wParam, LPARAM)
///////////////////////////////////////////////////////////////////////////////
-struct MM_INTERFACE
-{
- size_t cbSize;
- void* (*mmi_malloc) (size_t);
- void* (*mmi_realloc) (void*, size_t);
- void (*mmi_free) (void*);
-
- void* (*mmi_calloc) (size_t);
- char* (*mmi_strdup) (const char *src);
- wchar_t* (*mmi_wstrdup) (const wchar_t *src);
- int (*mir_snprintf) (char *buffer, size_t count, const char* fmt, ...);
- int (*mir_sntprintf) (TCHAR *buffer, size_t count, const TCHAR* fmt, ...);
- int (*mir_vsnprintf) (char *buffer, size_t count, const char* fmt, va_list va);
- int (*mir_vsntprintf) (TCHAR *buffer, size_t count, const TCHAR* fmt, va_list va);
-
- wchar_t* (*mir_a2u_cp) (const char* src, int codepage);
- wchar_t* (*mir_a2u)(const char* src);
- char* (*mir_u2a_cp)(const wchar_t* src, int codepage);
- char* (*mir_u2a)(const wchar_t* src);
-};
-
-#define MS_SYSTEM_GET_MMI "Miranda/System/GetMMI"
-
-INT_PTR GetMemoryManagerInterface(WPARAM, LPARAM lParam)
-{
- struct MM_INTERFACE *mmi = (struct MM_INTERFACE*) lParam;
- if (mmi == NULL)
- return 1;
-
- mmi->mmi_malloc = mir_alloc;
- mmi->mmi_realloc = mir_realloc;
- mmi->mmi_free = mir_free;
-
- switch(mmi->cbSize) {
- case sizeof(struct MM_INTERFACE):
- mmi->mir_snprintf = mir_snprintf;
- mmi->mir_sntprintf = mir_sntprintf;
- mmi->mir_vsnprintf = mir_vsnprintf;
- mmi->mir_vsntprintf = mir_vsntprintf;
- mmi->mir_a2u_cp = mir_a2u_cp;
- mmi->mir_a2u = mir_a2u;
- mmi->mir_u2a_cp = mir_u2a_cp;
- mmi->mir_u2a = mir_u2a;
- // fall through
-
- case MMI_SIZE_V2:
- mmi->mmi_calloc = mir_calloc;
- mmi->mmi_strdup = mir_strdup;
- mmi->mmi_wstrdup = mir_wstrdup;
- // fall through
-
- case MMI_SIZE_V1:
- break;
-
- default:
-#if defined(_DEBUG)
- DebugBreak();
-#endif
- return 1;
- }
-
+static INT_PTR UnwindThreadPush(WPARAM wParam, LPARAM lParam)
+{ Thread_Push((HINSTANCE)lParam, (void*)wParam);
return 0;
}
-///////////////////////////////////////////////////////////////////////////////
-
-struct LIST_INTERFACE
-{
- size_t cbSize;
-
- SortedList* (*List_Create)(int, int);
- void (*List_Destroy)(SortedList*);
-
- void* (*List_Find)(SortedList*, void*);
- int (*List_GetIndex)(SortedList*, void*, int*);
- int (*List_Insert)(SortedList*, void*, int);
- int (*List_Remove)(SortedList*, int);
- int (*List_IndexOf)(SortedList*, void*);
-
- int (*List_InsertPtr)(SortedList* list, void* p);
- int (*List_RemovePtr)(SortedList* list, void* p);
-
- void (*List_Copy)(SortedList* src, SortedList* dst, size_t);
- void (*List_ObjCopy)(SortedList* src, SortedList* dst, size_t);
-};
-
-#define MS_SYSTEM_GET_LI "Miranda/System/GetLI"
-
-INT_PTR GetListInterface(WPARAM, LPARAM lParam)
-{
- struct LIST_INTERFACE *li = (struct LIST_INTERFACE*) lParam;
- if (li == NULL)
- return 1;
-
- li->List_Copy = List_Copy;
- li->List_ObjCopy = List_ObjCopy;
- li->List_InsertPtr = List_InsertPtr;
- li->List_RemovePtr = List_RemovePtr;
- li->List_Create = List_Create;
- li->List_Destroy = List_Destroy;
- li->List_Find = List_Find;
- li->List_GetIndex = List_GetIndex;
- li->List_Insert = List_Insert;
- li->List_Remove = List_Remove;
- li->List_IndexOf = List_IndexOf;
+static INT_PTR UnwindThreadPop(WPARAM, LPARAM)
+{ Thread_Pop();
return 0;
}
///////////////////////////////////////////////////////////////////////////////
-struct UTF8_INTERFACE
-{
- size_t cbSize;
-
- // decodes utf8 and places the result back into the same buffer.
- // if the second parameter is present, the additional wchar_t* string gets allocated,
- // and filled with the decoded utf8 content without any information loss.
- // this string should be freed using mir_free()
- char* (*utf8_decode)(char* str, wchar_t** ucs2);
- char* (*utf8_decodecp)(char* str, int codepage, wchar_t** ucs2);
-
- // encodes an ANSI string into a utf8 format using the current langpack code page,
- // or CP_ACP, if lanpack is missing
- // the resulting string should be freed using mir_free
- char* (*utf8_encode)(const char* src);
- char* (*utf8_encodecp)(const char* src, int codepage);
-
- // encodes an WCHAR string into a utf8 format
- // the resulting string should be freed using mir_free
- char* (*utf8_encodeW)(const wchar_t* src);
-
- // decodes utf8 and returns the result as wchar_t* that should be freed using mir_free()
- // the input buffer remains unchanged
- wchar_t* (*utf8_decodeW)(const char* str);
-
- // returns the predicted length of the utf-8 string
- int (*utf8_lenW)(const wchar_t* src);
-};
-
-#define MS_SYSTEM_GET_UTFI "Miranda/System/GetUTFI"
-
-INT_PTR GetUtfInterface(WPARAM, LPARAM lParam)
-{
- struct UTF8_INTERFACE *utfi = (struct UTF8_INTERFACE*) lParam;
- if (utfi == NULL)
- return 1;
-
- if (utfi->cbSize != sizeof(UTF8_INTERFACE))
- return 1;
-
- utfi->utf8_decode = Utf8Decode;
- utfi->utf8_decodecp = Utf8DecodeCP;
- utfi->utf8_encode = Utf8Encode;
- utfi->utf8_encodecp = Utf8EncodeCP;
- utfi->utf8_encodeW = Utf8EncodeW;
- utfi->utf8_decodeW = Utf8DecodeW;
- utfi->utf8_lenW = Ucs2toUtf8Len;
- return 0;
-}
-
int LoadSystemModule(void)
{
hMirandaShutdown = CreateEvent(NULL, TRUE, FALSE, NULL);
@@ -670,9 +498,6 @@ int LoadSystemModule(void)
CreateServiceFunction(MS_SYSTEM_GETVERSIONTEXT, GetMirandaVersionText);
CreateServiceFunction(MS_SYSTEM_WAITONHANDLE, WaitOnHandle);
CreateServiceFunction(MS_SYSTEM_REMOVEWAIT, RemoveWait);
- CreateServiceFunction(MS_SYSTEM_GET_LI, GetListInterface);
- CreateServiceFunction(MS_SYSTEM_GET_MMI, GetMemoryManagerInterface);
- CreateServiceFunction(MS_SYSTEM_GET_UTFI, GetUtfInterface);
CreateServiceFunction(MS_SYSTEM_GETEXCEPTFILTER, srvGetExceptionFilter);
CreateServiceFunction(MS_SYSTEM_SETEXCEPTFILTER, srvSetExceptionFilter);
return 0;
diff --git a/src/miranda32_10.vcxproj b/src/miranda32_10.vcxproj
index 09a3493e91..31d08d7b3c 100644
--- a/src/miranda32_10.vcxproj
+++ b/src/miranda32_10.vcxproj
@@ -101,6 +101,7 @@
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
<AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
+ <ModuleDefinitionFile>miranda32.def</ModuleDefinitionFile>
</Link>
<PreBuildEvent>
<Command>..\bin10\make_ver.bat</Command>
@@ -170,6 +171,7 @@
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
<AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
+ <ModuleDefinitionFile>miranda32.def</ModuleDefinitionFile>
</Link>
<PreBuildEvent>
<Command>..\bin10\make_ver.bat</Command>
@@ -525,9 +527,6 @@
<ClCompile Include="modules\utils\imgconv.cpp">
<PrecompiledHeaderFile>..\..\core\commonheaders.h</PrecompiledHeaderFile>
</ClCompile>
- <ClCompile Include="modules\utils\md5.cpp">
- <PrecompiledHeaderFile>..\..\core\commonheaders.h</PrecompiledHeaderFile>
- </ClCompile>
<ClCompile Include="modules\utils\openurl.cpp">
<PrecompiledHeaderFile>..\..\core\commonheaders.h</PrecompiledHeaderFile>
</ClCompile>
diff --git a/src/miranda32_10.vcxproj.filters b/src/miranda32_10.vcxproj.filters
index ee80ca5714..1edbf008b5 100644
--- a/src/miranda32_10.vcxproj.filters
+++ b/src/miranda32_10.vcxproj.filters
@@ -674,9 +674,6 @@
<ClCompile Include="modules\utils\utils.cpp">
<Filter>Modules\utils</Filter>
</ClCompile>
- <ClCompile Include="modules\utils\md5.cpp">
- <Filter>Modules\utils</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="res\_blank.ico">
diff --git a/src/modules/database/database.cpp b/src/modules/database/database.cpp
index 94adf17742..ec97fcaa9f 100644
--- a/src/modules/database/database.cpp
+++ b/src/modules/database/database.cpp
@@ -24,8 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "profilemanager.h"
#include "../srfile/file.h"
-// from the plugin loader, hate extern but the db frontend is pretty much tied
-extern PLUGINLINK pluginCoreLink;
// contains the location of mirandaboot.ini
extern TCHAR mirandabootini[MAX_PATH];
bool dbCreated;
diff --git a/src/modules/netlib/netlibhttpproxy.cpp b/src/modules/netlib/netlibhttpproxy.cpp
index 7e0472c155..2e0824d3bd 100644
--- a/src/modules/netlib/netlibhttpproxy.cpp
+++ b/src/modules/netlib/netlibhttpproxy.cpp
@@ -351,15 +351,6 @@ int NetlibHttpGatewayRecv(struct NetlibConnection *nlc, char *buf, int len, int
{
nlhrReply->pData = (char*)nlc->nlu->user.pfnHttpGatewayUnwrapRecv(nlhrReply,
(PBYTE)nlhrReply->pData, nlhrReply->dataLength, &nlhrReply->dataLength, mir_realloc);
-/*
- if (newBuffer == NULL)
- {
- NetlibHttpFreeRequestStruct(0, (LPARAM)nlhrReply);
- return SOCKET_ERROR;
- }
- else
- nlhrReply->pData = (char*)newBuffer;
-*/
}
if (nlhrReply->resultCode >= 300)
diff --git a/src/modules/plugins/newplugins.cpp b/src/modules/plugins/newplugins.cpp
index dcef628238..040a870cca 100644
--- a/src/modules/plugins/newplugins.cpp
+++ b/src/modules/plugins/newplugins.cpp
@@ -47,7 +47,6 @@ const int pluginBannedListCount = SIZEOF(pluginBannedList);
static BOOL bModuleInitialized = FALSE;
-PLUGINLINK pluginCoreLink;
TCHAR mirandabootini[MAX_PATH];
static DWORD mirandaVersion;
static int serviceModeIdx = -1;
@@ -182,8 +181,7 @@ int checkAPI(TCHAR* plugin, BASIC_PLUGIN_INFO* bpi, DWORD mirandaVersion, int ch
// fontservice plugin is built into the core now
TCHAR* p = _tcsrchr(plugin, '\\');
if (p != NULL && ++p) {
- int i;
- for (i = 0; i < SIZEOF(modulesToSkip); i++)
+ for (int i = 0; i < SIZEOF(modulesToSkip); i++)
if (lstrcmpi(p, modulesToSkip[i]) == 0)
return 0;
}
@@ -494,7 +492,7 @@ bool TryLoadPlugin(pluginEntry *p, bool bDynamic)
}
RegisterModule(p->bpi.hInst);
- if (bpi.Load(&pluginCoreLink) != 0)
+ if (bpi.Load() != 0)
return false;
p->pclass |= PCLASS_LOADED;
@@ -520,7 +518,7 @@ static pluginEntry* getCListModule(TCHAR * exe, TCHAR * slice, int useWhiteList)
p->bpi = bpi;
p->pclass |= PCLASS_LAST | PCLASS_OK | PCLASS_BASICAPI;
RegisterModule(p->bpi.hInst);
- if (bpi.clistlink(&pluginCoreLink) == 0) {
+ if (bpi.clistlink() == 0) {
p->bpi = bpi;
p->pclass |= PCLASS_LOADED;
return p;
@@ -588,7 +586,7 @@ int LoadServiceModePlugin(void)
while (p != NULL) {
if (serviceModeIdx == i++) {
- if (p->bpi.Load(&pluginCoreLink) == 0) {
+ if (p->bpi.Load() == 0) {
p->pclass |= PCLASS_LOADED;
if (CallService(MS_SERVICEMODE_LAUNCH, 0, 0) != CALLSERVICE_NOTFOUND)
return 1;
@@ -641,7 +639,7 @@ int LoadNewPluginsModule(void)
// if Crash Dumper is present, load it to provide Crash Reports
if (pluginList_crshdmp != NULL && isPluginOnWhiteList(pluginList_crshdmp->pluginname))
{
- if (pluginList_crshdmp->bpi.Load(&pluginCoreLink) == 0)
+ if (pluginList_crshdmp->bpi.Load() == 0)
pluginList_crshdmp->pclass |= PCLASS_LOADED | PCLASS_LAST;
else
Plugin_Uninit(pluginList_crshdmp);
@@ -654,7 +652,7 @@ int LoadNewPluginsModule(void)
if (checkAPI(exe, &bpi, mirandaVersion, CHECKAPI_NONE)) {
pluginList_freeimg->bpi = bpi;
pluginList_freeimg->pclass |= PCLASS_OK | PCLASS_BASICAPI;
- if (bpi.Load(&pluginCoreLink) == 0)
+ if (bpi.Load() == 0)
pluginList_freeimg->pclass |= PCLASS_LOADED;
else
Plugin_Uninit(pluginList_freeimg);
@@ -714,33 +712,6 @@ int LoadNewPluginsModuleInfos(void)
CreateServiceFunction(MS_PLUGINS_ENUMDBPLUGINS, PluginsEnum);
CreateServiceFunction(MS_PLUGINS_GETDISABLEDEFAULTARRAY, PluginsGetDefaultArray);
- // make sure plugins can get internal core APIs
- pluginCoreLink.CallService = CallService;
- pluginCoreLink.ServiceExists = ServiceExists;
- pluginCoreLink.CreateServiceFunction = CreateServiceFunction;
- pluginCoreLink.CreateServiceFunctionParam = CreateServiceFunctionParam;
- pluginCoreLink.CreateServiceFunctionObj = CreateServiceFunctionObj;
- pluginCoreLink.CreateServiceFunctionObjParam = CreateServiceFunctionObjParam;
- pluginCoreLink.CreateTransientServiceFunction = CreateServiceFunction;
- pluginCoreLink.DestroyServiceFunction = DestroyServiceFunction;
- pluginCoreLink.CreateHookableEvent = CreateHookableEvent;
- pluginCoreLink.DestroyHookableEvent = DestroyHookableEvent;
- pluginCoreLink.HookEvent = HookEvent;
- pluginCoreLink.HookEventParam = HookEventParam;
- pluginCoreLink.HookEventObj = HookEventObj;
- pluginCoreLink.HookEventObjParam = HookEventObjParam;
- pluginCoreLink.HookEventMessage = HookEventMessage;
- pluginCoreLink.UnhookEvent = UnhookEvent;
- pluginCoreLink.NotifyEventHooks = NotifyEventHooks;
- pluginCoreLink.SetHookDefaultForHookableEvent = SetHookDefaultForHookableEvent;
- pluginCoreLink.CallServiceSync = CallServiceSync;
- pluginCoreLink.CallFunctionAsync = CallFunctionAsync;
- pluginCoreLink.NotifyEventHooksDirect = CallHookSubscribers;
- pluginCoreLink.CallProtoService = CallProtoService;
- pluginCoreLink.CallContactService = CallContactService;
- pluginCoreLink.KillObjectServices = KillObjectServices;
- pluginCoreLink.KillObjectEventHooks = KillObjectEventHooks;
-
// remember where the mirandaboot.ini goes
PathToAbsoluteT(_T("mirandaboot.ini"), mirandabootini, NULL);
// look for all *.dll's
diff --git a/src/modules/plugins/plugins.h b/src/modules/plugins/plugins.h
index aa0251ab97..686f0e0963 100644
--- a/src/modules/plugins/plugins.h
+++ b/src/modules/plugins/plugins.h
@@ -9,14 +9,14 @@
#define DEFMOD_REMOVED_PROTOCOLNETLIB 22
// basic export prototypes
-typedef int (__cdecl * Miranda_Plugin_Load) (PLUGINLINK *);
+typedef int (__cdecl * Miranda_Plugin_Load) (void);
typedef int (__cdecl * Miranda_Plugin_Unload) (void);
// version control
typedef PLUGININFOEX * (__cdecl * Miranda_Plugin_InfoEx) (DWORD mirandaVersion);
// prototype for databases
typedef DATABASELINK * (__cdecl * Database_Plugin_Info) (void * reserved);
// prototype for clists
-typedef int (__cdecl * CList_Initialise) (PLUGINLINK *);
+typedef int (__cdecl * CList_Initialise) (void);
// Interface support
typedef MUUID * (__cdecl * Miranda_Plugin_Interfaces) (void);
diff --git a/src/modules/utils/md5.cpp b/src/modules/utils/md5.cpp
deleted file mode 100644
index 1ab0184e3e..0000000000
--- a/src/modules/utils/md5.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- L. Peter Deutsch
- ghost@aladdin.com
-
- */
-/* $Id: md5.c 2874 2006-05-16 21:38:00Z ghazan $ */
-/*
- Independent implementation of MD5 (RFC 1321).
-
- This code implements the MD5 Algorithm defined in RFC 1321, whose
- text is available at
- http://www.ietf.org/rfc/rfc1321.txt
- The code is derived from the text of the RFC, including the test suite
- (section A.5) but excluding the rest of Appendix A. It does not include
- any code or documentation that is identified in the RFC as being
- copyrighted.
-
- The original and principal author of md5.c is L. Peter Deutsch
- <ghost@aladdin.com>. Other authors are noted in the change history
- that follows (in reverse chronological order):
-
- 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
- either statically or dynamically; added missing #include <string.h>
- in library.
- 2002-03-11 lpd Corrected argument list for main(), and added int return
- type, in test program and T value program.
- 2002-02-21 lpd Added missing #include <stdio.h> in test program.
- 2000-07-03 lpd Patched to eliminate warnings about "constant is
- unsigned in ANSI C, signed in traditional"; made test program
- self-checking.
- 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
- 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
- 1999-05-03 lpd Original version.
- */
-
-// (C) 2005 Joe @ Whale - changed to compile with Miranda
-
-#include "..\..\core\commonheaders.h"
-
-struct MD5_INTERFACE
-{
- int cbSize;
- void (*md5_init) (mir_md5_state_t *pms);
- void (*md5_append) (mir_md5_state_t *pms, const mir_md5_byte_t *data, int nbytes);
- void (*md5_finish) (mir_md5_state_t *pms, mir_md5_byte_t digest[16]);
- void (*md5_hash) (const mir_md5_byte_t *data, int len, mir_md5_byte_t digest[16]);
-};
-
-INT_PTR GetMD5Interface(WPARAM, LPARAM lParam)
-{
- struct MD5_INTERFACE *md5i = (struct MD5_INTERFACE*) lParam;
- if (md5i == NULL)
- return 1;
- if (md5i->cbSize != sizeof(struct MD5_INTERFACE))
- return 1;
-
- md5i->md5_init = mir_md5_init;
- md5i->md5_append = mir_md5_append;
- md5i->md5_finish = mir_md5_finish;
- md5i->md5_hash = mir_md5_hash;
- return 0;
-}
diff --git a/src/modules/utils/utils.cpp b/src/modules/utils/utils.cpp
index 3ed6446003..bb0a60c67f 100644
--- a/src/modules/utils/utils.cpp
+++ b/src/modules/utils/utils.cpp
@@ -37,9 +37,6 @@ void InitXmlApi(void);
void InitTimeZones(void);
void UninitTimeZones(void);
-INT_PTR GetMD5Interface(WPARAM, LPARAM);
-INT_PTR GetSHA1Interface(WPARAM, LPARAM);
-
static BOOL bModuleInitialized = FALSE;
static struct CountryListEntry countries[]={
@@ -476,7 +473,6 @@ int LoadUtilsModule(void)
CreateServiceFunction(MS_UTILS_GETCOUNTRYLIST, GetCountryList);
CreateServiceFunction(MS_UTILS_GETRANDOM, GenerateRandom);
CreateServiceFunction(MS_SYSTEM_RESTART, RestartMiranda);
- CreateServiceFunction(MS_SYSTEM_GET_MD5I, GetMD5Interface);
InitOpenUrl();
InitWindowList();
InitHyperlink();