LIBIRCCLIENT(1) Libircclient LIBIRCCLIENT(1) (NAME) libircclient - IRC C (INTRODUCTION) (Introduction) (Overview) Libircclient () IRC . RFC . IRC . (Features) o C o IRC o IRC o SSL IRC o (Multi-threading) (thread-safe) o o (callbacks) o select() o CTCP o CTCP PING << >> (spoof check) IRC o DCC DCC DCC o DCC o DCC o C ( ) o IRC o LGPLv3 o POSIX Mac OS X o x86 o IPv6 ( ) o OpenSSL ( ) o Cocoa Nathan Ollerenshaw o (FAQ) (Known issues) IRC . : o irc_run() . irc_add_select_descriptors() o irc_process_select_descriptors() o poll/epoll() select() . FAQ . o SSL SSL . (Author) George Yunaev -. : http://www.ulduzsoft.com/linux/libircclient (License) Libircclient Lesser General Public License . . (INTEGRATION) (Integration) (Requirements) (Supported operating systems and compilers) x86 x86_64 . x86 ARM MIPS (Mac OS X) x86 . (Compilation) FreeBSD Mac OS X . . . Cygwin . (Required libraries) libc ( glibc-devel ) gcc libstdc++ ( libstdc++-devel) g++ . glibc . IPv6 . glibc . SSL openssl ( openssl-devel) . Cygwin ( openssl-devel) . (Compiling) : ./configure [--enable-openssl] [--enable-ipv6] make (Installing) sudo make install . (Linking) libircclient.a libircclient.so . libircclient.so . SSL OpenSSL -lcrypto -lssl LDFLAGS . libircclient.lib libircclient.dll . (Coding) (Initialization) (Include the headers) libircclient.h . libirc_rfcnumeric.h RFC : #include "libircclient.h" #include "libirc_rfcnumeric.h" (Create event handlers) HTTP SMTP IRC . . ( ) IRC ( ) IRC ( NickServ). Libircclient . (callback) . . : event_connect event_numeric. (dump) . dump_event examples/irctest.c . (Windows-specific initialization) (static) Winsock2 . : WSADATA wsaData; if ( WSAStartup ( MAKEWORD (2, 2), &wsaData) != 0 ) // (dynamic) ( libircclient.dll) DLL . IRC (Create an IRC session) IRC (IRC session) . IRC . . irc_create_session() : // IRC irc_callbacks_t callbacks; // memset ( &callbacks, 0, sizeof(callbacks) ); // callbacks.event_connect = event_connect; callbacks.event_numeric = event_numeric; // // irc_session_t * session = irc_create_session( &callbacks ); if ( !session ) // . . (Set options) . LIBIRC_OPTION_STRIPNICKS : irc_option_set( session, LIBIRC_OPTION_STRIPNICKS ); SSL (self- signed) LIBIRC_OPTION_SSL_NO_VERIFY . (Connect to the server) IRC irc_connect() : // IRC if ( irc_connect (session, "irc.example.com", 6667, 0, "mynick", "myusername", "myrealname" ) ) // : ()irc_strerror ()irc_errno IRC SSL irc_connect() IP (#) : // SSL 192.168.1.1# if ( irc_connect (session, "#irc.example.com", 6669, 0, "mynick", "myusername", "myrealname" ) ) // : ()irc_strerror ()irc_errno . : o event_connect - o IPv6 (Connect to the IPv6 server) IPv6 irc_connect6() : if ( irc_connect6 (session, "2001:0db8:85a3:0042:1000:8a2e:0370:7334", 6669, 0, "mynick", "myusername", "myrealname" ) ) // : ()irc_strerror ()irc_errno SSL . (Start the networking loop) . . . (GUI) ( ). IRC . . irc_run() : if ( irc_run (s) ) // . ()irc_errno ()irc_run . (Use the custom networking loop) . select() ( (FAQ) ). : // IRC if ( !irc_is_connected(session) ) // // ()select struct timeval tv; fd_set in_set, out_set; int maxfd = 0; // . - // // tv.tv_usec = 250000; tv.tv_sec = 0; // FD_ZERO (&in_set); FD_ZERO (&out_set); // ... // IRC - ()irc_add_select_descriptors irc_add_select_descriptors( session, &in_set, &out_set, &maxfd ); // ()select if ( select (maxfd + 1, &in_set, &out_set, 0, &tv) < 0 ) // // // // ()irc_process_select_descriptors ... // ()irc_process_select_descriptors if ( irc_process_select_descriptors (session, &in_set, &out_set) ) // . . // (Channels and users) . (Join and leave a channel) irc_cmd_join() : // #linux if ( irc_cmd_join( session, "#linux", 0 ) ) // // science$ *superpassword* if ( irc_cmd_join( session, "$science", "superpassword" ) ) // . event_join . ( ) . JOIN . event_numeric . irc_cmd_part() : // #linux if ( irc_cmd_part( session, "#linux" ) ) // // science$ if ( irc_cmd_part( session, "$science" ) ) // (Send a message to a channel or to a user) irc_cmd_msg() : // "!Hi" #linux if ( irc_cmd_msg( session, "#linux", "Hi!" ) ) // . . <<>> . <<>> IRC ( ) IRC . // "!Hi" john IRC if ( irc_cmd_msg( session, "john", "Hi!" ) ) // . event_numeric . (Receive messages from a channel or from a user) event_channel . . <<>> event_privmsg . IRC . (Send an action message) <<>> (Action) me/ CTCP . irc_cmd_me() . event_ctcp_action . . CTCP (Send a CTCP request) CTCP PING VERSION irc_cmd_ctcp_request() . CTCP event_ctcp_rep . DCC (Handling DCC chat) DCC (Implementing the DCC callback) DCC DCC : void dcc_callback (irc_session_t * session, irc_dcc_t id, int status, void * ctx, const char * data, unsigned int length) { if ( status ) { // LIBIRC_ERR_CLOSED . // . ()irc_strerror } else if ( length == 0 ) { // irc_dcc_text( session, id, "Hello!" ); } else { // printf ("Remote party said: %s\n", data ); } } irc_dcc_chat() irc_dcc_accept() DCC CHAT . DCC (Initiating the DCC CHAT) DCC irc_dcc_chat() : // DCC irc_dcc_t dccid; // DCC john IRC if ( irc_dcc_chat( session, 0, "john", dcc_callback, &dccid ) ) // . dcc_callback() irc_dcc_text() . . DCC (Responding to DCC CHAT requests) DCC CHAT event_dcc_chat_req . : void callback_event_dcc_chat( irc_session_t * session, const char * nick, const char * addr, irc_dcc_t dccid ) { // 'nick' IP 'addr' DCC . // dccid dcc_queue.store( dccid, "CHAT from " + nick + " IP address: " + addr ); } IRC . DCC irc_dcc_decline() . . . . GUI . irc_dcc_accept() irc_dcc_decline() . dccid : // GUI if ( !dcc_queue.empty() ) { // DCC irc_dcc_t dccid = dcc_chat_queue.top().dccid; ... // if ( dialog.isAccepted() ) irc_dcc_accept( session, dccid, 0, dcc_callback ); else irc_dcc_decline( session, dccid ); } DCC (Send CHAT messages) irc_dcc_text() . dcc : irc_dcc_text( session, dccid, "Hello there!" ); DCC (Handling DCC file transfer) DCC . (Implementing the callback) dcc DCC . . : // void callback_dcc_send_file (irc_session_t * session, irc_dcc_t id, int status, void * ctx, const char * data, unsigned int length) { if ( status ) { // . status ()irc_strerror } else { // 'length' printf ("Sent bytes: %d\n", length ); } } // void callback_dcc_recv_file (irc_session_t * session, irc_dcc_t id, int status, void * ctx, const char * data, unsigned int length) { if ( status ) { // . status ()irc_strerror } else if ( data == 0 ) { // printf ("File has been received successfully\n" ); } else { // . printf ("Received %d bytes of data\n", length ); } } irc_dcc_sendfile() irc_dcc_accept() DCC RECVFILE . DCC (Sending the file via DCC) DCC irc_dcc_sendfile() : // DCC irc_dcc_t dccid; // "/etc/passwd" DCC "john" IRC if ( irc_dcc_sendfile( session, 0, "john", "/etc/passwd", callback_dcc_send_file, &dccid ) ) // . callback_dcc_send_file() . . DCC (Receive a file via DCC) DCC DCC . event_dcc_send_req . : void callback_event_dcc_file( irc_session_t * session, const char * nick, const char * addr, const char * filename, unsigned long size, irc_dcc_t dccid ) { // 'nick' IP 'addr' DCC . // dccid dcc_queue.store( dccid, "CHAT from " + nick + " IP address: " + addr + ", filename " + filename ); } DCC irc_dcc_decline() . . . . GUI . irc_dcc_accept() irc_dcc_decline() . dccid : // GUI if ( !dcc_queue.empty() ) { // DCC irc_dcc_t dccid = dcc_chat_queue.top().dccid; ... // if ( dialog.isAccepted() ) irc_dcc_accept( session, dccid, 0, dcc_callback ); else irc_dcc_decline( session, dccid ); } . (Handling colors) (Stripping colors from the message) . . irc_color_strip_from_mirc() ANSI . . (Color conversion) ANSI IRC . . . irc_color_convert_from_mirc() ANSI irc_color_convert_to_mirc() ANSI . free() . (Miscellaneous) (Tracking user nicks) . . event_nick . examples/censor.c . (API REFERENCE) (Callbacks) () . irc_event_callback_t (Prototype): typedef void (*irc_event_callback_t) (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) (Parameters): +--------+-----------------------------------+ |session | IRC | | | | | | | | | | +--------+-----------------------------------+ |event | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | +--------+-----------------------------------+ |origin | | | | | | | . | | | | | | | | | . | +--------+-----------------------------------+ |params | | | | | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | | NULL . | | | | | | | | | NULL | | | | | | | | | params | | | | | | | | | NULL | | | . | +--------+-----------------------------------+ |count | | | | | | | | | | | | | params. | +--------+-----------------------------------+ (Description): IRC . IRC . . irc_callbacks_t . ( ). origin NULL . nick!host@ircserver tim!home@irc.server.net. IRC ( ). irc_target_get_nick() LIBIRC_OPTION_STRIPNICKS irc_option_set() . irc_event_dcc_chat_t (Prototype): typedef void (*irc_event_dcc_chat_t) (irc_session_t * session, const char * nick, const char * addr, irc_dcc_t dccid) (Parameters): +--------+--------------------------------------+ |session | IRC | | | | | | | | | ( | | | irc_create_session | | | | | | ) | +--------+--------------------------------------+ |nick | | | | | | | | | | | +--------+--------------------------------------+ |addr | IP | | | 189.12.34.56 | +--------+--------------------------------------+ |dccid | | | | | | | | | | | | | irc_dcc_accept() | | | irc_dcc_decline() | | | | +--------+--------------------------------------+ (Description): DCC CHAT . DCC IRC . TCP IP (port forwarding) . irc_dcc_accept() irc_dcc_decline() . irc_event_dcc_send_t (Prototype): typedef void (*irc_event_dcc_send_t) (irc_session_t * session, const char * nick, const char * addr, const char * filename, unsigned long size, irc_dcc_t dccid) (Parameters): +---------+--------------------------------------+ |session | IRC | | | | | | | | | ( | | | irc_create_session | | | | | | ) | +---------+--------------------------------------+ |nick | | | | | | | | | | | +---------+--------------------------------------+ |addr | IP | | | 189.12.34.56 | +---------+--------------------------------------+ |filename | | | | | | | | | | | +---------+--------------------------------------+ |size | | +---------+--------------------------------------+ |dccid | | | | | | | | | | | | | irc_dcc_accept() | | | irc_dcc_decline() | | | | +---------+--------------------------------------+ (Description): DCC SEND . DCC SEND TCP . IP . irc_dcc_accept() irc_dcc_decline() . irc_dcc_callback_t (Prototype): typedef void (*irc_dcc_callback_t) (irc_session_t * session, irc_dcc_t id, int status, void * ctx, const char * data, unsigned int length) (Parameters): +--------+--------------------------------+ |session | IRC | | | | | | | | | | | | ( | | | | | | irc_create_session | | | | | | ) | +--------+--------------------------------+ |id | | | | DCC | +--------+--------------------------------+ |status | | | | DCC. | | | | | | | | | | | | | | | | | | | | | | +--------+--------------------------------+ |ctx | | | | | | | | +--------+--------------------------------+ |data | | | | | | | ( | | | ) | | | | | | NULL | +--------+--------------------------------+ |length | | | | | | | | | | | | | | +--------+--------------------------------+ (Description): DCC . DCC CHAT : o status LIBIRC_ERR_CLOSED : . DCC . o status LIBIRC_ERR_CLOSED : I/O ( ). DCC . o status length : . o status length : data ( null) length null . DCC SEND : o status : I/O ( ). DCC . o status : length data NULL . DCC RECV : o status : I/O ( ). DCC . o status data NULL : . DCC . o status data NULL : data length . irc_eventcode_callback_t (Prototype): typedef void (*irc_eventcode_callback_t) (irc_session_t * session, unsigned int event, const char * origin, const char ** params, unsigned int count) (Parameters): +--------+-----------------------------------+ |session | IRC | | | | | | | | | | | | ( | | | irc_create_session | | | | | | ) | +--------+-----------------------------------+ |event | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | +--------+-----------------------------------+ |origin | | | | | | | . | | | | | | | | | . | +--------+-----------------------------------+ |params | | | | | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | | NULL . | | | | | | | | | NULL | | | | | | | | | params | | | | | | | | | NULL | | | . | +--------+-----------------------------------+ |count | | | | | | | | | | | | | params. | +--------+-----------------------------------+ (Description): . IRC . . RFC 1459 ( ). ( ). origin NULL . nick!host@ircserver tim!home@irc.server.net. IRC ( ). irc_target_get_nick() LIBIRC_OPTION_STRIPNICKS irc_option_set() . (Functions) . (Library initialization and shutdown) irc_create_session (Prototype): irc_session_t *irc_create_session(irc_callbacks_t *callbacks) (Parameters): +-------------------------------------+ |callbacks | | | | | | | | | | | | | | | | | | | | |. | | NULL | |. | +-------------------------------------+ (Description): IRC . IRC DCC. . . irc_destroy_session() . (Return value): irc_session_t 0 . . (Thread safety): . . irc_destroy_session (Prototype): void irc_destroy_session(irc_session_t *session) (Parameters): +--------------------------------+ |session | | | IRC | +--------------------------------+ (Description): IRC IRC . . (Thread safety): . (Connecting, disconnecting and running the main event loop) irc_connect6 (Prototype): int irc_connect6(irc_session_t *session, const char *server, unsigned short port, const char *password, const char *nick, const char *username, const char *realname) irc_connect (Prototype): int irc_connect(irc_session_t *session, const char *server, unsigned short port, const char *password, const char *nick, const char *username, const char *realname) (Parameters): +---------+--------------------------------------+ |session | | | | IRC | +---------+--------------------------------------+ |server | IP | | | . | | | # | | | | | | | | | | | | SSL | | | . | | | IPv4 | | | | | | 154.23.112.33 | | | IPv6 | | | | | | | | | IPv6 | +---------+--------------------------------------+ |port | | | | | | | 6667 | +---------+--------------------------------------+ |password | | | | IRC | | | | | | | | | . | | | NULL | | | | | | | | | | | | IRC | | | | | | . | | | | | | IRC | | | | | | | | | . | | | | | | | | | NickServ/ChanServ | +---------+--------------------------------------+ |nick | | | | | | | IRC | | | | | | . | | | NULL | | | | +---------+--------------------------------------+ |username | | | | | | | | | | | | | IRC | | | | | | . | | | | | | | | | | | | | | | | | | | | | << | | | >> | | | | | | whois/ | | | | | | . | | | NULL | | | | | | | | | "nobody" | | | | +---------+--------------------------------------+ |realname | | | | IRC | | | . | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | | | | | << | | | >> | | | | | | whois/ | | | | | | . | | | NULL | | | | | | "noname" | | | | | | | +---------+--------------------------------------+ (Description): IRC IPv4 ( irc_connect) IPv6 ( irc_connect6) . IP DNS . irc_connect6 IPv6 . OpenSSL IP ( "#irc.example.com") SSL . event_connect . IRC IRC . (Return value): 0 . event_connect . irc_run() irc_process_select_descriptors() . (Thread safety): . irc_disconnect (Prototype): void irc_disconnect(irc_session_t *session) (Parameters): +--------------------------------+ |session | | | | | IRC | +--------------------------------+ (Description): IRC . libirc irc_run() irc_run() . (Thread safety): . irc_is_connected (Prototype): int irc_is_connected(irc_session_t *session) (Parameters): +--------+-----------------------+ |session | | | | IRC | +--------+-----------------------+ (Return value): IRC 1 0 . (Thread safety): . irc_run (Prototype): int irc_run(irc_session_t *session) (Parameters): +--------+-----------------------+ |session | | | | IRC | +--------+-----------------------+ (Description): IRC . ( irc_cmd_quit) . IRC ( ). event_connect . . (Return value): IRC . (Thread safety): . irc_add_select_descriptors() irc_process_select_descriptors() . irc_add_select_descriptors (Prototype): int irc_add_select_descriptors(irc_session_t *session, fd_set *in_set, fd_set *out_set, int *maxfd) (Parameters): +--------+-----------------------------------------------+ |session | IRC | +--------+-----------------------------------------------+ |in_set | | | | | | | fd_set ()select | +--------+-----------------------------------------------+ |out_set | | | | | | | fd_set ()select | +--------+-----------------------------------------------+ |maxfd | | | | | | | | | | . | | | libirc | | | | | | FD_SET | | | | | | | | | | +--------+-----------------------------------------------+ (Description): irc_connect() . select . () ()select . irc_process_select_descriptors() (!). . . epoll (FAQ) . (Return value): irc_connect() . (Thread safety): . irc_process_select_descriptors (Prototype): int irc_process_select_descriptors(irc_session_t *session, fd_set *in_set, fd_set *out_set) (Parameters): +--------+-----------------------------------------------+ |session | IRC | +--------+-----------------------------------------------+ |in_set | | | | | | | fd_set ()select | +--------+-----------------------------------------------+ |out_set | | | | | | | fd_set ()select | +--------+-----------------------------------------------+ (Description): irc_add_select_descriptors() . . ( DCC CHAT DCC SEND) . (Return value): 0 . ()irc_errno . (Thread safety): IRC . IRC: (Managing the IRC channels: joining, leaving, inviting) irc_cmd_join (Prototype): int irc_cmd_join(irc_session_t *session, const char *channel, const char *key) (Parameters): +--------+-----------------------------+ |session | | | | IRC | +--------+-----------------------------+ |channel | | | | . | | | | | | NULL . | +--------+-----------------------------+ |key | | | | () | | | . | | | | | | | | | | | | NULL | +--------+-----------------------------+ (Description): IRC . IRC . key . event_join ( ) event_topic ( LIBIRC_RFC_RPL_NAMREPLY) . (Return value): 0 IRC . event_numeric . RFC 1459: o LIBIRC_RFC_ERR_BANNEDFROMCHAN o LIBIRC_RFC_ERR_INVITEONLYCHAN o LIBIRC_RFC_ERR_BADCHANNELKEY o LIBIRC_RFC_ERR_CHANNELISFULL o LIBIRC_RFC_ERR_BADCHANMASK o LIBIRC_RFC_ERR_NOSUCHCHANNEL o LIBIRC_RFC_ERR_TOOMANYCHANNELS (Thread safety): . irc_cmd_part (Prototype): int irc_cmd_part(irc_session_t *session, const char *channel) (Parameters): +--------+-----------------------------+ |session | | | | IRC | +--------+-----------------------------+ |channel | | | | . | | | | | | NULL . | +--------+-----------------------------+ (Description): IRC . LIBIRC_RFC_ERR_NOTONCHANNEL . (Return value): 0 IRC . event_numeric . RFC 1459: o LIBIRC_RFC_ERR_NOSUCHCHANNEL o LIBIRC_RFC_ERR_NOTONCHANNEL (Thread safety): . irc_cmd_invite (Prototype): int irc_cmd_invite(irc_session_t *session, const char *nick, const char *channel) (Parameters): +--------+-----------------------------+ |session | | | | IRC | +--------+-----------------------------+ |nick | | | | | | | | | | | | | | +--------+-----------------------------+ |channel | | | | . | | | | | | NULL | +--------+-----------------------------+ (Description): <<>> . <<>> (Invite-only) . . event_invite . . (Return value): 0 . event_numeric . : o LIBIRC_RFC_RPL_INVITING o LIBIRC_RFC_RPL_AWAY RFC 1459: o LIBIRC_RFC_ERR_NEEDMOREPARAMS o LIBIRC_RFC_ERR_NOSUCHNICK o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_ERR_USERONCHANNEL o LIBIRC_RFC_ERR_ERR_CHANOPRIVSNEEDED (Thread safety): . irc_cmd_names (Prototype): int irc_cmd_names(irc_session_t *session, const char *channel); (Parameters): +--------+-------------------------+ |session | | | | IRC | +--------+-------------------------+ |channel | | | | () | | | | | | | | | | | | . | | | | | | | | | | | | | | | | +--------+-------------------------+ (Description): IRC . . LIBIRC_RFC_RPL_NAMREPLY LIBIRC_RFC_RPL_ENDOFNAMES . (Return value): 0 . . event_numeric : o LIBIRC_RFC_RPL_NAMREPLY o LIBIRC_RFC_RPL_ENDOFNAMES (Thread safety): . irc_cmd_list (Prototype): int irc_cmd_list(irc_session_t *session, const char *channel) (Parameters): +--------+--------------------------+ |session | | | | IRC | +--------+--------------------------+ |channel | | | | () | | | | | | | | | . | | | | | | | | | | | | | | | . | | | NULL | | | | | | | | | | | | | +--------+--------------------------+ (Description): () IRC . LIBIRC_RFC_RPL_LISTSTART LIBIRC_RFC_RPL_LIST LIBIRC_RFC_RPL_LISTEND . <<>> ( ) "Prv" . . (Return value): 0 IRC . event_numeric : o LIBIRC_RFC_RPL_LISTSTART o LIBIRC_RFC_RPL_LISTEND o LIBIRC_RFC_RPL_LIST (Thread safety): . irc_cmd_topic (Prototype): int irc_cmd_topic(irc_session_t *session, const char *channel, const char *topic) (Parameters): +--------+--------------------------------+ |session | | | | IRC | +--------+--------------------------------+ |channel | | +--------+--------------------------------+ |topic | | | | . | | | NULL | | | | | | | | | | | | | | | | | | . | | | | | | | | | "" | | | | | | | +--------+--------------------------------+ (Description): () . t+ . IRC LIBIRC_RFC_RPL_NOTOPIC LIBIRC_RFC_RPL_TOPIC . IRC ( ) RFC LIBIRC_RFC_RPL_TOPIC_EXTRA . (Return value): 0 . : o LIBIRC_RFC_RPL_NOTOPIC o LIBIRC_RFC_RPL_TOPIC event_topic . RFC 1459: o LIBIRC_RFC_ERR_NEEDMOREPARAMS o LIBIRC_RFC_ERR_CHANOPRIVSNEEDED o LIBIRC_RFC_ERR_NOTONCHANNEL (Thread safety): . irc_cmd_channel_mode (Prototype): int irc_cmd_channel_mode(irc_session_t *session, const char *channel, const char *mode) (Parameters): +--------+--------------------------------+ |session | | | | IRC | +--------+--------------------------------+ |channel | | +--------+--------------------------------+ |mode | | | | | | | . NULL | | | | | | | | | | | | | | | | | | | | | | | | | +--------+--------------------------------+ (Description): . . . . ( ) . . <<>> : +-----------+------------------------------------+ |o nickname | | | | | | | | | | | | | (+o | | | nickname) | | | (-o nickname). | | | | | | | | | | | | | | | . | | | : "tim o+" | | | "watson o-" | +-----------+------------------------------------+ |p | (+p) | | | (-p) | | | | | | . | | | | | | | | | | | | | | | 'Prv' | | | | | | | | | | +-----------+------------------------------------+ |s | (+s) | | | (-s) | | | | | | . | | | | | | | | | | | | | | | | | | | +-----------+------------------------------------+ |i | (+i) | | | (-i) | | | | | | . | | | | | | | | | | | | | | | | | | irc_cmd_invite() | | | | | | | | | | | | | +-----------+------------------------------------+ |t | (+t) | | | (-t) | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------+------------------------------------+ |n | (+n) | | | (-n) | | | | | | | | | | | | | | | . | | | | | | n+ | | | | | | | | | | | | | | | | | | | | | | +-----------+------------------------------------+ |m | (+m) | | | (-m) | | | | | | (moderation) | | | . | | | | | | | | | | | | | | | v+ | | | | | | | | | | | | | +-----------+------------------------------------+ |v nickname | (+v nick) | | | (-v nick) | | | | | | | | | | | | . | | | : "bob v+" | | | "joy v-" | +-----------+------------------------------------+ |l number | (+l 20) | | | (-l) | | | | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------+------------------------------------+ |k key | (+k password) | | | (-k) | | | | | | . | | | | | | | | | | | | | | | | | | | | | | +-----------+------------------------------------+ |b mask | (+b !*@.mil) | | | (-b !*@.mil) | | | | | | (ban) | | | | | | | | | | | | . | | | | | | | | | | | | | | | "b-" | +-----------+------------------------------------+ IRC . (Return value): 0 IRC . : o LIBIRC_RFC_RPL_CHANNELMODEIS o LIBIRC_RFC_RPL_BANLIST o LIBIRC_RFC_RPL_ENDOFBANLIST RFC 1459: o LIBIRC_RFC_ERR_NEEDMOREPARAMS o LIBIRC_RFC_ERR_CHANOPRIVSNEEDED o LIBIRC_RFC_ERR_NOSUCHNICK o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_KEYSET o LIBIRC_RFC_ERR_UNKNOWNMODE o LIBIRC_RFC_ERR_NOSUCHCHANNEL (Thread safety): . irc_cmd_user_mode (Prototype): int irc_cmd_user_mode(irc_session_t *session, const char *mode) (Parameters): +--------+--------------------------------+ |session | | | | IRC | +--------+--------------------------------+ |mode | | | | | | | . NULL | | | | | | | | | | | | | | | | | | | | | | | | | +--------+--------------------------------+ (Description): . . . ( ) . <<>> : +--+--------------------------------------+ |o | | | | | | | IRC . | | | | | | | | | ( | | | | | | | | | ) | | | | | | OPER | | | IRC | | | | +--+--------------------------------------+ |i | | | | | | | | | | <<>> (invisible) | | | | | | - | | | | | | | | | | | | | | | | | | | +--+--------------------------------------+ |w | | | | | | | | | | | | | wallops | | | | | | - | | | | | | | | | | | | IRC | | | | | | WALLOPS | | | | | | | +--+--------------------------------------+ |s | | | | | | | | | | | | | | | | | | | | | | | +--+--------------------------------------+ |r | | | | . | | | | | | | | | NickServ IRC | | | | | | | +--+--------------------------------------+ |x | | | | . | | | | | | IP | | | | | | IRC | | | () | +--+--------------------------------------+ IRC . (Return value): 0 IRC . LIBIRC_RFC_RPL_UMODEIS : RFC 1459: o LIBIRC_RFC_ERR_NEEDMOREPARAMS o LIBIRC_RFC_ERR_NOSUCHNICK o LIBIRC_RFC_ERR_UNKNOWNMODE o LIBIRC_RFC_ERR_USERSDONTMATCH o LIBIRC_RFC_ERR_UMODEUNKNOWNFLAG (Thread safety): . irc_cmd_kick (Prototype): int irc_cmd_kick(irc_session_t *session, const char *nick, const char *channel, const char *reason); (Parameters): +--------+----------------------------+ |session | | | | IRC | +--------+----------------------------+ |nick | | | | | | | | | | | +--------+----------------------------+ |channel | | | | | | | | | | | +--------+----------------------------+ |reason | NULL | | | | | | | | | | | | | +--------+----------------------------+ (Description): . . (Return value): 0 . event_kick . event_numeric : o LIBIRC_RFC_ERR_NEEDMOREPARAMS o LIBIRC_RFC_ERR_BADCHANMASK o LIBIRC_RFC_ERR_NOSUCHCHANNEL o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_CHANOPRIVSNEEDED (Thread safety): . /me CTCP (Sending the messages, notices, /me messages and working with CTCP) irc_cmd_msg (Prototype): int irc_cmd_msg(irc_session_t *session, const char *nch, const char *text) (Parameters): +--------+------------------------+ |session | | | | IRC | +--------+------------------------+ |nch | | | | | | | | | | | | | | +--------+------------------------+ |text | | +--------+------------------------+ (Description): . <<>> IRC IRC . nch : . . (Return value): 0 IRC . . event_numeric . LIBIRC_RFC_RPL_AWAY . : o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . irc_cmd_me (Prototype): int irc_cmd_me(irc_session_t *session, const char *nch, const char *text) (Parameters): +--------+------------------------+ |session | | | | IRC | +--------+------------------------+ |nch | | | | | | | | | | | | | | +--------+------------------------+ |text | | +--------+------------------------+ (Description): me/ ( CTCP CTCP ACTION) . <<>> IRC IRC . nch : . . (Return value): 0 . LIBIRC_RFC_RPL_AWAY . : o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . irc_cmd_notice (Prototype): int irc_cmd_notice(irc_session_t *session, const char *nch, const char *text) (Parameters): +--------+------------------------+ |session | | | | IRC | +--------+------------------------+ |nch | | | | | | | | | | | | | | +--------+------------------------+ |text | | +--------+------------------------+ (Description): (notice) . nch . RFC NOTICE . (Return value): 0 . LIBIRC_RFC_RPL_AWAY. : o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . irc_cmd_ctcp_request (Prototype): int irc_cmd_ctcp_request(irc_session_t *session, const char *nick, const char *request) (Parameters): +--------+----------------------------+ |session | | | | IRC | +--------+----------------------------+ |nick | | | | | | | | +--------+----------------------------+ |request | | | | CTCP | +--------+----------------------------+ (Description): CTCP . CTCP IRC : o VERSION - o FINGER - o PING - o TIME - . RFC CTCP . CTCP event_ctcp_rep . (Return value): 0 . RFC 1459: o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . irc_cmd_ctcp_reply (Prototype): int irc_cmd_ctcp_reply(irc_session_t *session, const char *nick, const char *reply) (Parameters): +--------+------------------------+ |session | | | | IRC | +--------+------------------------+ |nick | | | | | | | | +--------+------------------------+ |reply | | | | CTCP | +--------+------------------------+ (Description): CTCP event_ctcp_req . IRC . (Return value): 0 . RFC 1459: o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . : (Miscellaneous: library version, raw data, changing nick, quitting) irc_cmd_nick (Prototype): int irc_cmd_nick(irc_session_t *session, const char *newnick) (Parameters): +--------+-----------------------+ |session | | | | IRC | +--------+-----------------------+ |nick | | | | | | | | +--------+-----------------------+ (Description): . ( ) . (Return value): 0 IRC . event_nick . . RFC 1459: o LIBIRC_RFC_ERR_NONICKNAMEGIVEN o LIBIRC_RFC_ERR_ERRONEUSNICKNAME o LIBIRC_RFC_ERR_NICKNAMEINUSE o LIBIRC_RFC_ERR_NICKCOLLISION (Thread safety): . irc_cmd_whois (Prototype): int irc_cmd_whois(irc_session_t *session, const char *nick) (Parameters): +--------+---------------------------+ |session | | | | IRC | +--------+---------------------------+ |nick | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +--------+---------------------------+ (Description): . IRC ( ) IRC (away) . (Return value): 0 IRC . : o LIBIRC_RFC_RPL_WHOISUSER o LIBIRC_RFC_RPL_WHOISCHANNELS o LIBIRC_RFC_RPL_WHOISSERVER o LIBIRC_RFC_RPL_AWAY o LIBIRC_RFC_RPL_WHOISOPERATOR o LIBIRC_RFC_RPL_WHOISIDLE o LIBIRC_RFC_RPL_ENDOFWHOIS - WHOIS RFC 1459: o LIBIRC_RFC_ERR_NOSUCHSERVER o LIBIRC_RFC_ERR_NOSUCHNICK o LIBIRC_RFC_ERR_NONICKNAMEGIVEN (Thread safety): . irc_cmd_quit (Prototype): int irc_cmd_quit(irc_session_t *session, const char *reason) (Parameters): +--------+---------------------------+ |session | | | | IRC | +--------+---------------------------+ |reason | | | | NULL | | | | | | | +--------+---------------------------+ (Description): QUIT IRC . IRC IRC . irc_disconnect . IRC . (Return value): 0 IRC . (Thread safety): . irc_send_raw (Prototype): int irc_send_raw(irc_session_t *session, const char *format, ...); (Parameters): +--------+-----------------------------------+ |session | | | | IRC | +--------+-----------------------------------+ |format | | | | | | | printf | | | | | | | | | | +--------+-----------------------------------+ (Description): IRC . libircclient . (Return value): 0 . (Thread safety): . irc_target_get_nick (Prototype): void irc_target_get_nick(const char *origin, char *nick, size_t size) (Parameters): +-------+-----------------------------+ |origin | | | | | | | | | | IRC | | | | | | tim!root@mycomain.com | +-------+-----------------------------+ |nick | | | | | | | | | | | | | | +-------+-----------------------------+ |size | | | | nick. | | | | | | | | | | | | | | | | | | | | | | | | (truncate) | | | | +-------+-----------------------------+ (Description): IRC 'origin' ( ) <<>> nick!host@domain. _irc_cmd . . 128 . (Thread safety): . irc_target_get_host (Prototype): void irc_target_get_host(const char *target, char *host, size_t size) (Parameters): +-------+-----------------------------+ |origin | | | | | | | | | | IRC | | | | | | tim!root@mycomain.com | +-------+-----------------------------+ |host | | | | | | | | | | | | | | +-------+-----------------------------+ |size | | | | host. | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------+-----------------------------+ (Description): IRC 'origin' nick!host@domain . (host) . (Thread safety): . DCC (DCC initiating and accepting chat sessions, sending and receiving files) irc_dcc_chat (Prototype): int irc_dcc_chat(irc_session_t *session, void *ctx, const char *nick, irc_dcc_callback_t callback, irc_dcc_t *dccid) (Parameters): +---------+-----------------------------+ |session | | | | IRC | +---------+-----------------------------+ |ctx | | | | | | | | | | | | | | | | | | | . | | | | | | NULL | +---------+-----------------------------+ |nick | | | | | | | | +---------+-----------------------------+ |callback | DCC | | | | | | | | | DCC | | | | | | | +---------+-----------------------------+ |dccid | | | | | | | | | | | | | DCC | | | | | | | | | | +---------+-----------------------------+ (Description): DCC CHAT IRC . DCC IRC . DCC CHAT . callback . : o o o o irc_dcc_callback_t . (Return value): 0 IRC . event_numeric . RFC 1459: o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . irc_dcc_msg (Prototype): int irc_dcc_msg(irc_session_t *session, irc_dcc_t dccid, const char *text) (Parameters): +--------+-----------------------------------+ |session | | | | IRC | +--------+-----------------------------------+ |dccid | DCC | | | | | | DCC | | | | +--------+-----------------------------------+ |text | | | | | | | NULL | | | | +--------+-----------------------------------+ (Description): DCC CHAT DCC . DCC CHAT . (Return value): 0 . ()irc_errno . (Thread safety): . irc_dcc_accept (Prototype): int irc_dcc_accept(irc_session_t *session, irc_dcc_t dccid, void *ctx, irc_dcc_callback_t callback) (Parameters): +---------+--------------------------------------------+ |session | IRC | +---------+--------------------------------------------+ |dccid | DCC | | | | | | | +---------+--------------------------------------------+ |ctx | | | | | | | | | | . | | | NULL | +---------+--------------------------------------------+ |callback | DCC | | | DCC | | | | | | | +---------+--------------------------------------------+ (Description): DCC . callback DCC DCC . DCC . event_dcc_chat_req event_dcc_send_req . ()irc_dcc_accept ()irc_dcc_decline - dccid . DCC . (Return value): 0 . irc_errno() . (Thread safety): . irc_dcc_decline (Prototype): int irc_dcc_decline(irc_session_t *session, irc_dcc_t dccid) (Parameters): +--------+--------------------------------------------+ |session | IRC | +--------+--------------------------------------------+ |dccid | DCC | | | | | | | +--------+--------------------------------------------+ (Description): DCC . event_dcc_chat_req event_dcc_send_req . . DCC . irc_dcc_destroy() . (Return value): 0 . irc_errno() . (Thread safety): . irc_dcc_sendfile (Prototype): int irc_dcc_sendfile(irc_session_t *session, void *ctx, const char *nick, const char *filename, irc_dcc_callback_t callback, irc_dcc_t *dccid) (Parameters): +---------+-----------------------------+ |session | | | | IRC | +---------+-----------------------------+ |ctx | | | | | | | | | | | | | | | | | | | . | | | | | | NULL | +---------+-----------------------------+ |nick | | | | | | | | +---------+-----------------------------+ |filename | | | | | | | | | | . | | | | | | | | | | | | | +---------+-----------------------------+ |callback | DCC | | | | | | | | | DCC | | | | | | | +---------+-----------------------------+ |dccid | | | | | | | | | | | | | DCC | | | | | | | | | | +---------+-----------------------------+ (Description): DCC SEND . DCC . . DCC . (Return value): 0 . RFC 1459: o LIBIRC_RFC_ERR_NORECIPIENT o LIBIRC_RFC_ERR_NOTEXTTOSEND o LIBIRC_RFC_ERR_CANNOTSENDTOCHAN o LIBIRC_RFC_ERR_NOTONCHANNEL o LIBIRC_RFC_ERR_NOTOPLEVEL o LIBIRC_RFC_ERR_WILDTOPLEVEL o LIBIRC_RFC_ERR_TOOMANYTARGETS o LIBIRC_RFC_ERR_NOSUCHNICK (Thread safety): . irc_dcc_destroy (Prototype): int irc_dcc_destroy(irc_session_t *session, irc_dcc_t dccid) (Parameters): +--------+---------------------------+ |session | | | | IRC | +--------+---------------------------+ |dccid | | | | DCC | | | | | | | | | | | | | +--------+---------------------------+ (Description): DCC ( ) DCC . . DCC ( ) . (Return value): 0 . irc_errno() . (Thread safety): . (Handling the colored messages) irc_color_strip_from_mirc (Prototype): char *irc_color_strip_from_mirc(const char *message) (Parameters): +--------+---------------------------+ |message | | | | | +--------+---------------------------+ (Description): ANSI . . . (Return value): . ()malloc ()free . 0 . (Thread safety): . irc_color_convert_from_mirc (Prototype): char *irc_color_convert_from_mirc(const char *message) (Parameters): +--------+---------------------------+ |message | | | | | +--------+---------------------------+ (Description): libircclient . (Return value): ANSI . irc_color_convert_to_mirc . ()malloc ()free . 0 . (Thread safety): . irc_color_convert_to_mirc (Prototype): char *irc_color_convert_to_mirc(const char *message) (Parameters): +--------+---------------------------+ |message | | | | | +--------+---------------------------+ (Description): libircclient ANSI mIRC IRC . (Return value): 0 . ()malloc ()free . (Thread safety): . libircclient IRC . . : o [B] ... [/B] - (bold). [B] [/B] . o [I] ... [/I] - / (italic/reverse). [I] [/I] ( ). o [U] ... [/U] - (underline). [U] [/U] . o [COLOR=RED] ... [/COLOR] - . COLOR ( ). o [COLOR=RED/BLUE] ... [/COLOR] - . COLOR . : o WHITE o BLACK o DARKBLUE o DARKGREEN o RED o BROWN o PURPLE o OLIVE o YELLOW o GREEN o TEAL o CYAN o BLUE o MAGENTA o DARKGRAY o LIGHTGRAY : Hello, [B]Tim[/B]. [U]Arsenal[/U] got a [COLOR=RED]red card[/COLOR] The tree[U]s[/U] are [COLOR=GREEN/BLACK]green[/COLOR] (Changing the library options) irc_get_version (Prototype): void irc_get_version(unsigned int *high, unsigned int *low) (Parameters): +-----+---------------------------+ |high | | | | | | | (high) | | | | | | | +-----+---------------------------+ |low | | | | | | | (low) | | | | | | | +-----+---------------------------+ (Description): libircclient . . printf : printf ("Version: %d.%02d", high, low); (Thread safety): . irc_set_ctx (Prototype): void irc_set_ctx(irc_session_t *session, void *ctx) (Parameters): +--------+-----------------------------+ |session | | | | IRC | +--------+-----------------------------+ |ctx | | | | | | | | | | | +--------+-----------------------------+ (Description): IRC . libircclient . irc_get_ctx . libircclient . ctx irc_destroy_session() . (Thread safety): . irc_get_ctx (Prototype): void *irc_get_ctx(irc_session_t *session) (Parameters): +--------+-----------------------+ |session | | | | IRC | +--------+-----------------------+ (Description): IRC irc_set_ctx . (Return value): NULL . (Thread safety): . irc_option_set (Prototype): void irc_option_set(irc_session_t *session, unsigned int option) (Parameters): +--------+------------------------------------------+ |session | IRC | +--------+------------------------------------------+ |option | | | | Libirc | | | | +--------+------------------------------------------+ (Description): libircclient . . (Thread safety): . irc_option_reset (Prototype): void irc_option_reset(irc_session_t *session, unsigned int option) (Parameters): +--------+------------------------------------------+ |session | IRC | +--------+------------------------------------------+ |option | | | | Libirc | | | | +--------+------------------------------------------+ (Description): libircclient libircclient . . (Thread safety): . (Handling the errors) irc_errno (Prototype): int irc_errno(irc_session_t *session) (Parameters): +--------+-----------------------+ |session | | | | IRC | +--------+-----------------------+ (Description): IRC . libirc_errors.h . errno : o ()irc_errno o ()irc_errno 0 . o ()irc_errno libircclient . (Return value): . (Thread safety): . IRC . irc_strerror (Prototype): const char *irc_strerror(int ircerrno) (Parameters): +---------+--------------------------------------------+ |ircerrno | IRC | | | | | | irc_errno() | +---------+--------------------------------------------+ (Description): . (Return value): . (Thread safety): . (Types) . irc_session_t typedef struct irc_session_s irc_session_t IRC irc_create_session() . . . IRC IRC . irc_destroy_session() . irc_dcc_session_t typedef struct irc_dcc_session_s irc_dcc_session_t DCC libircclient . libircclient . irc_dcc_t typedef unsigned int irc_dcc_t DCC DCC . irc_callbacks_t typedef struct irc_callbacks_t typedef struct { irc_event_callback_t event_connect; irc_event_callback_t event_nick; irc_event_callback_t event_quit; irc_event_callback_t event_join; irc_event_callback_t event_part; irc_event_callback_t event_mode; irc_event_callback_t event_umode; irc_event_callback_t event_topic; irc_event_callback_t event_kick; irc_event_callback_t event_channel; irc_event_callback_t event_privmsg; irc_event_callback_t event_notice; irc_event_callback_t event_channel_notice; irc_event_callback_t event_invite; irc_event_callback_t event_ctcp_req; irc_event_callback_t event_ctcp_rep; irc_event_callback_t event_ctcp_action; irc_event_callback_t event_unknown; irc_eventcode_callback_t event_numeric; irc_event_dcc_chat_t event_dcc_chat_req; irc_event_dcc_send_t event_dcc_send_req; } . IRC . IRC . << >> << >> << IRC >> - . . NULL . event_connect IRC (MOTD) . . irc_event_callback_t : +-------+-----------------------------------------+ |origin | | | | NULL | +-------+-----------------------------------------+ |params | | | | NULL | +-------+-----------------------------------------+ event_nick NICK . ( ) () . . . irc_event_callback_t : +-------+----------------------------+ |origin | | | | | | | ( | | | | | | !) | +-------+----------------------------+ |params | params[0] | | | | | | | | | . | +-------+----------------------------+ event_quit QUIT . IRC . irc_event_callback_t : +-------+-----------------------------+ |origin | | | | | | | | +-------+-----------------------------+ |params | params[0] | | | | | | | | | | | | | | | | | | | +-------+-----------------------------+ event_join JOIN . () . . JOIN ( ). NickServ . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | | | ( | | | | | | !) | +-------+---------------------------+ |params | params[0] | | | | | | | +-------+---------------------------+ event_part PART . . . irc_event_callback_t : +-------+-----------------------------+ |origin | | | | | | | | | | ( | | | | | | !) | +-------+-----------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | | | | +-------+-----------------------------+ event_mode MODE . () . irc_event_callback_t : +-------+----------------------------+ |origin | | | | | | | | +-------+----------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | | | "t+" | | | "i-" | | | params[2] | | | | | | | | | | | | | | | | | | | | | ( | | | | | | | | | | | | o+) | +-------+----------------------------+ event_umode MODE . . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | | | "t+" | | | "i-" | +-------+---------------------------+ event_topic TOPIC . . irc_event_callback_t : +-------+----------------------------+ |origin | | | | | | | | +-------+----------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | +-------+----------------------------+ event_kick KICK . ( ) ( ) . . irc_event_callback_t : +-------+-----------------------------+ |origin | | | | | | | | | | ( | | | | | | ) | +-------+-----------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | | | | | | | | | params[2] | | | | | | | | | | | | | | | | +-------+-----------------------------+ event_channel PRIVMSG . ( ) . . . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | +-------+---------------------------+ event_privmsg PRIVMSG . . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | | | | | | | params[1] | | | | | | | | | | | | | | | | +-------+---------------------------+ event_notice NOTICE . PRIVMSG . RFC 1459 NOTICE PRIVMSG NOTICE . IRC - NICKSERV NOTICE . irc_event_callback_t : +-------+----------------------------+ |origin | | | | | | | | +-------+----------------------------+ |params | params[0] | | | | | | | | | | | | params[1] | | | | | | | | | | | | | +-------+----------------------------+ event_channel_notice NOTICE . PRIVMSG . RFC 1459 NOTICE . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | | | | params[1] | | | | | | | | | | | | | | | | +-------+---------------------------+ event_invite INVITE . i+ () . irc_event_callback_t : +-------+----------------------------+ |origin | | | | | | | | +-------+----------------------------+ |params | params[0] | | | | | | | | | | | | params[1] | | | | | | | | | | | | | +-------+----------------------------+ : irc_cmd_invite() event_ctcp_req CTCP . CTCP . mIRC PING FINGER VERSION TIME ACTION ACTION event_ctcp_action . libirc_event_ctcp_internal . CTCP PING IRC . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | CTCP | | | | +-------+---------------------------+ event_ctcp_rep CTCP . CTCP . irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | CTCP | | | | +-------+---------------------------+ event_ctcp_action CTCP ACTION . event_ctcp_req . IRC : :: [08:32:55] * Michael is having fun [08:32:55] * Bobby's getting jealous irc_event_callback_t : +-------+---------------------------+ |origin | | | | | | | | +-------+---------------------------+ |params | params[0] | | | | | | | | | ACTION | | | | +-------+---------------------------+ event_unknown . irc_event_callback_t : +-------+-----------------------------+ |origin | | | | | | | | +-------+-----------------------------+ |params | | | | | | | | | | | | | | +-------+-----------------------------+ event_numeric . RFC 1459 . . irc_eventcode_callback_t . . event_dcc_chat_req DCC CHAT . irc_event_dcc_chat_t . . event_dcc_send_req DCC SEND . irc_event_dcc_send_t . . (Constants) . (Errors) LIBIRC_ERR_OK (0): LIBIRC_ERR_INVAL (1): . NULL irc_cmd_join() . LIBIRC_ERR_RESOLV (2): irc_connect() IP . LIBIRC_ERR_SOCKET (3): . libircclient . : Win32 LIBIRC_ERR_SOCKET LIBIRC_ERR_CONNECT (4): IRC DCC . IRC . DCC DCC . LIBIRC_ERR_CLOSED (5): IRC IRC ( IRC ) DCC . . LIBIRC_ERR_NOMEM (6): : libircclient . ( IRC ) . . LIBIRC_ERR_ACCEPT (7): / DCC . libircclient . LIBIRC_ERR_NODCCSEND (9): irc_dcc_sendfile() . ( ) . : LIBIRC_ERR_OPENFILE LIBIRC_ERR_READ (10): DCC ( ) DCC . LIBIRC_ERR_WRITE (11): DCC ( ) DCC . LIBIRC_ERR_STATE (12): . irc_cmd_join() IRC event_connect . LIBIRC_ERR_TIMEOUT (13): DCC . DCC / DCC . . . LIBIRC_ERR_OPENFILE (14): irc_dcc_sendfile() . LIBIRC_ERR_TERMINATED (15): IRC . LIBIRC_ERR_NOIPV6 (16): IPv6 IPv6 . LIBIRC_ERR_SSL_NOT_SUPPORTED (17): SSL SSL . LIBIRC_ERR_SSL_INIT_FAILED (18): SSL . LIBIRC_ERR_CONNECT_SSL_FAILED (19): SSL . SSL SSL . LIBIRC_ERR_SSL_CERT_VERIFY_FAILED (20): . LIBIRC_OPTION_SSL_NO_VERIFY . (Options) LIBIRC_OPTION_DEBUG STDOUT . LIBIRC_OPTION_STRIPNICKS . nick!host@ircserver . IRC . . LIBIRC_OPTION_SSL_NO_VERIFY SSL . IRC . . irc_connect . (APPENDIX) (Frequently asked questions) Win32 LIBIRC_ERR_SOCKET Win32 Winsock API : WSADATA wsaData; if ( WSAStartup ( MAKEWORD (2, 2), &wsaData) != 0 ) // // libircclient libircclient Winsock . IRC IRC . : o IRC . ( ) . o IRC <<>> . IRC . o IRC . . o IRC IRC . o ( ) . ( ) . ( ) . . o ( ). ( ). JOIN - . o IRC . ( nickserv ). <<>> . IRC . irc_cmd_join irc_cmd_join() . IRC . _irc_cmd IRC . IRC . . NICKSERV <<>> . NICKSERV CHANSERV RFC . IRC IRC . Notice Nickserv : static void event_notice (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { char buf[256]; if ( !origin ) return; if ( strcasecmp (origin, "nickserv") ) return; if ( strstr (params[1], "This nick is not registered") == params[1] ) { sprintf (buf, "REGISTER %s NOMAIL", gCfg.irc_nickserv_password); irc_cmd_msg(session, "nickserv", buf); } else if ( strstr (params[1], "This nickname is registered and protected") == params[1] ) { sprintf (buf, "IDENTIFY %s", gCfg.irc_nickserv_password); irc_cmd_msg(session, "nickserv", buf); } else if ( strstr (params[1], "Password accepted - you are now recognized") == params[1] ) printf ("Nickserv authentication succeed."); } NICKSERV . CTCP CTCP "Client-to-Client Protocol" ( ) . IRC - me/ CTCP . CTCP IRC CTCP . CTCP TIME VERSION PING FINGER . CTCP . libirc_event_ctcp_internal . (+o) event_umode (channel mode) . event_mode event_umode. event_umode o+ IRC . epoll ()select epoll . select epoll : o irc_add_select_descriptors FD_SET o fd_set ( fd_set ). DCC . o poll/epoll ( EPOLLIN in_set) o in_set out_set ( !) irc_process_select_descriptors() ( ) . (GNU LESSER GENERAL PUBLIC LICENSE) (C) . (GNU GPL) . 0. . << >> <> . <<>> . <<>> . . << >> . << >> . << >> . << >> / . 1. GNU GPL. GNU GPL . 2. . : a. b. GNU GPL . 3. . . ( ) : a. . b. GNU GPL . 4. . : a. . b. GNU GPL . c. . d. : 0. . 1. . e. GNU GPL . 5. . . 6. . . . (Indices and tables) o Index () o Module Index ( ) o Search Page ( ) (AUTHOR) George Yunaev (COPYRIGHT) 2005-2024 George Yunaev, http://www.ulduzsoft.com/linux/libircclient 1.9 July 12, 2024 LIBIRCCLIENT(1)