diff options
author | Sergey (Elzor) Bolhovskoy <elzor@foobar2000.ru> | 2010-07-15 21:15:42 +0600 |
---|---|---|
committer | Sergey (Elzor) Bolhovskoy <elzor@foobar2000.ru> | 2010-07-15 21:15:42 +0600 |
commit | 562bcedfbf741cedd6731fc172eb033e15d2bb3b (patch) | |
tree | 087e3a93abae28e34c3ddd12e7e02a3256217033 | |
parent | 4131d0fec7c974004845b0e35bbca9d33aa931da (diff) | |
parent | 6eb97740351520cf36a5c2bf24b621353a8ebe9e (diff) |
Merge branch 'stopspam_mod' into stopspam_mod_elzor
-rw-r--r-- | globals.h | 2 | ||||
-rw-r--r-- | utilities.cpp | 59 |
2 files changed, 41 insertions, 20 deletions
@@ -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..adf82d7 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 tmp; } } 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 tmp; } } int RemoveTmp(WPARAM,LPARAM) @@ -243,4 +264,4 @@ BOOL IsUrlContains(TCHAR * Str) mir_free(StrLower); } return 0; -}
\ No newline at end of file +} |