static PyObject *PyServer_mask_match_address(PyServer *self, PyObject *args, PyObject *kwds) { static char *kwlist[] = {"mask", "nick", "address", NULL}; char *mask = ""; char *nick = ""; char *address = ""; RET_NULL_IF_INVALID(self->data); if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist, &mask, &nick, &address)) return NULL; return PyBool_FromLong(mask_match_address(self->data, mask, nick, address)); }
static NICK_REC *nicklist_find_wildcards(CHANNEL_REC *channel, const char *mask) { GSList *nicks, *tmp; NICK_REC *nick; nicks = nicklist_getnicks(channel); nick = NULL; for (tmp = nicks; tmp != NULL; tmp = tmp->next) { nick = tmp->data; if (mask_match_address(channel->server, mask, nick->nick, nick->host)) break; } g_slist_free(nicks); return tmp == NULL ? NULL : nick; }
GSList *nicklist_find_multiple(CHANNEL_REC *channel, const char *mask) { GSList *nicks, *tmp, *next; g_return_val_if_fail(IS_CHANNEL(channel), NULL); g_return_val_if_fail(mask != NULL, NULL); nicks = nicklist_getnicks(channel); for (tmp = nicks; tmp != NULL; tmp = next) { NICK_REC *nick = tmp->data; next = tmp->next; if (!mask_match_address(channel->server, mask, nick->nick, nick->host)) nicks = g_slist_remove(nicks, tmp->data); } return nicks; }
static int botuser_find_mask(USER_REC *user, const char *nick, const char *host) { GSList *tmp; g_return_val_if_fail(user != NULL, FALSE); g_return_val_if_fail(nick != NULL, FALSE); g_return_val_if_fail(host != NULL, FALSE); /* Check that masks match */ for (tmp = user->masks; tmp != NULL; tmp = tmp->next) { USER_MASK_REC *rec = tmp->data; if (mask_match_address(NULL, rec->mask, nick, host)) { user->not_flags = rec->not_flags; return TRUE; } } return FALSE; }