diff options
author | RichardHitt <rbh00@netcom.com> | 2013-01-11 01:39:21 -0800 |
---|---|---|
committer | RichardHitt <rbh00@netcom.com> | 2013-01-11 01:39:21 -0800 |
commit | 487ac0a011655b78de5b41bf2c8c68143f9b9bf2 (patch) | |
tree | 601ff0d646b6eab0807f35ed094cccb0c8e48043 | |
parent | 475eb9fcaab1d846a3617f587f22bd77cdeddd5e (diff) |
Correct nick recognition. Closes 372.
-rw-r--r-- | src/common/url.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/common/url.c b/src/common/url.c index 0ee09988..873878ac 100644 --- a/src/common/url.c +++ b/src/common/url.c @@ -188,6 +188,16 @@ static int laststart = 0; static int lastend = 0; static int lasttype = 0; +static int +strchrs (char c, char *s) +{ + while (*s) + if (c == *s++) + return TRUE; + return FALSE; +} + +#define NICKPRE "~+!@%%&" int url_check_word (const char *word) { @@ -196,11 +206,15 @@ url_check_word (const char *word) { switch (lasttype) { + char *str; + case WORD_NICK: - if (!isalnum (word[laststart])) + if (strchrs (word[laststart], NICKPRE)) laststart++; - if (!userlist_find (current_sess, &word[laststart])) + str = strndup (&word[laststart], lastend - laststart); + if (!userlist_find (current_sess, str)) lasttype = 0; + free (str); return lasttype; case WORD_EMAIL: if (!isalnum (word[laststart])) @@ -448,7 +462,7 @@ re_email (void) } /* NICK description --- */ -#define NICKPRE "~+!@%%&" +/* For NICKPRE see before url_check_word() */ #define NICKHYP "-" #define NICKLET "a-z" #define NICKDIG "0-9" |