summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp41
1 files changed, 35 insertions, 6 deletions
diff --git a/utilities.cpp b/utilities.cpp
index 92284d1..7badf39 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -90,6 +90,7 @@ void DeleteCListGroupsByName(TCHAR* szGroupName)
DBWriteContactSettingByte(NULL, "CList", "ConfirmDelete",ConfirmDelete);
}
+
void RemoveExcludedUsers()
{
HANDLE hContact;
@@ -113,7 +114,16 @@ void RemoveExcludedUsers()
plist = first;
while(plist->hContact != INVALID_HANDLE_VALUE)
{
- CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ std::string proto=DBGetContactSettingStringPAN_A(plist->hContact,"Protocol","p","");
+ UINT status = CallProtoService(proto.c_str(), PS_GETSTATUS, 0, 0);
+
+ if(status>= ID_STATUS_CONNECTING && status <= ID_STATUS_OFFLINE){
+ LogSpamToFile(plist->hContact, _T("Mark for delete"));
+ DBWriteContactSettingByte(plist->hContact,"CList","Delete", 1);
+ }else{
+ LogSpamToFile(plist->hContact, _T("Deleted"));
+ CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ };
tmp = plist;
plist = plist->next;
delete tmp;
@@ -147,9 +157,18 @@ void RemoveTemporaryUsers()
plist = first;
while(plist->hContact != INVALID_HANDLE_VALUE)
{
- LogSpamToFile(plist->hContact, _T("Deleted"));
- CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
- tmp = plist;
+ std::string proto=DBGetContactSettingStringPAN_A(plist->hContact,"Protocol","p","");
+ UINT status = CallProtoService(proto.c_str(), PS_GETSTATUS, 0, 0);
+
+ if(status>= ID_STATUS_CONNECTING && status <= ID_STATUS_OFFLINE){
+ LogSpamToFile(plist->hContact, _T("Mark for delete"));
+ DBWriteContactSettingByte(plist->hContact,"CList","Delete", 1);
+ }else{
+ LogSpamToFile(plist->hContact, _T("Deleted"));
+ CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ };
+
+ tmp = plist;
plist = plist->next;
delete tmp;
}
@@ -271,6 +290,7 @@ tstring GetContactUid(HANDLE hContact, tstring Protocol)
{
tstring Uid;
TCHAR dUid[32]={0};
+ char aUid[32]={0};
char *szProto = mir_utf8encodeW(Protocol.c_str());
CONTACTINFO ci;
ZeroMemory((void *)&ci, sizeof(ci));
@@ -287,7 +307,14 @@ tstring GetContactUid(HANDLE hContact, tstring Protocol)
mir_free((void *)ci.pszVal);
break;
case CNFT_DWORD:
- _itow_s(ci.dVal,dUid,32,10);
+#if defined(_MSC_VER) && _MSC_VER >= 1300
+
+ _itoa_s(ci.dVal,aUid,32,10);
+#else
+ _itoa(ci.dVal,aUid,10);
+
+#endif
+ OemToChar(aUid, dUid);
Uid=dUid;
break;
default:
@@ -346,4 +373,6 @@ void LogSpamToFile(HANDLE hContact, tstring message)
mir_free(buf);
file.close();
-} \ No newline at end of file
+
+}
+