src/irc_proto.c
author Tero Marttila <terom@fixme.fi>
Thu, 12 Mar 2009 18:48:42 +0200
changeset 39 a4891d71aca9
parent 36 src/irc_nm.c@791d7a5532e2
child 45 71e65564afd2
permissions -rw-r--r--
rename irc_nm to irc_proto, and move numerics from irc_cmd.h
#include "irc_proto.h"

#include <string.h>

/**
 * 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;
}