From c207d9fda896e759a2ffdffc0d46608040c1ac65 Mon Sep 17 00:00:00 2001 From: George Hazan <george.hazan@gmail.com> Date: Sun, 31 May 2015 19:17:51 +0000 Subject: another bunch of crutches buried in a trash can: PROTOCHAR & PROTOFILEEVENT glory, glory, hallelujah git-svn-id: http://svn.miranda-ng.org/main/trunk@13949 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/modules/protocols/protoaccs.cpp | 2 +- src/modules/protocols/protocols.cpp | 149 +++++++++++------------------------- src/modules/protocols/protoint.cpp | 42 ++++++---- 3 files changed, 72 insertions(+), 121 deletions(-) (limited to 'src/modules/protocols') diff --git a/src/modules/protocols/protoaccs.cpp b/src/modules/protocols/protoaccs.cpp index 4e863b235f..06a7268a6f 100644 --- a/src/modules/protocols/protoaccs.cpp +++ b/src/modules/protocols/protoaccs.cpp @@ -314,7 +314,7 @@ static INT_PTR stub4(PROTO_INTERFACE* ppi, WPARAM wParam, LPARAM lParam) static INT_PTR stub11(PROTO_INTERFACE* ppi, WPARAM wParam, LPARAM lParam) { PROTOFILERESUME* pfr = (PROTOFILERESUME*)lParam; - return (INT_PTR)ppi->FileResume((HANDLE)wParam, &pfr->action, (const PROTOCHAR**)&pfr->szFilename); + return (INT_PTR)ppi->FileResume((HANDLE)wParam, &pfr->action, (const TCHAR**)&pfr->szFilename); } static INT_PTR stub12(PROTO_INTERFACE* ppi, WPARAM wParam, LPARAM lParam) diff --git a/src/modules/protocols/protocols.cpp b/src/modules/protocols/protocols.cpp index 140efe927b..314071a55a 100644 --- a/src/modules/protocols/protocols.cpp +++ b/src/modules/protocols/protocols.cpp @@ -343,115 +343,54 @@ INT_PTR CallProtoServiceInt(MCONTACT hContact, const char *szModule, const char { PROTOACCOUNT *pa = Proto_GetAccount(szModule); if (pa && !pa->bOldProto) { - PROTO_INTERFACE *ppi; - if ((ppi = pa->ppro) == NULL) - return CALLSERVICE_NOTFOUND; - - TServiceListItem *item = serviceItems.find((TServiceListItem*)&szService); - if (item) { - switch (item->id) { - case 1: - if (ppi->m_iVersion > 1 || !(((PROTOSEARCHRESULT*)lParam)->flags & PSR_UNICODE)) - return (INT_PTR)ppi->AddToList(wParam, (PROTOSEARCHRESULT*)lParam); - else { - PROTOSEARCHRESULT *psr = (PROTOSEARCHRESULT*)lParam; - PROTOSEARCHRESULT *psra = (PROTOSEARCHRESULT*)_alloca(psr->cbSize); - memcpy(psra, psr, psr->cbSize); - psra->nick.a = mir_u2a(psr->nick.t); - psra->firstName.a = mir_u2a(psr->firstName.t); - psra->lastName.a = mir_u2a(psr->lastName.t); - psra->email.a = mir_u2a(psr->email.t); - - INT_PTR res = (INT_PTR)ppi->AddToList(wParam, psra); - - mir_free(psra->nick.a); - mir_free(psra->firstName.a); - mir_free(psra->lastName.a); - mir_free(psra->email.a); - return res; - } - - case 2: return (INT_PTR)ppi->AddToListByEvent(LOWORD(wParam), HIWORD(wParam), (MEVENT)lParam); - case 3: return (INT_PTR)ppi->Authorize((MEVENT)wParam); - case 4: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->AuthDeny((MEVENT)wParam, _A2T((char*)lParam)); - return (INT_PTR)ppi->AuthDeny((MEVENT)wParam, (PROTOCHAR*)lParam); - case 5: return (INT_PTR)ppi->AuthRecv(hContact, (PROTORECVEVENT*)lParam); - case 6: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->AuthRequest(hContact, _A2T((char*)lParam)); - return (INT_PTR)ppi->AuthRequest(hContact, (PROTOCHAR*)lParam); - case 8: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->FileAllow(hContact, (HANDLE)wParam, _A2T((char*)lParam)); - return (INT_PTR)ppi->FileAllow(hContact, (HANDLE)wParam, (PROTOCHAR*)lParam); - case 9: return (INT_PTR)ppi->FileCancel(hContact, (HANDLE)wParam); - case 10: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->FileDeny(hContact, (HANDLE)wParam, _A2T((char*)lParam)); - return (INT_PTR)ppi->FileDeny(hContact, (HANDLE)wParam, (PROTOCHAR*)lParam); - case 11: - { - PROTOFILERESUME* pfr = (PROTOFILERESUME*)lParam; - if (ppi->m_iVersion > 1) { - PROTOCHAR* szFname = mir_a2t((char*)pfr->szFilename); - INT_PTR res = (INT_PTR)ppi->FileResume((HANDLE)wParam, &pfr->action, (const PROTOCHAR**)&szFname); - mir_free((PROTOCHAR*)pfr->szFilename); - pfr->szFilename = (PROTOCHAR*)mir_t2a(szFname); mir_free(szFname); + PROTO_INTERFACE *ppi = pa->ppro; + if (ppi != NULL && ppi->m_iVersion > 1) { + TServiceListItem *item = serviceItems.find((TServiceListItem*)&szService); + if (item) { + switch (item->id) { + case 1: return (INT_PTR)ppi->AddToList(wParam, (PROTOSEARCHRESULT*)lParam); + case 2: return (INT_PTR)ppi->AddToListByEvent(LOWORD(wParam), HIWORD(wParam), (MEVENT)lParam); + case 3: return (INT_PTR)ppi->Authorize((MEVENT)wParam); + case 4: return (INT_PTR)ppi->AuthDeny((MEVENT)wParam, (TCHAR*)lParam); + case 5: return (INT_PTR)ppi->AuthRecv(hContact, (PROTORECVEVENT*)lParam); + case 6: return (INT_PTR)ppi->AuthRequest(hContact, (TCHAR*)lParam); + case 8: return (INT_PTR)ppi->FileAllow(hContact, (HANDLE)wParam, (TCHAR*)lParam); + case 9: return (INT_PTR)ppi->FileCancel(hContact, (HANDLE)wParam); + case 10: return (INT_PTR)ppi->FileDeny(hContact, (HANDLE)wParam, (TCHAR*)lParam); + case 11: { + PROTOFILERESUME *pfr = (PROTOFILERESUME*)lParam; + return (INT_PTR)ppi->FileResume((HANDLE)wParam, &pfr->action, (const TCHAR**)&pfr->szFilename); } - else return (INT_PTR)ppi->FileResume((HANDLE)wParam, &pfr->action, (const PROTOCHAR**)&pfr->szFilename); - } - case 12: return (INT_PTR)ppi->GetCaps(wParam, lParam); - case 13: return (INT_PTR)Proto_GetIcon(ppi, wParam); - case 14: return (INT_PTR)ppi->GetInfo(hContact, wParam); - case 15: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->SearchBasic(_A2T((char*)lParam)); - return (INT_PTR)ppi->SearchBasic((TCHAR*)lParam); - case 16: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->SearchByEmail(_A2T((char*)lParam)); - return (INT_PTR)ppi->SearchByEmail((TCHAR*)lParam); - case 17: - { - PROTOSEARCHBYNAME* psbn = (PROTOSEARCHBYNAME*)lParam; - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->SearchByName(_A2T((char*)psbn->pszNick), _A2T((char*)psbn->pszFirstName), _A2T((char*)psbn->pszLastName)); - else + case 12: return (INT_PTR)ppi->GetCaps(wParam, lParam); + case 13: return (INT_PTR)Proto_GetIcon(ppi, wParam); + case 14: return (INT_PTR)ppi->GetInfo(hContact, wParam); + case 15: return (INT_PTR)ppi->SearchBasic((TCHAR*)lParam); + case 16: return (INT_PTR)ppi->SearchByEmail((TCHAR*)lParam); + case 17: { + PROTOSEARCHBYNAME* psbn = (PROTOSEARCHBYNAME*)lParam; return (INT_PTR)ppi->SearchByName(psbn->pszNick, psbn->pszFirstName, psbn->pszLastName); + } + case 18: return (INT_PTR)ppi->SearchAdvanced((HWND)lParam); + case 19: return (INT_PTR)ppi->CreateExtendedSearchUI((HWND)lParam); + case 20: return (INT_PTR)ppi->RecvContacts(hContact, (PROTORECVEVENT*)lParam); + case 21: return (INT_PTR)ppi->RecvFile(hContact, (PROTORECVFILET*)lParam); + case 22: return (INT_PTR)ppi->RecvMsg(hContact, (PROTORECVEVENT*)lParam); + case 23: return (INT_PTR)ppi->RecvUrl(hContact, (PROTORECVEVENT*)lParam); + case 24: return (INT_PTR)ppi->SendContacts(hContact, LOWORD(wParam), HIWORD(wParam), (MCONTACT*)lParam); + case 25: return (INT_PTR)ppi->SendFile(hContact, (TCHAR*)wParam, (TCHAR**)lParam); + case 26: return (INT_PTR)ppi->SendMsg(hContact, wParam, (const char*)lParam); + case 27: return (INT_PTR)ppi->SendUrl(hContact, wParam, (const char*)lParam); + case 28: return (INT_PTR)ppi->SetApparentMode(hContact, wParam); + case 29: return (INT_PTR)ppi->SetStatus(wParam); + case 30: return (INT_PTR)ppi->GetAwayMsg(hContact); + case 31: return (INT_PTR)ppi->RecvAwayMsg(hContact, wParam, (PROTORECVEVENT*)lParam); + case 33: return (INT_PTR)ppi->SetAwayMsg(wParam, (TCHAR*)lParam); + case 34: return (INT_PTR)ppi->UserIsTyping(wParam, lParam); + case 35: mir_strncpy((char*)lParam, ppi->m_szModuleName, wParam); return 0; + case 36: + return ppi->m_iStatus; } - case 18: return (INT_PTR)ppi->SearchAdvanced((HWND)lParam); - case 19: return (INT_PTR)ppi->CreateExtendedSearchUI((HWND)lParam); - case 20: return (INT_PTR)ppi->RecvContacts(hContact, (PROTORECVEVENT*)lParam); - case 21: return (INT_PTR)ppi->RecvFile(hContact, (PROTOFILEEVENT*)lParam); - case 22: return (INT_PTR)ppi->RecvMsg(hContact, (PROTORECVEVENT*)lParam); - case 23: return (INT_PTR)ppi->RecvUrl(hContact, (PROTORECVEVENT*)lParam); - case 24: return (INT_PTR)ppi->SendContacts(hContact, LOWORD(wParam), HIWORD(wParam), (MCONTACT*)lParam); - case 25: - if (ppi->m_iVersion > 1) { - TCHAR** files = Proto_FilesMatrixU((char**)lParam); - INT_PTR res = (INT_PTR)ppi->SendFile(hContact, _A2T((char*)wParam), (TCHAR**)files); - if (res == 0) FreeFilesMatrix(&files); - return res; - } - return (INT_PTR)ppi->SendFile(hContact, (TCHAR*)wParam, (TCHAR**)lParam); - - case 26: return (INT_PTR)ppi->SendMsg(hContact, wParam, (const char*)lParam); - case 27: return (INT_PTR)ppi->SendUrl(hContact, wParam, (const char*)lParam); - case 28: return (INT_PTR)ppi->SetApparentMode(hContact, wParam); - case 29: return (INT_PTR)ppi->SetStatus(wParam); - case 30: return (INT_PTR)ppi->GetAwayMsg(hContact); - case 31: return (INT_PTR)ppi->RecvAwayMsg(hContact, wParam, (PROTORECVEVENT*)lParam); - case 33: - if (ppi->m_iVersion > 1) - return (INT_PTR)ppi->SetAwayMsg(wParam, _A2T((char*)lParam)); - return (INT_PTR)ppi->SetAwayMsg(wParam, (TCHAR*)lParam); - case 34: return (INT_PTR)ppi->UserIsTyping(wParam, lParam); - case 35: mir_strncpy((char*)lParam, ppi->m_szModuleName, wParam); return 0; - case 36: - return ppi->m_iStatus; } } } diff --git a/src/modules/protocols/protoint.cpp b/src/modules/protocols/protoint.cpp index 3ad3337ce3..e8c834c45a 100644 --- a/src/modules/protocols/protoint.cpp +++ b/src/modules/protocols/protoint.cpp @@ -78,15 +78,21 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE int __cdecl AuthRequest(MCONTACT hContact, const TCHAR *szMessage) { CCSDATA ccs = { hContact, PSS_AUTHREQUEST, 0, (LPARAM)szMessage }; + if (m_iVersion > 1) + return (int)ProtoCallService(m_szModuleName, PSS_AUTHREQUEST, 0, (LPARAM)&ccs); + ccs.lParam = (LPARAM)mir_t2a(szMessage); int res = (int)ProtoCallService(m_szModuleName, PSS_AUTHREQUEST, 0, (LPARAM)&ccs); mir_free((char*)ccs.lParam); return res; } - HANDLE __cdecl FileAllow(MCONTACT hContact, HANDLE hTransfer, const PROTOCHAR* szPath) + HANDLE __cdecl FileAllow(MCONTACT hContact, HANDLE hTransfer, const TCHAR* szPath) { CCSDATA ccs = { hContact, PSS_FILEALLOW, (WPARAM)hTransfer, (LPARAM)szPath }; + if (m_iVersion > 1) + return (HANDLE)ProtoCallService(m_szModuleName, PSS_FILEALLOW, 0, (LPARAM)&ccs); + ccs.lParam = (LPARAM)mir_t2a(szPath); HANDLE res = (HANDLE)ProtoCallService(m_szModuleName, PSS_FILEALLOW, 0, (LPARAM)&ccs); mir_free((char*)ccs.lParam); @@ -99,22 +105,28 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return (int)ProtoCallService(m_szModuleName, PSS_FILECANCEL, 0, (LPARAM)&ccs); } - int __cdecl FileDeny(MCONTACT hContact, HANDLE hTransfer, const PROTOCHAR* szReason) + int __cdecl FileDeny(MCONTACT hContact, HANDLE hTransfer, const TCHAR* szReason) { CCSDATA ccs = { hContact, PSS_FILEDENY, (WPARAM)hTransfer, (LPARAM)szReason }; + if (m_iVersion > 1) + return (int)ProtoCallService(m_szModuleName, PSS_FILEDENY, 0, (LPARAM)&ccs); + ccs.lParam = (LPARAM)mir_t2a(szReason); int res = (int)ProtoCallService(m_szModuleName, PSS_FILEDENY, 0, (LPARAM)&ccs); mir_free((char*)ccs.lParam); return res; } - int __cdecl FileResume(HANDLE hTransfer, int* action, const PROTOCHAR** szFilename) + int __cdecl FileResume(HANDLE hTransfer, int* action, const TCHAR** szFilename) { PROTOFILERESUME pfr = { *action, *szFilename }; - pfr.szFilename = (PROTOCHAR*)mir_t2a(pfr.szFilename); + if (m_iVersion > 1) + return (int)ProtoCallService(m_szModuleName, PS_FILERESUME, (WPARAM)hTransfer, (LPARAM)&pfr); + + pfr.szFilename = (TCHAR*)mir_t2a(pfr.szFilename); int res = (int)ProtoCallService(m_szModuleName, PS_FILERESUME, (WPARAM)hTransfer, (LPARAM)&pfr); - mir_free((PROTOCHAR*)*szFilename); - *action = pfr.action; *szFilename = (PROTOCHAR*)pfr.szFilename; + mir_free((TCHAR*)*szFilename); + *action = pfr.action; *szFilename = (TCHAR*)pfr.szFilename; return res; } @@ -135,7 +147,7 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return ProtoCallService(m_szModuleName, PSS_GETINFO, 0, (LPARAM)&ccs); } - HANDLE __cdecl SearchBasic(const PROTOCHAR* id) + HANDLE __cdecl SearchBasic(const TCHAR* id) { if (m_iVersion > 1) return (HANDLE)ProtoCallService(m_szModuleName, PS_BASICSEARCH, 0, (LPARAM)id); @@ -143,19 +155,19 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return (HANDLE)ProtoCallService(m_szModuleName, PS_BASICSEARCH, 0, (LPARAM)StrConvA(id)); } - HANDLE __cdecl SearchByEmail(const PROTOCHAR* email) + HANDLE __cdecl SearchByEmail(const TCHAR* email) { if (m_iVersion > 1) return (HANDLE)ProtoCallService(m_szModuleName, PS_SEARCHBYEMAIL, 0, (LPARAM)email); return (HANDLE)ProtoCallService(m_szModuleName, PS_SEARCHBYEMAIL, 0, (LPARAM)StrConvA(email)); } - HANDLE __cdecl SearchByName(const PROTOCHAR* nick, const PROTOCHAR* firstName, const PROTOCHAR* lastName) + HANDLE __cdecl SearchByName(const TCHAR* nick, const TCHAR* firstName, const TCHAR* lastName) { PROTOSEARCHBYNAME psn; - psn.pszNick = (PROTOCHAR*)mir_t2a(nick); - psn.pszFirstName = (PROTOCHAR*)mir_t2a(firstName); - psn.pszLastName = (PROTOCHAR*)mir_t2a(lastName); + psn.pszNick = (TCHAR*)mir_t2a(nick); + psn.pszFirstName = (TCHAR*)mir_t2a(firstName); + psn.pszLastName = (TCHAR*)mir_t2a(lastName); HANDLE res = (HANDLE)ProtoCallService(m_szModuleName, PS_SEARCHBYNAME, 0, (LPARAM)&psn); mir_free(psn.pszNick); mir_free(psn.pszFirstName); @@ -180,7 +192,7 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return (int)ProtoCallService(m_szModuleName, PSR_CONTACTS, 0, (LPARAM)&ccs); } - int __cdecl RecvFile(MCONTACT hContact, PROTOFILEEVENT* evt) + int __cdecl RecvFile(MCONTACT hContact, PROTORECVFILET* evt) { CCSDATA ccs = { hContact, PSR_FILE, 0, (LPARAM)evt }; return ProtoCallService(m_szModuleName, PSR_FILE, 0, (LPARAM)&ccs); @@ -204,7 +216,7 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return (int)ProtoCallService(m_szModuleName, PSS_CONTACTS, 0, (LPARAM)&ccs); } - HANDLE __cdecl SendFile(MCONTACT hContact, const PROTOCHAR* szDescription, PROTOCHAR** ppszFiles) + HANDLE __cdecl SendFile(MCONTACT hContact, const TCHAR* szDescription, TCHAR** ppszFiles) { CCSDATA ccs = { hContact, PSS_FILE, (WPARAM)szDescription, (LPARAM)ppszFiles }; @@ -275,7 +287,7 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE // creates the default protocol container for compatibility with the old plugins -PROTO_INTERFACE* AddDefaultAccount(const char* szProtoName) +PROTO_INTERFACE* AddDefaultAccount(const char *szProtoName) { PROTO_INTERFACE* ppi = new DEFAULT_PROTO_INTERFACE; ppi->m_szModuleName = mir_strdup(szProtoName); -- cgit v1.2.3