src/irc_nm.h
author Tero Marttila <terom@fixme.fi>
Thu, 12 Mar 2009 18:08:27 +0200
changeset 36 791d7a5532e2
permissions -rw-r--r--
add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
36
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef IRC_NM_H
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define IRC_NM_H
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
 * @file
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 *
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
 * Support for IRC nickmasks
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
#include "error.h"
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
#include <stddef.h>
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
 * Maximum length of an IRC nickname including terminating NUL
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
#define IRC_NICK_MAX 31
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
 * Parsed nickmask
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
struct irc_nm {
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    /** Nickname, not normalized */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    const char *nickname;
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    /** Username, including any ident-related prefix from the network */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
    const char *username;
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    /** Hostname, either reverse DNS hostname, literal IPv4 or literal IPv6 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    const char *hostname;
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
};
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
 * Parse a full nickmask from a prefix. This fails if the prefix is a server name.
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
 *
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
 * XXX: not implemented, and memory-management issues
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
err_t irc_nm_parse (struct irc_nm *nm, char *prefix);
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
 * Compare two nicknames for equality, with standard strcmp() semantics.
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
int irc_cmp_nick (const char *nick1, const char *nick2);
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
 * Compare up to the first n chars of the two nickname strings for equality, with standard strcmp() semantics.
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
int irc_ncmp_nick (const char *nick1, const char *nick2, size_t n);
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
 * Parse the nickname portion of a prefix, storing it in the given buffer of IRC_NICK_MAX bytes.
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
err_t irc_prefix_parse_nick (const char *prefix, char nick[IRC_NICK_MAX]);
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
/**
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
 * Compare the nickname in the given prefix and with the given nickname for equality.
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
 *
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
 * @return -err for invalid prefix, 0 for match, >0 for non-match.
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
 */
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
int irc_prefix_cmp_nick (const char *prefix, const char *nick);
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
791d7a5532e2 add irc_prefix_* functions to parse nicknames (plus sketch out some irc_nickmask stuff)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
#endif