diff options
author | Timo Sirainen <cras@irssi.org> | 2000-06-04 12:38:28 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2000-06-04 12:38:28 +0000 |
commit | 856273754804e6959f086ac75932ffa77eb39a8a (patch) | |
tree | fc99f2e921d5dd131acf0bad59b990c065605906 /src/irc/core/nicklist.c | |
parent | 1a541c149d24c827d5145e87c7ecb7951fb46bd3 (diff) | |
download | irssi-856273754804e6959f086ac75932ffa77eb39a8a.zip |
completion_msgtoyou() -> irc_nick_match()
Implemented -replies option to /ignore.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@287 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/irc/core/nicklist.c')
-rw-r--r-- | src/irc/core/nicklist.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/irc/core/nicklist.c b/src/irc/core/nicklist.c index 826ee4a9..ec9dc1ab 100644 --- a/src/irc/core/nicklist.c +++ b/src/irc/core/nicklist.c @@ -197,6 +197,7 @@ int nicklist_compare(NICK_REC *p1, NICK_REC *p2) (a) == '[' || (a) == ']' || (a) == '{' || (a) == '}' || \ (a) == '|' || (a) == '\\' || (a) == '^') +/* Remove all "extra" characters from `nick'. Like _nick_ -> nick */ char *nick_strip(const char *nick) { char *stripped, *spos; @@ -214,6 +215,31 @@ char *nick_strip(const char *nick) return stripped; } +/* Check is `msg' is meant for `nick'. */ +int irc_nick_match(const char *nick, const char *msg) +{ + char *stripnick, *stripmsg; + int ret, len; + + g_return_val_if_fail(nick != NULL, FALSE); + g_return_val_if_fail(msg != NULL, FALSE); + + if (g_strncasecmp(msg, nick, strlen(nick)) == 0 && + !isalnum((int) msg[strlen(nick)])) return TRUE; + + stripnick = nick_strip(nick); + stripmsg = nick_strip(msg); + + len = strlen(stripnick); + ret = len > 0 && g_strncasecmp(stripmsg, stripnick, len) == 0 && + !isalnum((int) stripmsg[len]) && + (unsigned char) stripmsg[len] < 128; + + g_free(stripnick); + g_free(stripmsg); + return ret; +} + static void event_names_list(const char *data, IRC_SERVER_REC *server) { CHANNEL_REC *chanrec; |