terom@36: #include "irc_nm.h" terom@36: terom@36: #include terom@36: terom@36: /** terom@36: * Compare two nicknames terom@36: */ terom@36: int irc_cmp_nick (const char *nick1, const char *nick2) terom@36: { terom@36: // XXX: just use strcasecmp for now terom@36: return strcasecmp(nick1, nick2); terom@36: } terom@36: terom@36: int irc_ncmp_nick (const char *nick1, const char *nick2, size_t n) terom@36: { terom@36: // XXX: just use strncasecmp for now terom@36: return strncasecmp(nick1, nick2, n); terom@36: } terom@36: terom@36: err_t irc_prefix_parse_nick (const char *prefix, char nick[IRC_NICK_MAX]) terom@36: { terom@36: const char *bang; terom@36: terom@36: // find the ! terom@36: if ((bang = strchr(prefix, '!')) == NULL) terom@36: return ERR_INVALID_NM; terom@36: terom@36: // too long? terom@36: if (bang - prefix > IRC_NICK_MAX - 1) terom@36: return ERR_INVALID_NICK_LENGTH; terom@36: terom@36: // copy up to the ! terom@36: memcpy(nick, prefix, bang - prefix); terom@36: terom@36: // terminating NUL terom@36: nick[bang - prefix] = '\0'; terom@36: terom@36: // ok terom@36: return SUCCESS; terom@36: } terom@36: terom@36: int irc_prefix_cmp_nick (const char *prefix, const char *nick) terom@36: { terom@36: const char *bang; terom@36: terom@36: // find the ! terom@36: if ((bang = strchr(prefix, '!')) == NULL) terom@36: return -ERR_INVALID_NM; terom@36: terom@36: // compare up to that terom@36: if (irc_ncmp_nick(prefix, nick, (bang - prefix)) == 0) terom@36: // match terom@36: return 0; terom@36: terom@36: else terom@36: // doesn't match terom@36: return 1; terom@36: }