/* * $Id: main.cpp 13596 2011-04-15 19:07:23Z george.hazan $ * * myYahoo Miranda Plugin * * Authors: Gennady Feldman (aka Gena01) * Laurent Marechal (aka Peorth) * * This code is under GPL and is based on AIM, MSN and Miranda source code. * I want to thank Robert Rainwater and George Hazan for their code and support * and for answering some of my questions during development of this plugin. */ #include "yahoo.h" #include "http_gateway.h" #include "version.h" #include "resource.h" #include /* * Global Variables */ HINSTANCE hInstance; HANDLE g_hNetlibUser; int hLangpack; PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), "Yahoo Protocol", __VERSION_DWORD, "Yahoo Protocol support via libyahoo2 library.", "Gennady Feldman", "gena01@miranda-im.org", "© 2003-2010 Gennady Feldman, Laurent Marechal", "http://www.miranda-im.org", UNICODE_AWARE, //not transient {0xaa7bfea, 0x1fc7, 0x45f0, {0x90, 0x6e, 0x2a, 0x46, 0xb6, 0xe1, 0x19, 0xcf}} // {0AA7BFEA-1FC7-45f0-906E-2A46B6E119CF} }; void YmsgrLinksInit(void); void YmsgrLinksUninit(void); /* * WINAPI DllMain - main entry point into a DLL * Parameters: * HINSTANCE hinst, * DWORD fdwReason, * LPVOID lpvReserved * Returns : * BOOL * */ extern "C" BOOL WINAPI DllMain(HINSTANCE hinst,DWORD /*fdwReason*/,LPVOID /*lpvReserved*/) { hInstance = hinst; return TRUE; } /* * Load - loads plugin into memory */ //===================================================== // Name : Load // Parameters: // Returns : int // Description : Called when plugin is loaded into Miranda //===================================================== static int CompareProtos( const CYahooProto* p1, const CYahooProto* p2 ) { return lstrcmp(p1->m_tszUserName, p2->m_tszUserName); } LIST g_instances( 1, CompareProtos ); static CYahooProto* yahooProtoInit( const char* pszProtoName, const TCHAR* tszUserName ) { CYahooProto* ppro = new CYahooProto( pszProtoName, tszUserName ); g_instances.insert( ppro ); return ppro; } static int yahooProtoUninit( CYahooProto* ppro ) { g_instances.remove( ppro ); delete ppro; return 0; } extern "C" int __declspec(dllexport)Load(void) { mir_getLP( &pluginInfo ); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "YAHOO"; pd.type = PROTOTYPE_PROTOCOL; pd.fnInit = ( pfnInitProto )yahooProtoInit; pd.fnUninit = ( pfnUninitProto )yahooProtoUninit; CallService( MS_PROTO_REGISTERMODULE, 0, ( LPARAM )&pd ); NETLIBUSER nlu = {0}; nlu.cbSize = sizeof(nlu); nlu.flags = NUF_TCHAR | NUF_OUTGOING | NUF_HTTPCONNS; nlu.szSettingsModule = "YAHOO/libyahoo2"; nlu.ptszDescriptiveName = TranslateT("YAHOO plugin HTTP connections"); g_hNetlibUser = ( HANDLE )YAHOO_CallService( MS_NETLIB_REGISTERUSER, 0, ( LPARAM )&nlu ); YmsgrLinksInit(); /** * Register LibYahoo2 callback functions */ register_callbacks(); return 0; } /* * Unload - Unloads plugin * Parameters: void */ extern "C" int __declspec(dllexport) Unload(void) { LOG(( "Unload" )); YmsgrLinksUninit(); Netlib_CloseHandle( g_hNetlibUser ); g_instances.destroy(); return 0; } /* * MirandaPluginInfoEx - Sets plugin info * Parameters: (DWORD mirandaVersion) */ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) { return &pluginInfo; } /* * MirandaPluginInterfaces - Notifies the core of interfaces implemented * Parameters: none */ static const MUUID interfaces[] = {MIID_PROTOCOL, MIID_LAST}; extern "C" __declspec(dllexport) const MUUID* MirandaPluginInterfaces(void) { return interfaces; }