diff options
Diffstat (limited to 'utilities.cpp')
-rw-r--r-- | utilities.cpp | 59 |
1 files changed, 40 insertions, 19 deletions
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 +} |