static void read_ignores(void) { IGNORE_REC *rec; CONFIG_NODE *node; GSList *tmp; while (ignores != NULL) ignore_destroy(ignores->data); node = iconfig_node_traverse("ignores", FALSE); if (node == NULL) return; for (tmp = node->value; tmp != NULL; tmp = tmp->next) { node = tmp->data; if (node->type != NODE_TYPE_BLOCK) continue; rec = g_new0(IGNORE_REC, 1); ignores = g_slist_append(ignores, rec); rec->mask = g_strdup(config_node_get_str(node, "mask", NULL)); rec->pattern = g_strdup(config_node_get_str(node, "pattern", NULL)); rec->level = level2bits(config_node_get_str(node, "level", "")); rec->except_level = level2bits(config_node_get_str(node, "except_level", "")); rec->regexp = config_node_get_bool(node, "regexp", FALSE); rec->fullword = config_node_get_bool(node, "fullword", FALSE); rec->replies = config_node_get_bool(node, "replies", FALSE); node = config_node_section(node, "channels", -1); if (node != NULL) rec->channels = config_node_get_list(node); } }
static void read_hilight_config(void) { CONFIG_NODE *node; HILIGHT_REC *rec; GSList *tmp; char *text, *color; hilights_destroy_all(); node = iconfig_node_traverse("hilights", FALSE); if (node == NULL) { reset_cache(); return; } tmp = config_node_first(node->value); for (; tmp != NULL; tmp = config_node_next(tmp)) { node = tmp->data; if (node->type != NODE_TYPE_BLOCK) continue; text = config_node_get_str(node, "text", NULL); if (text == NULL || *text == '\0') continue; rec = g_new0(HILIGHT_REC, 1); hilights = g_slist_append(hilights, rec); rec->text = g_strdup(text); color = config_node_get_str(node, "color", NULL); rec->color = color == NULL || *color == '\0' ? NULL : g_strdup(color); color = config_node_get_str(node, "act_color", NULL); rec->act_color = color == NULL || *color == '\0' ? NULL : g_strdup(color); rec->level = config_node_get_int(node, "level", 0); rec->priority = config_node_get_int(node, "priority", 0); rec->nick = config_node_get_bool(node, "nick", TRUE); rec->word = config_node_get_bool(node, "word", TRUE); rec->case_sensitive = config_node_get_bool(node, "matchcase", FALSE); rec->nickmask = config_node_get_bool(node, "mask", FALSE); rec->fullword = config_node_get_bool(node, "fullword", FALSE); rec->regexp = config_node_get_bool(node, "regexp", FALSE); rec->servertag = config_node_get_str(node, "servertag", NULL); hilight_init_rec(rec); node = iconfig_node_section(node, "channels", -1); if (node != NULL) rec->channels = config_node_get_list(node); } reset_cache(); }
static void read_ignores(void) { IGNORE_REC *rec; CONFIG_NODE *node; GSList *tmp; while (ignores != NULL) ignore_destroy(ignores->data, FALSE); node = iconfig_node_traverse("ignores", FALSE); if (node == NULL) { nickmatch_rebuild(nickmatch); return; } tmp = config_node_first(node->value); for (; tmp != NULL; tmp = config_node_next(tmp)) { node = tmp->data; if (node->type != NODE_TYPE_BLOCK) continue; rec = g_new0(IGNORE_REC, 1); ignores = g_slist_append(ignores, rec); rec->mask = g_strdup(config_node_get_str(node, "mask", NULL)); rec->pattern = g_strdup(config_node_get_str(node, "pattern", NULL)); rec->level = level2bits(config_node_get_str(node, "level", ""), NULL); rec->exception = config_node_get_bool(node, "exception", FALSE); rec->regexp = config_node_get_bool(node, "regexp", FALSE); rec->fullword = config_node_get_bool(node, "fullword", FALSE); rec->replies = config_node_get_bool(node, "replies", FALSE); rec->unignore_time = config_node_get_int(node, "unignore_time", 0); rec->servertag = g_strdup(config_node_get_str(node, "servertag", 0)); node = iconfig_node_section(node, "channels", -1); if (node != NULL) rec->channels = config_node_get_list(node); ignore_init_rec(rec); } nickmatch_rebuild(nickmatch); }