summaryrefslogtreecommitdiff
path: root/src/core/nicklist.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/nicklist.c')
-rw-r--r--src/core/nicklist.c45
1 files changed, 19 insertions, 26 deletions
diff --git a/src/core/nicklist.c b/src/core/nicklist.c
index 50199f63..54dfb5fb 100644
--- a/src/core/nicklist.c
+++ b/src/core/nicklist.c
@@ -166,30 +166,21 @@ void nicklist_rename_unique(SERVER_REC *server,
nicklist_get_same_unique(server, old_nick_id));
}
-#define NICKLIST_GETNICKS_LOOP_INIT(hashtable) \
- do { \
- GHashTableIter _iter; \
- g_hash_table_iter_init(&_iter, (hashtable)); \
- while (g_hash_table_iter_next(&_iter, NULL, (void*)&nick)) { \
- while (nick != NULL) {
-#define NICKLIST_GETNICKS_LOOP_END \
- nick = nick->next; \
- } \
- } \
- } while (0)
-
static NICK_REC *nicklist_find_wildcards(CHANNEL_REC *channel,
const char *mask)
{
NICK_REC *nick;
+ GHashTableIter iter;
+
+ g_hash_table_iter_init(&iter, channel->nicks);
+ while (g_hash_table_iter_next(&iter, NULL, (void*)&nick)) {
+ for (; nick != NULL; nick = nick->next) {
+ if (mask_match_address(channel->server, mask,
+ nick->nick, nick->host))
+ return nick;
+ }
+ }
- NICKLIST_GETNICKS_LOOP_INIT(channel->nicks);
-
- if (mask_match_address(channel->server, mask,
- nick->nick, nick->host))
- return nick;
-
- NICKLIST_GETNICKS_LOOP_END;
return NULL;
}
@@ -197,19 +188,21 @@ GSList *nicklist_find_multiple(CHANNEL_REC *channel, const char *mask)
{
GSList *nicks;
NICK_REC *nick;
+ GHashTableIter iter;
g_return_val_if_fail(IS_CHANNEL(channel), NULL);
g_return_val_if_fail(mask != NULL, NULL);
nicks = NULL;
- NICKLIST_GETNICKS_LOOP_INIT(channel->nicks);
-
- if (mask_match_address(channel->server, mask,
- nick->nick, nick->host))
- nicks = g_slist_prepend(nicks, nick);
-
- NICKLIST_GETNICKS_LOOP_END;
+ g_hash_table_iter_init(&iter, channel->nicks);
+ while (g_hash_table_iter_next(&iter, NULL, (void*)&nick)) {
+ for (; nick != NULL; nick = nick->next) {
+ if (mask_match_address(channel->server, mask,
+ nick->nick, nick->host))
+ nicks = g_slist_prepend(nicks, nick);
+ }
+ }
return nicks;
}