summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--globals.h2
-rw-r--r--utilities.cpp53
2 files changed, 36 insertions, 19 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..b1d3415 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -65,29 +65,40 @@ 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;
hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
+ 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);
+ hContact_entry *tmp = plist;
+ plist = plist->next;
+// delete tmp; //something wrong here %)
}
}
}
@@ -95,25 +106,31 @@ void RemoveExcludedUsers()
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);
+ 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 tmp; //something wrong here %)
}
}
}