diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-03 03:12:34 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-03 03:12:34 +0300 |
commit | 4d6c3b34abe6ee2c5161a490cac64f6f20fc2b1d (patch) | |
tree | 63c7c8d2c6cb82583b57a14072eb6926741884b1 | |
parent | 1836cf36710e2ed7b58a57cc045feda2005db17d (diff) |
dynamic lists for hContact's cleaning, not finished
-rw-r--r-- | globals.h | 2 | ||||
-rw-r--r-- | utilities.cpp | 53 |
2 files changed, 36 insertions, 19 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..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 %) } } } |