From 94600348cce450076fa598d0c9000c7599b77558 Mon Sep 17 00:00:00 2001 From: Jari Matilainen Date: Fri, 13 Jan 2017 16:46:19 +0000 Subject: [PATCH] Reworked code to use helper function for window item type --- src/fe-common/core/fe-common-core.c | 86 ++++++++++++++--------------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/src/fe-common/core/fe-common-core.c b/src/fe-common/core/fe-common-core.c index 4c9c8614..abd5fed3 100644 --- a/src/fe-common/core/fe-common-core.c +++ b/src/fe-common/core/fe-common-core.c @@ -463,58 +463,56 @@ void fe_common_core_finish_init(void) gboolean strarray_find_dest(char **array, const TEXT_DEST_REC *dest) { g_return_val_if_fail(array != NULL, FALSE); - const char *type = module_find_id_str("WINDOW ITEM TYPE", dest->window->active->type); + WindowType type = window_item_get_type(dest->window->active); - if ((strarray_find(array, "*") != -1) || // we ignore all targets - (g_ascii_strcasecmp(type, "CHANNEL") == 0 && strarray_find(array, "#") != -1) || // we ignore all channels - (g_ascii_strcasecmp(type, "QUERY") == 0 && // Is this a query? - (g_str_has_prefix("=", dest->target) ? // is it a dcc chat? - strarray_find(array, "=") != -1 : // are we ignoring dcc chat? - strarray_find(array, "@") != -1)) || // are we ognoring regular queries? - (strarray_find(array, dest->target) != -1)) // we ignore all channels with specific name + // we ignore all targets + if (strarray_find(array, "*") != -1) + return TRUE; + // we ignore all channels + else if (type & WITEM_TYPE_CHANNEL && strarray_find(array, "#") != -1) + return TRUE; + // Is this a dcc chat? + else if (type & WITEM_TYPE_DCCCHAT && strarray_find(array, "=") != -1) + return TRUE; + // Is this a private query window? + else if (type & WITEM_TYPE_PRIVMSG && strarray_find(array, "@") != -1) return TRUE; else if (dest->server_tag != NULL) { char *prefix = g_strdup_printf("%s/", dest->server_tag); - if (strarray_find_prefix(array, prefix)) { - GSList *targets = NULL, *iterator = NULL; - gboolean found = FALSE; - - if (type != NULL) { - // create a list of types to look for - targets = g_slist_append(targets, g_strdup("*")); - if (g_ascii_strcasecmp(type, "CHANNEL") == 0) { - targets = g_slist_append(targets, g_strdup("#")); - targets = g_slist_append(targets, g_strdup(dest->target)); - } - else if (g_ascii_strcasecmp(type, "QUERY") == 0) { - if (g_str_has_prefix("=", dest->target)) - targets = g_slist_append(targets, g_strdup("=")); - else - targets = g_slist_append(targets, g_strdup("@")); - } - - for (iterator = targets; iterator; iterator = iterator->next) { - char *tagtarget = g_strdup_printf("%s/%s", dest->server_tag, (char *) iterator->data); - int ret = strarray_find(array, tagtarget); - g_free(tagtarget); - if (ret != -1) { - found = TRUE; - break; - } - } + if (!strarray_find_prefix(array, prefix)) { + g_free(prefix); + return FALSE; + } + GSList *targets = NULL, *iterator = NULL; + gboolean found = FALSE; + // create a list of types to look for + targets = g_slist_append(targets, g_strdup("*")); + if (type & WITEM_TYPE_CHANNEL) { + targets = g_slist_append(targets, g_strdup("#")); + targets = g_slist_append(targets, g_strdup(dest->target)); + } + else if (type & WITEM_TYPE_QUERY) { + if (type & WITEM_TYPE_DCCCHAT) + targets = g_slist_append(targets, g_strdup("=")); + else + targets = g_slist_append(targets, g_strdup("@")); + } + for (iterator = targets; iterator; iterator = iterator->next) { + char *tagtarget = g_strdup_printf("%s/%s", dest->server_tag, (char *) iterator->data); + int ret = strarray_find(array, tagtarget); + g_free(tagtarget); + if (ret != -1) { + found = TRUE; + break; } - - g_slist_foreach(targets, (GFunc)g_free, NULL); - g_slist_free(targets); - g_free(prefix); - - return found; - } - else { - g_free(prefix); } + + g_slist_foreach(targets, (GFunc)g_free, NULL); + g_slist_free(targets); + g_free(prefix); + return found; } return FALSE;