diff -r 0c2e0cb46c3a -r a4891d71aca9 src/irc_proto.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/irc_proto.c Thu Mar 12 18:48:42 2009 +0200 @@ -0,0 +1,58 @@ +#include "irc_proto.h" + +#include + +/** + * Compare two nicknames + */ +int irc_cmp_nick (const char *nick1, const char *nick2) +{ + // XXX: just use strcasecmp for now + return strcasecmp(nick1, nick2); +} + +int irc_ncmp_nick (const char *nick1, const char *nick2, size_t n) +{ + // XXX: just use strncasecmp for now + return strncasecmp(nick1, nick2, n); +} + +err_t irc_prefix_parse_nick (const char *prefix, char nick[IRC_NICK_MAX]) +{ + const char *bang; + + // find the ! + if ((bang = strchr(prefix, '!')) == NULL) + return ERR_INVALID_NM; + + // too long? + if (bang - prefix > IRC_NICK_MAX - 1) + return ERR_INVALID_NICK_LENGTH; + + // copy up to the ! + memcpy(nick, prefix, bang - prefix); + + // terminating NUL + nick[bang - prefix] = '\0'; + + // ok + return SUCCESS; +} + +int irc_prefix_cmp_nick (const char *prefix, const char *nick) +{ + const char *bang; + + // find the ! + if ((bang = strchr(prefix, '!')) == NULL) + return -ERR_INVALID_NM; + + // compare up to that + if (irc_ncmp_nick(prefix, nick, (bang - prefix)) == 0) + // match + return 0; + + else + // doesn't match + return 1; +}