diff options
-rw-r--r-- | src/common/url.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/common/url.c b/src/common/url.c index 57d8d88b..0df78f78 100644 --- a/src/common/url.c +++ b/src/common/url.c @@ -266,11 +266,20 @@ match_channel (const char *word, int *start, int *end) { const server *serv = current_sess->server; const char *chan_prefixes = serv ? serv->chantypes : CHANPRE; + const char *nick_prefixes = serv ? serv->nick_prefixes : NICKPRE; if (!regex_match (re_channel (), word, start, end)) return FALSE; - return strchr (chan_prefixes, word[*start]) != NULL; + /* Check for +#channel (for example whois output) */ + if (strchr (nick_prefixes, word[*start]) != NULL + && strchr (chan_prefixes, word[*start + 1]) != NULL) + return TRUE; + /* Or just #channel */ + else if (strchr (chan_prefixes, word[*start]) != NULL) + return TRUE; + + return FALSE; } static gboolean |