summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--globals.h2
-rw-r--r--utilities.cpp59
2 files changed, 41 insertions, 20 deletions
diff --git a/globals.h b/globals.h
index 9a4643b..8e2adc7 100644
--- a/globals.h
+++ b/globals.h
@@ -1,4 +1,4 @@
-#define pluginName "StopSpam"
+#define pluginName "StopSpam" //const char* ?
/*
TCHAR const * defAnswer = _T("nospam");
TCHAR const * defCongratulation =
diff --git a/utilities.cpp b/utilities.cpp
index b7475f6..fcc98ad 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -65,56 +65,77 @@ int CreateCListGroup(TCHAR* szGroupName)
return hGroup;
}
+struct hContact_entry
+{
+ HANDLE hContact;
+ struct hContact_entry *next;
+};
void RemoveExcludedUsers()
{
HANDLE hContact;
- HANDLE ToRemove[4096];
- int i = 0,a = 0;
+ hContact_entry *first, *plist, *tmp;
hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
+ first = new hContact_entry;
+ plist = first;
+ plist->hContact = INVALID_HANDLE_VALUE;
if(hContact)
{
do
{
if(DBGetContactSettingByte(hContact, "CList", "NotOnList", 0) && DBGetContactSettingByte(hContact, pluginName, "Excluded", 0))
{
- ToRemove[i] = hContact;
- i++;
+ plist->hContact = hContact;
+ plist->next = new hContact_entry;
+ plist = plist->next;
+ plist->hContact = INVALID_HANDLE_VALUE;
}
}
- while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact, 0));
- ToRemove[i] = INVALID_HANDLE_VALUE;
- while(ToRemove[a] != INVALID_HANDLE_VALUE)
+ while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact, 0))
+ ;
+ plist = first;
+ while(plist->hContact != INVALID_HANDLE_VALUE)
{
- CallService(MS_DB_CONTACT_DELETE, (WPARAM)ToRemove[a], 0);
- a++;
+ CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ tmp = plist;
+ plist = plist->next;
+ delete tmp;
}
+ delete plist;
}
}
void RemoveTemporaryUsers()
{
HANDLE hContact;
- HANDLE ToRemove[4096];
- int i = 0, a= 0;
+ hContact_entry *first, *plist, *tmp;
hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
+ first = new hContact_entry;
+ plist = first;
+ plist->hContact = INVALID_HANDLE_VALUE;
if(hContact)
{
do
{
if(DBGetContactSettingByte(hContact, "CList", "NotOnList", 0))
{
- ToRemove[i] = hContact;
- i++;
+ plist->hContact = hContact;
+ plist->next = new hContact_entry;
+ plist = plist->next;
+ plist->hContact = INVALID_HANDLE_VALUE;
}
}
- while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact, 0));
- ToRemove[i] = INVALID_HANDLE_VALUE;
- while(ToRemove[a] != INVALID_HANDLE_VALUE)
+ while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact, 0))
+ ;
+ plist = first;
+ while(plist->hContact != INVALID_HANDLE_VALUE)
{
- CallService(MS_DB_CONTACT_DELETE, (WPARAM)ToRemove[a], 0);
- a++;
+ CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ tmp = plist;
+ plist = plist->next;
+ delete tmp;
}
+ delete plist;
}
}
int RemoveTmp(WPARAM,LPARAM)
@@ -243,4 +264,4 @@ BOOL IsUrlContains(TCHAR * Str)
mir_free(StrLower);
}
return 0;
-} \ No newline at end of file
+}