diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fe-common/core/completion.c | 2 | ||||
-rw-r--r-- | src/fe-common/core/fe-common-core.c | 11 | ||||
-rw-r--r-- | src/fe-common/core/fe-settings.c | 2 | ||||
-rw-r--r-- | src/irc/core/irc-servers.c | 18 | ||||
-rw-r--r-- | src/irc/dcc/dcc.c | 4 |
5 files changed, 26 insertions, 11 deletions
diff --git a/src/fe-common/core/completion.c b/src/fe-common/core/completion.c index 1e7833a4..861054b5 100644 --- a/src/fe-common/core/completion.c +++ b/src/fe-common/core/completion.c @@ -762,7 +762,7 @@ static void cmd_completion(const char *data) int len; if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTIONS | - PARAM_FLAG_GETREST | PARAM_FLAG_STRIP_TRAILING_WS, + PARAM_FLAG_GETREST, "completion", &optlist, &key, &value)) return; diff --git a/src/fe-common/core/fe-common-core.c b/src/fe-common/core/fe-common-core.c index ee7f9424..1b2ab1e2 100644 --- a/src/fe-common/core/fe-common-core.c +++ b/src/fe-common/core/fe-common-core.c @@ -459,15 +459,24 @@ gboolean strarray_find_dest(char **array, const TEXT_DEST_REC *dest) { g_return_val_if_fail(array != NULL, FALSE); + if (strarray_find(array, "*") != -1) + return TRUE; + if (strarray_find(array, dest->target) != -1) return TRUE; if (dest->server_tag != NULL) { - char *tagtarget = g_strdup_printf("%s/%s", dest->server_tag, dest->target); + char *tagtarget = g_strdup_printf("%s/%s", dest->server_tag, "*"); int ret = strarray_find(array, tagtarget); g_free(tagtarget); if (ret != -1) return TRUE; + + tagtarget = g_strdup_printf("%s/%s", dest->server_tag, dest->target); + ret = strarray_find(array, tagtarget); + g_free(tagtarget); + if (ret != -1) + return TRUE; } return FALSE; } diff --git a/src/fe-common/core/fe-settings.c b/src/fe-common/core/fe-settings.c index 3bb43bf7..b689cbf9 100644 --- a/src/fe-common/core/fe-settings.c +++ b/src/fe-common/core/fe-settings.c @@ -109,7 +109,7 @@ static void cmd_set(char *data) SETTINGS_REC *rec; if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST | - PARAM_FLAG_OPTIONS | PARAM_FLAG_STRIP_TRAILING_WS, + PARAM_FLAG_OPTIONS, "set", &optlist, &key, &value)) return; diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c index 81f0c269..1df95f70 100644 --- a/src/irc/core/irc-servers.c +++ b/src/irc/core/irc-servers.c @@ -78,17 +78,23 @@ static int ischannel_func(SERVER_REC *server, const char *data) IRC_SERVER_REC *irc_server = (IRC_SERVER_REC *) server; char *chantypes, *statusmsg; + g_return_val_if_fail(data != NULL, FALSE); + + /* empty string is no channel */ + if (*data == '\0') + return FALSE; + chantypes = g_hash_table_lookup(irc_server->isupport, "chantypes"); if (chantypes == NULL) chantypes = "#&!+"; /* normal, local, secure, modeless */ - statusmsg = g_hash_table_lookup(irc_server->isupport, "statusmsg"); - if (statusmsg == NULL) - statusmsg = "@+"; - while (strchr(statusmsg, *data) != NULL) - data++; + statusmsg = g_hash_table_lookup(irc_server->isupport, "statusmsg"); + if (statusmsg != NULL) + data += strspn(data, statusmsg); - return strchr(chantypes, *data) != NULL; + /* strchr(3) considers the trailing NUL as part of the string, make sure + * we didn't advance too much. */ + return *data != '\0' && strchr(chantypes, *data) != NULL; } static char **split_line(const SERVER_REC *server, const char *line, diff --git a/src/irc/dcc/dcc.c b/src/irc/dcc/dcc.c index 7f35585e..17f6c477 100644 --- a/src/irc/dcc/dcc.c +++ b/src/irc/dcc/dcc.c @@ -496,8 +496,8 @@ static void cmd_dcc_close(char *data, IRC_SERVER_REC *server) g_return_if_fail(data != NULL); - if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST | - PARAM_FLAG_STRIP_TRAILING_WS, &typestr, &nick, &arg)) + if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, + &typestr, &nick, &arg)) return; if (*nick == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); |