summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-06-20 08:05:51 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-06-20 08:05:51 +0000
commit18540e71624543fd0181b764a6913aa6bf8eb75d (patch)
tree2fc7dc37339a353b53cbe878138ffd69227accfb
parenta00d983ecdb1d58e2bc7f7b3a6d1b3c2c169ae70 (diff)
more avatar fixes
git-svn-id: http://svn.miranda-ng.org/main/trunk@498 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--plugins/ExternalAPI/m_flash.h10
-rw-r--r--plugins/FlashAvatars/cflash.cpp34
-rw-r--r--protocols/FacebookRM/avatars.cpp29
-rw-r--r--protocols/FacebookRM/client.h2
-rw-r--r--protocols/FacebookRM/communication.cpp10
-rw-r--r--protocols/FacebookRM/proto.cpp6
-rw-r--r--protocols/FacebookRM/proto.h4
-rw-r--r--protocols/FacebookRM/utils.cpp14
-rw-r--r--protocols/FacebookRM/utils.h13
-rw-r--r--protocols/MRA/MraAvatars.cpp2
-rw-r--r--protocols/Twitter/connection.cpp2
-rw-r--r--protocols/Twitter/proto.cpp17
-rw-r--r--protocols/Twitter/proto.h5
-rw-r--r--protocols/Twitter/utility.cpp10
-rw-r--r--protocols/Twitter/utility.h2
-rw-r--r--protocols/Weather/weather_svcs.cpp3
-rw-r--r--protocols/Yahoo/avatar.cpp2
17 files changed, 81 insertions, 84 deletions
diff --git a/plugins/ExternalAPI/m_flash.h b/plugins/ExternalAPI/m_flash.h
index 97348dee61..2718e1982a 100644
--- a/plugins/ExternalAPI/m_flash.h
+++ b/plugins/ExternalAPI/m_flash.h
@@ -79,11 +79,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// FLASHAVATAR structure
typedef struct {
- HANDLE hContact; // contact who flash avatar belongs to
- HWND hWindow; // handle of flash avatar object
+ HANDLE hContact; // contact who flash avatar belongs to
+ HWND hWindow; // handle of flash avatar object
HWND hParentWindow; // handle of flash avatar's parent object
- char* cUrl; // url of .swf file
- int id; // unique number of plugin which wants to use avatar service
- char* cProto; // contact's protocol
+ TCHAR* cUrl; // url of .swf file
+ int id; // unique number of plugin which wants to use avatar service
+ char* cProto; // contact's protocol
char reserved[16];
} FLASHAVATAR;
diff --git a/plugins/FlashAvatars/cflash.cpp b/plugins/FlashAvatars/cflash.cpp
index 1e3ec2d9c1..326e7925e0 100644
--- a/plugins/FlashAvatars/cflash.cpp
+++ b/plugins/FlashAvatars/cflash.cpp
@@ -126,10 +126,10 @@ LPAtlAxAttachControl MyAtlAxAttachControl;
break;\
}
-static bool DownloadFlashFile(char *url, const TCHAR* save_file, int recurse_count /*=0*/) {
- if (!url || recurse_count > 5) {
+static bool DownloadFlashFile(char *url, const TCHAR* save_file, int recurse_count /*=0*/)
+{
+ if (!url || recurse_count > 5)
return false;
- }
NETLIBHTTPREQUEST req = {0};
req.cbSize = sizeof(req);
@@ -189,11 +189,11 @@ static void __cdecl loadFlash_Thread(void *p) {
flash_avatar_item* fai = (flash_avatar_item*)p;
IShockwaveFlash* flash = fai->pFlash;
- if(strchr(fai->hFA.cUrl, '?') == NULL) {
+ if ( _tcschr(fai->hFA.cUrl, '?') == NULL) {
// make hash of url
debug("Making TTH hash from URL...\n");
TigerHash th;
- th.update(fai->hFA.cUrl, strlen(fai->hFA.cUrl));
+ th.update(fai->hFA.cUrl, _tcslen(fai->hFA.cUrl));
th.finalize();
// create local path name
@@ -222,7 +222,7 @@ static void __cdecl loadFlash_Thread(void *p) {
// download remote file if it doesn't exist
if (GetFileAttributes(name) == 0xFFFFFFFF) {
debug("Downloading flash file...\n");
- DownloadFlashFile(fai->hFA.cUrl, name, 0);
+ DownloadFlashFile( _T2A(fai->hFA.cUrl), name, 0);
}
// load and play local flash movie
@@ -257,7 +257,8 @@ static void ShowBalloon(TCHAR *title, TCHAR *msg, int icon) {
c->pfnCListTrayNotify(&msn);
}
-static void prepareFlash(char* pProto, const char* pUrl, FLASHAVATAR& fa, IShockwaveFlash* flash) {
+static void prepareFlash(char* pProto, const TCHAR* pUrl, FLASHAVATAR& fa, IShockwaveFlash* flash)
+{
debug("Preparing flash...\n");
if(flash == NULL) {
// Flash component is not registered in the system
@@ -280,7 +281,7 @@ static void prepareFlash(char* pProto, const char* pUrl, FLASHAVATAR& fa, IShock
// store avatar info
debug("Storing avatar info...\n");
fa.cProto = pProto;
- fa.cUrl = mir_strdup(pUrl);
+ fa.cUrl = mir_tstrdup(pUrl);
// create flash record
flash_avatar_item *flash_item = new flash_avatar_item(fa.hContact, fa, flash);
@@ -290,11 +291,11 @@ static void prepareFlash(char* pProto, const char* pUrl, FLASHAVATAR& fa, IShock
}
// avatar contains parameter, load it from remote place
- if(strchr(fa.cUrl, '?')) {
+ if ( _tcschr(fa.cUrl, '?')) {
debug("Flash with parameters, loading...\n");
flash->LoadMovie(0, fa.cUrl);
}
-
+ _bstr_t
// refresh avatar's parent window
// InvalidateRect(fa.hParentWindow, NULL, FALSE);
@@ -351,13 +352,13 @@ static INT_PTR makeAvatar(WPARAM wParam, LPARAM)
if (!avatarOK) return 0;
debug("Avatar found...\n");
- TCHAR* url = NULL;
+ TCHAR url[MAX_PATH];
switch(AI.format) {
case PA_FORMAT_SWF:
- url = AI.filename;
+ _tcsncpy(url, AI.filename, SIZEOF(url));
break;
case PA_FORMAT_XML: {
- int src = _tfopen(AI.filename, _O_BINARY | _O_RDONLY);
+ int src = _topen(AI.filename, _O_BINARY | _O_RDONLY);
if(src != -1) {
char pBuf[2048];
char* urlBuf;
@@ -366,7 +367,7 @@ static INT_PTR makeAvatar(WPARAM wParam, LPARAM)
urlBuf = strstr(pBuf, "<URL>");
if(urlBuf)
- url = strtok(urlBuf + 5, "\r\n <");
+ _tcsncpy(url, _A2T(strtok(urlBuf + 5, "\r\n <")), SIZEOF(url));
else
return 0;
} else {
@@ -386,7 +387,7 @@ static INT_PTR makeAvatar(WPARAM wParam, LPARAM)
hFA->hWindow = item->hFA.hWindow;
ShowWindow(hFA->hWindow, SW_SHOW);
- if(_stricmp(item->hFA.cUrl, url) != 0) {
+ if ( _tcsicmp(item->hFA.cUrl, url) != 0) {
debug("Refreshing flash...\n");
IShockwaveFlash* flash = item->pFlash;
mir_free(item->hFA.cUrl);
@@ -395,7 +396,8 @@ static INT_PTR makeAvatar(WPARAM wParam, LPARAM)
prepareFlash(key.getProto(), url, *hFA, flash);
}
- } else {
+ }
+ else {
debug("Creating new flash...\n");
RECT rc;
GetWindowRect(hFA->hParentWindow, &rc);
diff --git a/protocols/FacebookRM/avatars.cpp b/protocols/FacebookRM/avatars.cpp
index 0b3bef5635..0ebfa7a558 100644
--- a/protocols/FacebookRM/avatars.cpp
+++ b/protocols/FacebookRM/avatars.cpp
@@ -27,12 +27,11 @@ Last change on : $Date: 2011-01-08 11:10:34 +0100 (so, 08 1 2011) $
#include "common.h"
-bool FacebookProto::GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::tstring *url)
+bool FacebookProto::GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::string *url)
{
DBVARIANT dbv;
- if (!DBGetContactSettingTString(ai.hContact, m_szModuleName, FACEBOOK_KEY_AV_URL, &dbv))
- {
- std::tstring new_url = dbv.ptszVal;
+ if (!DBGetContactSettingString(ai.hContact, m_szModuleName, FACEBOOK_KEY_AV_URL, &dbv)) {
+ std::string new_url = dbv.pszVal;
DBFreeVariant(&dbv);
if (new_url.empty())
@@ -41,10 +40,9 @@ bool FacebookProto::GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::tstring
if (url)
*url = new_url;
- if (!DBGetContactSettingTString(ai.hContact, m_szModuleName, FACEBOOK_KEY_ID, &dbv))
- {
- std::tstring ext = new_url.substr(new_url.rfind('.'));
- std::tstring filename = GetAvatarFolder() + '\\' + dbv.ptszVal + ext;
+ if (!DBGetContactSettingTString(ai.hContact, m_szModuleName, FACEBOOK_KEY_ID, &dbv)) {
+ std::string ext = new_url.substr(new_url.rfind('.'));
+ std::tstring filename = GetAvatarFolder() + L'\\' + dbv.ptszVal + (TCHAR*)_A2T(ext.c_str());
DBFreeVariant(&dbv);
ai.hContact = ai.hContact;
@@ -58,7 +56,7 @@ bool FacebookProto::GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::tstring
return false;
}
-void FacebookProto::CheckAvatarChange(HANDLE hContact, std::tstring image_url)
+void FacebookProto::CheckAvatarChange(HANDLE hContact, std::string image_url)
{
// Facebook contacts always have some avatar - keep avatar in database even if we have loaded empty one (e.g. for 'On Mobile' contacts)
if (image_url.empty())
@@ -80,7 +78,7 @@ void FacebookProto::CheckAvatarChange(HANDLE hContact, std::tstring image_url)
}
if (update_required || !hContact)
{
- DBWriteContactSettingTString(hContact, m_szModuleName, FACEBOOK_KEY_AV_URL, image_url.c_str());
+ DBWriteContactSettingString(hContact, m_szModuleName, FACEBOOK_KEY_AV_URL, image_url.c_str());
if (hContact)
ProtoBroadcastAck(m_szModuleName, hContact, ACKTYPE_AVATAR, ACKRESULT_STATUS, NULL, 0);
else
@@ -100,7 +98,7 @@ void FacebookProto::UpdateAvatarWorker(void *)
for (;;)
{
- std::tstring url;
+ std::string url;
PROTO_AVATAR_INFORMATIONT ai = {sizeof(ai)};
ai.hContact = avatar_queue[0];
@@ -113,7 +111,7 @@ void FacebookProto::UpdateAvatarWorker(void *)
if (GetDbAvatarInfo(ai, &url))
{
LOG("***** Updating avatar: %s", url.c_str());
- bool success = facy.save_url(url, std::string(ai.filename), nlc);
+ bool success = facy.save_url(url, ai.filename, nlc);
if (ai.hContact)
ProtoBroadcastAck(m_szModuleName, ai.hContact, ACKTYPE_AVATAR, success ? ACKRESULT_SUCCESS : ACKRESULT_FAILED, (HANDLE)&ai, 0);
@@ -129,10 +127,10 @@ void FacebookProto::UpdateAvatarWorker(void *)
Netlib_CloseHandle(nlc);
}
-std::string FacebookProto::GetAvatarFolder()
+std::tstring FacebookProto::GetAvatarFolder()
{
TCHAR path[MAX_PATH];
- if ( hAvatarFolder_ && FoldersGetCustomPathT(hAvatarFolder_, path, SIZEOF(path), "") == 0 )
+ if ( hAvatarFolder_ && FoldersGetCustomPathT(hAvatarFolder_, path, SIZEOF(path), _T("")) == 0 )
return path;
else
return def_avatar_folder_;
@@ -181,10 +179,9 @@ int FacebookProto::GetAvatarInfo(WPARAM wParam, LPARAM lParam)
return GAIR_NOAVATAR;
PROTO_AVATAR_INFORMATIONT* AI = (PROTO_AVATAR_INFORMATIONT*)lParam;
-
if (GetDbAvatarInfo(*AI, NULL))
{
- bool fileExist = _access(AI->filename, 0) == 0;
+ bool fileExist = _taccess(AI->filename, 0) == 0;
bool needLoad;
if (AI->hContact)
diff --git a/protocols/FacebookRM/client.h b/protocols/FacebookRM/client.h
index b4874de23b..2e854c2c98 100644
--- a/protocols/FacebookRM/client.h
+++ b/protocols/FacebookRM/client.h
@@ -165,7 +165,7 @@ public:
// HTTP communication
http::response flap( const int request_type, std::string* request_data = NULL, std::string* request_get_data = NULL );
- bool save_url(const std::string &url,const std::string &filename, HANDLE &nlc);
+ bool save_url(const std::string &url,const std::tstring &filename, HANDLE &nlc);
DWORD choose_security_level( int );
int choose_method( int );
diff --git a/protocols/FacebookRM/communication.cpp b/protocols/FacebookRM/communication.cpp
index 4afb031cac..90296b18e0 100644
--- a/protocols/FacebookRM/communication.cpp
+++ b/protocols/FacebookRM/communication.cpp
@@ -1240,7 +1240,7 @@ bool facebook_client::set_status(const std::string &status_text)
//////////////////////////////////////////////////////////////////////////////
-bool facebook_client::save_url(const std::string &url,const std::string &filename, HANDLE &nlc)
+bool facebook_client::save_url(const std::string &url,const std::tstring &filename, HANDLE &nlc)
{
NETLIBHTTPREQUEST req = {sizeof(req)};
NETLIBHTTPREQUEST *resp;
@@ -1258,12 +1258,12 @@ bool facebook_client::save_url(const std::string &url,const std::string &filenam
parent->Log( "@@@@@ Saving avatar URL %s to path %s", url.c_str(), filename.c_str() );
// Create folder if necessary
- std::string dir = filename.substr(0,filename.rfind('\\'));
- if(_access(dir.c_str(),0))
- CallService(MS_UTILS_CREATEDIRTREE, 0, (LPARAM)dir.c_str());
+ std::tstring dir = filename.substr(0,filename.rfind('\\'));
+ if( _taccess(dir.c_str(),0))
+ CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)dir.c_str());
// Write to file
- FILE *f = fopen(filename.c_str(),"wb");
+ FILE *f = _tfopen(filename.c_str(), _T("wb"));
fwrite(resp->pData,1,resp->dataLength,f);
fclose(f);
diff --git a/protocols/FacebookRM/proto.cpp b/protocols/FacebookRM/proto.cpp
index f53dce96db..e51a39f1dd 100644
--- a/protocols/FacebookRM/proto.cpp
+++ b/protocols/FacebookRM/proto.cpp
@@ -73,10 +73,10 @@ FacebookProto::FacebookProto(const char* proto_name,const TCHAR* username)
SkinAddNewSoundExT( "NewsFeed", m_tszUserName, LPGENT( "News Feed" ) );
SkinAddNewSoundExT( "OtherEvent", m_tszUserName, LPGENT( "Other Event" ) );
- char *profile = Utils_ReplaceVars("%miranda_avatarcache%");
- def_avatar_folder_ = std::string(profile)+"\\"+m_szModuleName;
+ TCHAR *profile = Utils_ReplaceVarsT( _T("%miranda_avatarcache%"));
+ def_avatar_folder_ = std::tstring(profile) + _T("\\") + m_tszUserName;
mir_free(profile);
- hAvatarFolder_ = FoldersRegisterCustomPath(m_szModuleName, "Avatars", def_avatar_folder_.c_str());
+ hAvatarFolder_ = FoldersRegisterCustomPathT(m_szModuleName, "Avatars", def_avatar_folder_.c_str());
// Set all contacts offline -- in case we crashed
SetAllContactStatuses( ID_STATUS_OFFLINE );
diff --git a/protocols/FacebookRM/proto.h b/protocols/FacebookRM/proto.h
index 3ce4af74a9..c08e3aaef2 100644
--- a/protocols/FacebookRM/proto.h
+++ b/protocols/FacebookRM/proto.h
@@ -186,7 +186,7 @@ public:
facebook_client facy; // TODO: Refactor to "client" and make dynamic
// Helpers
- std::string GetAvatarFolder();
+ std::tstring GetAvatarFolder();
bool GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::string *url);
void CheckAvatarChange(HANDLE hContact, std::string image_url);
void ToggleStatusMenuItems( BOOL bEnable );
@@ -203,7 +203,7 @@ public:
HANDLE m_hNetlibUser;
std::string last_status_msg_;
- std::string def_avatar_folder_;
+ std::tstring def_avatar_folder_;
HANDLE hAvatarFolder_;
std::vector<HANDLE> avatar_queue;
diff --git a/protocols/FacebookRM/utils.cpp b/protocols/FacebookRM/utils.cpp
index 248bb432bd..e34238a372 100644
--- a/protocols/FacebookRM/utils.cpp
+++ b/protocols/FacebookRM/utils.cpp
@@ -423,6 +423,20 @@ void* __fastcall utils::mem::allocate(size_t size)
return mir_calloc(size);
}
+struct
+{
+ char *ext;
+ int fmt;
+}
+static formats[] = {
+ { ".png", PA_FORMAT_PNG },
+ { ".jpg", PA_FORMAT_JPEG },
+ { ".jpeg", PA_FORMAT_JPEG },
+ { ".ico", PA_FORMAT_ICON },
+ { ".bmp", PA_FORMAT_BMP },
+ { ".gif", PA_FORMAT_GIF },
+};
+
int ext_to_format(const std::string &ext)
{
for(size_t i=0; i<SIZEOF(formats); i++)
diff --git a/protocols/FacebookRM/utils.h b/protocols/FacebookRM/utils.h
index 25a92e4d9c..75712d6a2d 100644
--- a/protocols/FacebookRM/utils.h
+++ b/protocols/FacebookRM/utils.h
@@ -143,19 +143,6 @@ private:
int timeout_;
};
-static const struct
-{
- char *ext;
- int fmt;
-} formats[] = {
- { ".png", PA_FORMAT_PNG },
- { ".jpg", PA_FORMAT_JPEG },
- { ".jpeg", PA_FORMAT_JPEG },
- { ".ico", PA_FORMAT_ICON },
- { ".bmp", PA_FORMAT_BMP },
- { ".gif", PA_FORMAT_GIF },
-};
-
int ext_to_format(const std::string &ext);
void MB( const char* m );
diff --git a/protocols/MRA/MraAvatars.cpp b/protocols/MRA/MraAvatars.cpp
index b1ca17ca29..ad147b09a6 100644
--- a/protocols/MRA/MraAvatars.cpp
+++ b/protocols/MRA/MraAvatars.cpp
@@ -621,7 +621,7 @@ DWORD MraAvatarsGetFileFormat(LPTSTR lpszPath,SIZE_T dwPathSize)
TCHAR dwExt[ 5 ];
BuffToLowerCase(&dwExt, lpszPath+(dwPathSize-4), 4);
- for ( size_t i=0; i < PA_FORMAT_MAX; i++ ) {
+ for ( DWORD i=0; i < PA_FORMAT_MAX; i++ ) {
if ( !_tcscmp( dwExt, lpcszExtensions[i])) {
dwRet = i;
break;
diff --git a/protocols/Twitter/connection.cpp b/protocols/Twitter/connection.cpp
index 0ef143e411..02d2244081 100644
--- a/protocols/Twitter/connection.cpp
+++ b/protocols/Twitter/connection.cpp
@@ -430,7 +430,7 @@ void TwitterProto::UpdateAvatarWorker(void *p)
return;
std::string ext = data->url.substr(data->url.rfind('.'));
- std::tstring filename = GetAvatarFolder() + '\\' + dbv.ptszVal + ext;
+ std::tstring filename = GetAvatarFolder() + _T('\\') + dbv.ptszVal + (TCHAR*)_A2T(ext.c_str());
DBFreeVariant(&dbv);
PROTO_AVATAR_INFORMATIONT ai = {sizeof(ai)};
diff --git a/protocols/Twitter/proto.cpp b/protocols/Twitter/proto.cpp
index ae1567e986..60f802d77c 100644
--- a/protocols/Twitter/proto.cpp
+++ b/protocols/Twitter/proto.cpp
@@ -50,11 +50,10 @@ TwitterProto::TwitterProto(const char *proto_name,const TCHAR *username)
HookProtoEvent(ME_CLIST_PREBUILDSTATUSMENU, &TwitterProto::OnBuildStatusMenu, this);
HookProtoEvent(ME_OPT_INITIALISE, &TwitterProto::OnOptionsInit, this);
- char *profile = Utils_ReplaceVars("%miranda_avatarcache%");
- def_avatar_folder_ = std::string(profile)+"\\"+m_szModuleName;
+ TCHAR *profile = Utils_ReplaceVarsT( _T("%miranda_avatarcache%"));
+ def_avatar_folder_ = std::tstring(profile) + _T("\\") + m_tszUserName;
mir_free(profile);
- hAvatarFolder_ = FoldersRegisterCustomPath(m_szModuleName,"Avatars",
- def_avatar_folder_.c_str());
+ hAvatarFolder_ = FoldersRegisterCustomPathT(m_szModuleName, "Avatars", def_avatar_folder_.c_str());
// Initialize hotkeys
char text[512];
@@ -572,13 +571,13 @@ void TwitterProto::UpdateSettings()
}
}
-std::string TwitterProto::GetAvatarFolder()
+std::tstring TwitterProto::GetAvatarFolder()
{
- char path[MAX_PATH];
- if(hAvatarFolder_ && FoldersGetCustomPath(hAvatarFolder_,path,sizeof(path), "") == 0)
+ TCHAR path[MAX_PATH];
+ if(hAvatarFolder_ && FoldersGetCustomPathT(hAvatarFolder_,path,SIZEOF(path), _T("")) == 0)
return path;
- else
- return def_avatar_folder_;
+
+ return def_avatar_folder_;
}
int TwitterProto::GetAvatar(WPARAM,LPARAM)
diff --git a/protocols/Twitter/proto.h b/protocols/Twitter/proto.h
index 6cea35b33d..eb5b9a2198 100644
--- a/protocols/Twitter/proto.h
+++ b/protocols/Twitter/proto.h
@@ -157,8 +157,7 @@ private:
void TwitterProto::resetOAuthKeys();
-
- std::string GetAvatarFolder();
+ std::tstring GetAvatarFolder();
HANDLE signon_lock_;
HANDLE avatar_lock_;
@@ -172,7 +171,7 @@ private:
twitter_id since_id_;
twitter_id dm_since_id_;
- std::string def_avatar_folder_;
+ std::tstring def_avatar_folder_;
HANDLE hAvatarFolder_;
bool in_chat_;
diff --git a/protocols/Twitter/utility.cpp b/protocols/Twitter/utility.cpp
index 2f79a40e99..3b98944bba 100644
--- a/protocols/Twitter/utility.cpp
+++ b/protocols/Twitter/utility.cpp
@@ -173,7 +173,7 @@ int mir_twitter::WLOG(const char* first, const std::wstring last)
return LOG(first, str1);
}
-bool save_url(HANDLE hNetlib,const std::string &url,const std::string &filename)
+bool save_url(HANDLE hNetlib,const std::string &url,const std::tstring &filename)
{
NETLIBHTTPREQUEST req = {sizeof(req)};
NETLIBHTTPREQUEST *resp;
@@ -189,12 +189,12 @@ bool save_url(HANDLE hNetlib,const std::string &url,const std::string &filename)
if (resp->resultCode == 200)
{
// Create folder if necessary
- std::string dir = filename.substr(0,filename.rfind('\\'));
- if(_access(dir.c_str(),0))
- CallService(MS_UTILS_CREATEDIRTREE, 0, (LPARAM)dir.c_str());
+ std::tstring dir = filename.substr(0,filename.rfind('\\'));
+ if( _taccess(dir.c_str(),0))
+ CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)dir.c_str());
// Write to file
- FILE *f = fopen(filename.c_str(),"wb");
+ FILE *f = _tfopen(filename.c_str(), _T("wb"));
fwrite(resp->pData,1,resp->dataLength,f);
fclose(f);
}
diff --git a/protocols/Twitter/utility.h b/protocols/Twitter/utility.h
index cc60ee15c4..a8823291d1 100644
--- a/protocols/Twitter/utility.h
+++ b/protocols/Twitter/utility.h
@@ -155,4 +155,4 @@ private:
};
int ext_to_format(const std::string &ext);
-bool save_url(HANDLE hNetlib,const std::string &url,const std::string &filename); \ No newline at end of file
+bool save_url(HANDLE hNetlib,const std::string &url,const std::tstring &filename); \ No newline at end of file
diff --git a/protocols/Weather/weather_svcs.cpp b/protocols/Weather/weather_svcs.cpp
index 17d4bb7f87..0ded709fcc 100644
--- a/protocols/Weather/weather_svcs.cpp
+++ b/protocols/Weather/weather_svcs.cpp
@@ -144,10 +144,9 @@ INT_PTR WeatherGetAvatarInfo(WPARAM wParam, LPARAM lParam)
status = (WORD)DBGetContactSettingWord(ai->hContact, WEATHERPROTONAME, "StatusIcon",0);
for (i=0; i<10; i++)
- {
if (statusValue[i] == status)
break;
- }
+
if (i >= 10)
return GAIR_NOAVATAR;
diff --git a/protocols/Yahoo/avatar.cpp b/protocols/Yahoo/avatar.cpp
index ad798ed687..254acfd07f 100644
--- a/protocols/Yahoo/avatar.cpp
+++ b/protocols/Yahoo/avatar.cpp
@@ -249,7 +249,7 @@ void __cdecl CYahooProto::recv_avatarthread(void *pavt)
AI.cbSize = sizeof AI;
AI.format = PA_FORMAT_PNG;
AI.hContact = hContact;
- WideCharToMultiByte( CP_ACP, 0, buf, -1, AI.filename, sizeof AI.filename, 0, 0 );
+ _tcsncpy(AI.filename, buf, SIZEOF(AI.filename));
if (error)
SetDword(hContact, "PictCK", 0);