ekg2
plugins/irc/misc.h
Idź do dokumentacji tego pliku.
00001 /*
00002  *  (C) Copyright 2004-2005 Michal 'GiM' Spadlinski <gim at skrzynka dot pl>
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License Version 2 as
00006  *  published by the Free Software Foundation.
00007  *
00008  *  This program is distributed in the hope that it will be useful,
00009  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00010  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011  *  GNU General Public License for more details.
00012  *
00013  *  You should have received a copy of the GNU General Public License
00014  *  along with this program; if not, write to the Free Software
00015  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00016  */
00017 
00018 #ifndef __EKG_PLUGINS_IRC_MISC_H
00019 #define __EKG_PLUGINS_IRC_MISC_H
00020 
00021 #include <stdio.h>
00022 
00023 #include <ekg/plugins.h>
00024 #include <ekg/sessions.h>
00025 
00026 #include "irc.h"
00027 
00028 #define IRC_COMMAND(x) static int x(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
00029 typedef int (*Irc_Cmd)      (session_t * , irc_private_t * , int   , int      , char **);
00030 
00031 #define IRC_LISTBAN             0x001
00032 #define IRC_LISTEXC             0x002
00033 #define IRC_LISTINV             0x004
00034 #define IRC_LISTLIN             0x008
00035 #define IRC_LISTSTA             0x010
00036 #define IRC_LISTWHO             0x020
00037 #define IRC_LISTCHA             0x040
00038 #define IRC_LISTEND             0x080
00039 
00040 #define IRC_WHOIS               0x001
00041 #define IRC_WHOWAS              0x002
00042 #define IRC_WHOERR              0x004
00043 
00044 enum { IRC_ERR_12=0, IRC_ERR_21, IRC_ERR_ONLY1, IRC_ERR_NEW, IRC_ERR_IGNO,
00045         IRC_ERR_OTHER,
00046 
00047         IRC_RPL_12=256, IRC_RPL_21, IRC_RPL_ONLY1, IRC_RPL_NEW, IRC_RPL_IGNO,
00048         IRC_RPL_OTHER };
00049 
00050 typedef struct {
00051         int             type;
00052         int             num;
00053         const char      *comm;
00054         const char      *name;
00055         Irc_Cmd         handler;
00056         int             future;
00057 } IrcCommand;
00058 
00059 IRC_COMMAND(irc_c_init);
00060 IRC_COMMAND(irc_c_invite);
00061 IRC_COMMAND(irc_c_ping);
00062 IRC_COMMAND(irc_c_nick);
00063 IRC_COMMAND(irc_c_msg);
00064 IRC_COMMAND(irc_c_join);
00065 IRC_COMMAND(irc_c_part);
00066 IRC_COMMAND(irc_c_kick);
00067 IRC_COMMAND(irc_c_quit);
00068 IRC_COMMAND(irc_c_error);
00069 IRC_COMMAND(irc_c_list);
00070 IRC_COMMAND(irc_c_namerpl);
00071 IRC_COMMAND(irc_c_mode);
00072 IRC_COMMAND(irc_c_topic);
00073 IRC_COMMAND(irc_c_whois);
00074 
00075 /* 1st - 1 if reply in numeric form, 0 if as a string
00076  * 1st== 1                           | 0
00077  * 2nd - code                        | 0
00078  * 3rd - NULL                        | command
00079  * 4th - name from rfc and stylename | command name
00080  * 5th - function handler            | function handler
00081  * 6th - 0 or one of enum's above...
00082  *       IRC_ERR if error, IRC_RPL if reply [used to determine style
00083  *       of display]
00084  *
00085  * for simple numeric replies [and for ERROR] exsist one function
00086  * irc_c_error
00087  *
00088  * first it checks style and if =NOT=  *_OTHER or *_IGNO [ignore]
00089  * it displays some information
00090  * if *_OTHER is used reply is treated according to its code
00091  * starting with line switch(i), where i is code
00092  *
00093  * if you add something that is not currently on the list
00094  * give somewhere [*] in comment
00095  */
00096 static const IrcCommand irccommands[] =
00097 {
00098         { 1,    -1,     NULL,   NULL,                   &irc_c_error,   IRC_ERR_NEW },
00099         { 1,    1,      NULL,   "RPL_WELCOME",          &irc_c_init,    0 },
00100         { 1,    2,      NULL,   "RPL_YOURHOST",         &irc_c_init,    0 },
00101         { 1,    3,      NULL,   "RPL_CREATED",          &irc_c_init,    0 },
00102         { 1,    4,      NULL,   "RPL_MYINFO",           &irc_c_init,    0 },
00103         { 1,    5,      NULL,   "RPL_BOUNCE",           &irc_c_init,    0 },
00104 
00105 /*      { 1,    200,    NULL,   "RPL_TRACELINK",        &irc_c_error,   
00106         { 1,    201,    NULL,   "RPL_TRACECONNECTING",  &irc_c_error,   
00107         { 1,    202,    NULL,   "RPL_TRACEHANDSHAKE",   &irc_c_error,           
00108         { 1,    203,    NULL,   "RPL_TRACEUNKNOWN",     &irc_c_error,   
00109         { 1,    204,    NULL,   "RPL_TRACEOPERATOR",    &irc_c_error,   
00110         { 1,    205,    NULL,   "RPL_TRACEUSER",        &irc_c_error,   
00111         { 1,    206,    NULL,   "RPL_TRACESERVER",      &irc_c_error,   
00112         { 1,    207,    NULL,   "RPL_TRACESERVICE",     &irc_c_error,   
00113         { 1,    208,    NULL,   "RPL_TRACENEWTYPE",     &irc_c_error,   
00114         { 1,    209,    NULL,   "RPL_TRACECLASS",       &irc_c_error,   
00115         { 1,    210,    NULL,   "RPL_TRACERECONNECT",   &irc_c_error,   
00116         { 1,    261,    NULL,   "RPL_TRACELOG",         &irc_c_error,   
00117         { 1,    262,    NULL,   "RPL_TRACEEND",         &irc_c_error,   */
00118 
00119 /*      { 1,    211,    NULL,   "RPL_STATSLINKINFO",    &irc_c_error,   
00120         { 1,    212,    NULL,   "RPL_STATSCOMMANDS",    &irc_c_error,   
00121         { 1,    219,    NULL,   "RPL_ENDOFSTATS",       &irc_c_error,   
00122         { 1,    242,    NULL,   "RPL_STATSUPTIME",      &irc_c_error,   
00123         { 1,    243,    NULL,   "RPL_STATSOLINE",       &irc_c_error,   */
00124         /*[ ]  /stats M -> modules */
00125         { 1,    212,    NULL,   "RPL_STATS",            &irc_c_list, IRC_LISTSTA},
00126         /*[*] /stats C -> connect() */
00127         { 1,    213,    NULL,   "RPL_STATS_EXT",        &irc_c_list, IRC_LISTSTA},
00128         /*[*] /stats I -> I:lines */
00129         { 1,    215,    NULL,   "RPL_STATS_EXT",        &irc_c_list, IRC_LISTSTA},
00130         /*[*] /stats K -> K:lines */
00131         { 1,    216,    NULL,   "RPL_STATS_EXT",        &irc_c_list, IRC_LISTSTA},
00132         /*[*] /stats Y -> classes */
00133         { 1,    218,    NULL,   "RPL_STATS",            &irc_c_list, IRC_LISTSTA},
00134         { 1,    219,    NULL,   "RPL_STATSEND",         &irc_c_list, IRC_LISTSTA|IRC_LISTEND },
00135         /*[*] /stats P -> ports */
00136         { 1,    220,    NULL,   "RPL_STATS_EXT",        &irc_c_list, IRC_LISTSTA},
00137         /*[*] /stats A */
00138         { 1,    226,    NULL,   "RPL_STATS",            &irc_c_list, IRC_LISTSTA}, 
00139         /*[ ] /stats u -> uptime */
00140         { 1,    242,    NULL,   "RPL_STATS",            &irc_c_list, IRC_LISTSTA},
00141         /*[ ] /stats O -> O:lines ; P -> aktywni */
00142         { 1,    243,    NULL,   "RPL_STATS_EXT",        &irc_c_list, IRC_LISTSTA},
00143         /*[*] /stats H -> */
00144         { 1,    244,    NULL,   "RPL_STATS",            &irc_c_list, IRC_LISTSTA},
00145         /*[*] /stats F, R, T, Z, ? */
00146         { 1,    249,    NULL,   "RPL_STATS",            &irc_c_list, IRC_LISTSTA},
00147 
00148 /*      { 1,    221,    NULL,   "RPL_UMODEIS",          &irc_c_error,   
00149         { 1,    234,    NULL,   "RPL_SERVLIST",         &irc_c_error,   
00150         { 1,    235,    NULL,   "RPL_SERVLISTEND",      &irc_c_error,
00151         
00152         { 1,250,NULL,"RPL_STATS",&irc_c_list,IRC_LISTSTA }, [*]
00153         { 1,    251,    NULL,   "RPL_LUSERCLIENT",      &irc_c_error,   
00154         { 1,    252,    NULL,   "RPL_LUSEROP",          &irc_c_error,   
00155         { 1,    253,    NULL,   "RPL_LUSERUNKNOWN",     &irc_c_error,   
00156         { 1,    254,    NULL,   "RPL_LUSERCHANNELS",    &irc_c_error,   
00157         { 1,    255,    NULL,   "RPL_LUSERME",          &irc_c_error,   
00158 */
00159 
00160 /*
00161         { 1,    256,    NULL,   "RPL_ADMINME",          &irc_c_error,   
00162         { 1,    257,    NULL,   "RPL_ADMINLOC1",        &irc_c_error,   
00163         { 1,    258,    NULL,   "RPL_ADMINLOC2",        &irc_c_error,   
00164         { 1,    259,    NULL,   "RPL_ADMINEMAIL",       &irc_c_error,   */
00165         { 1,    263,    NULL,   "RPL_TRYAGAIN",         &irc_c_error,   IRC_ERR_ONLY1},
00166         
00167 /*      { 1,    302,    NULL,   "RPL_USERHOST",         &irc_c_error,   
00168         { 1,    303,    NULL,   "RPL_ISON",             &irc_c_error,   */
00169         
00170         { 1,    301,    NULL,   "RPL_AWAY",             &irc_c_error,   IRC_RPL_OTHER},
00171         { 1,    305,    NULL,   "RPL_UNAWAY",           &irc_c_error,   IRC_RPL_ONLY1},
00172         { 1,    306,    NULL,   "RPL_NOWAWAY",          &irc_c_error,   IRC_RPL_ONLY1},
00173 
00174         { 1,    311,    NULL,   "RPL_WHOISUSER",        &irc_c_whois,IRC_WHOIS},
00175         { 1,    312,    NULL,   "RPL_WHOISSERVER",      &irc_c_whois,IRC_WHOIS},
00176         { 1,    313,    NULL,   "RPL_WHOISOPERATOR",    &irc_c_whois,IRC_WHOIS},
00177         { 1,    317,    NULL,   "RPL_WHOISIDLE",        &irc_c_whois,IRC_WHOIS},
00178         { 1,    318,    NULL,   "RPL_ENDOFWHOIS",       &irc_c_whois,IRC_WHOIS},
00179         { 1,    319,    NULL,   "RPL_WHOISCHANNELS",    &irc_c_whois,IRC_WHOIS},
00180         { 1,    320,    NULL,   "RPL_WHOISMISC",        &irc_c_whois,IRC_WHOIS},
00181         { 1,    314,    NULL,   "RPL_WHOWASUSER",       &irc_c_whois,IRC_WHOWAS},
00182         { 1,    369,    NULL,   "RPL_ENDOFWHOWAS",      &irc_c_whois,IRC_WHOWAS},
00183 
00184         /* G->dj I want to keep the names from rfc2812 */
00185         { 1,    315,    NULL,   "RPL_ENDOFWHO",         &irc_c_list, IRC_LISTWHO|IRC_LISTEND },
00186         { 1,    352,    NULL,   "RPL_WHOREPLY",         &irc_c_list, IRC_LISTWHO },     
00187 
00188         /* G->dj: with what it colides ?? */
00189 /*      { 1,    321,    NULL,   "RPL_LISTSTART",        &irc_c_error,   */
00190         { 1,    321,    NULL,   "RPL_CHLISTSTART",      &irc_c_list, IRC_LISTCHA },
00191         { 1,    322,    NULL,   "RPL_LIST",             &irc_c_list, IRC_LISTCHA },
00192         { 1,    323,    NULL,   "RPL_LISTEND",          &irc_c_list, IRC_LISTCHA|IRC_LISTEND },
00193 
00194 /*      { 1,    325,    NULL,   "RPL_UNIQOPIS",         &irc_c_error,   */
00195         { 1,    324,    NULL,   "RPL_CHANNELMODEIS",    &irc_c_mode,    IRC_RPL_OTHER},
00196         /* 331 is really RPL_NOTOPIC, but I don't want another format... */
00197         { 1,    331,    NULL,   "RPL_TOPIC",            &irc_c_error,   IRC_RPL_OTHER},
00198         { 1,    332,    NULL,   "RPL_TOPIC",            &irc_c_error,   IRC_RPL_OTHER},
00199         /* [*] 333 not in rfc 2812 */
00200         { 1,    333,    NULL,   "RPL_TOPICBY",          &irc_c_error,   IRC_RPL_OTHER},
00201         { 1,    341,    NULL,   "RPL_INVITE",           &irc_c_error,   IRC_RPL_OTHER},
00202 /*      { 1,    443, G->dj: ??? */
00203 /*      { 1,    351,    NULL,   "RPL_VERSION",          &irc_c_error,   */
00204         { 1,    353,    NULL,   "RPL_NAMREPLY",         &irc_c_namerpl, 0 },
00205         { 1,    364,    NULL,   "RPL_LINKS",            &irc_c_list,    IRC_LISTLIN },
00206         { 1,    365,    NULL,   "RPL_ENDOFLINKS",       &irc_c_list,    IRC_LISTLIN|IRC_LISTEND }, 
00207 
00208         { 1,    346,    NULL,   "RPL_INVITELIST",       &irc_c_list,    IRC_LISTINV }, 
00209         { 1,    347,    NULL,   "RPL_ENDOFLIST",        &irc_c_list,    IRC_LISTINV|IRC_LISTEND }, 
00210         { 1,    348,    NULL,   "RPL_EXCEPTLIST",       &irc_c_list,    IRC_LISTEXC },
00211         { 1,    349,    NULL,   "RPL_ENDOFLIST",        &irc_c_list,    IRC_LISTEXC|IRC_LISTEND },
00212 
00213         { 1,    366,    NULL,   "RPL_ENDOFNAMES",       &irc_c_error,   IRC_RPL_IGNO},
00214         { 1,    367,    NULL,   "RPL_BANLIST",          &irc_c_list,    IRC_LISTBAN },
00215         { 1,    368,    NULL,   "RPL_ENDOFBANLIST",     &irc_c_list,    IRC_LISTBAN|IRC_LISTEND },
00216 /*      { 1,    371,    NULL,   "RPL_INFO",             &irc_c_error,   */
00217         { 1,    372,    NULL,   "RPL_MOTD",             &irc_c_error,   IRC_RPL_OTHER},
00218 /*      { 1,    374,    NULL,   "RPL_ENDOFINFO",        &irc_c_error,   */
00219         { 1,    375,    NULL,   "RPL_MOTDSTART",        &irc_c_error,   IRC_RPL_OTHER},
00220         { 1,    376,    NULL,   "RPL_ENDOFMOTD",        &irc_c_error,   IRC_RPL_OTHER},
00221 /*      { 1,    381,    NULL,   "RPL_YOUREOPER",        &irc_c_error,   
00222         { 1,    382,    NULL,   "RPL_REHASHING",        &irc_c_error,   
00223         { 1,    383,    NULL,   "RPL_YOURESERVICE",     &irc_c_error,   
00224         { 1,    391,    NULL,   "RPL_TIME",             &irc_c_error,   
00225         { 1,    392,    NULL,   "RPL_USERSSTART",       &irc_c_error,   
00226         { 1,    393,    NULL,   "RPL_USERS",            &irc_c_error,   
00227         { 1,    394,    NULL,   "RPL_ENDOFUSERS",       &irc_c_error,   
00228         { 1,    395,    NULL,   "RPL_NOUSERS",          &irc_c_error,   */
00229 
00230         { 1,    401,    NULL,   "ERR_NOSUCHNICK",       &irc_c_error,   IRC_ERR_21 },
00231         { 1,    402,    NULL,   "ERR_NOSUCHSERVER",     &irc_c_error,   IRC_ERR_21 },
00232         { 1,    403,    NULL,   "ERR_NOSUCHCHANNEL",    &irc_c_error,   IRC_ERR_21 },
00233 /*
00234  * G->dj: what ? why dya want to put this stuff there ?
00235 +       { 1,    401,    NULL,   "ERR_NOSUCHNICK",       &irc_c_whois,   IRC_WHOIS  | IRC_WHOERR },
00236 +       { 1,    402,    NULL,   "ERR_NOSUCHSERVER",     &irc_c_whois,   IRC_WHOIS  | IRC_WHOERR },
00237 +       { 1,    403,    NULL,   "ERR_NOSUCHCHANNEL",    &irc_c_whois,   IRC_WHOIS  | IRC_WHOERR },
00238 +       { 1,    406,    NULL,   "ERR_WASNOSUCHNICK",    &irc_c_whois,   IRC_WHOWAS | IRC_WHOERR },
00239 +       
00240 */
00241         { 1,    404,    NULL,   "ERR_CANNOTSENDTOCHAN", &irc_c_error,   IRC_ERR_OTHER },
00242         { 1,    404,    NULL,   "ERR_CANNOTSENDTOCHAN", &irc_c_error,   IRC_ERR_OTHER },
00243         { 1,    405,    NULL,   "ERR_TOOMANYCHANNELS",  &irc_c_error,   IRC_ERR_12 },
00244         { 1,    406,    NULL,   "ERR_WASNOSUCHNICK",    &irc_c_error,   IRC_ERR_21 },
00245         { 1,    407,    NULL,   "ERR_TOOMANYTARGETS",   &irc_c_error,   IRC_ERR_12 },
00246         { 1,    408,    NULL,   "ERR_NOSUCHSERVICE",    &irc_c_error,   IRC_ERR_21 },
00247         { 1,    409,    NULL,   "ERR_NOORIGIN",         &irc_c_error,   IRC_ERR_ONLY1 },
00248         { 1,    411,    NULL,   "ERR_NORECIPIENT",      &irc_c_error,   IRC_ERR_ONLY1 },
00249         { 1,    412,    NULL,   "ERR_NOTEXTTOSEND",     &irc_c_error,   IRC_ERR_ONLY1 },
00250         { 1,    413,    NULL,   "ERR_NOTOPLEVEL",       &irc_c_error,   IRC_ERR_21 },
00251         { 1,    414,    NULL,   "ERR_WILDTOPLEVEL",     &irc_c_error,   IRC_ERR_21 },
00252         { 1,    415,    NULL,   "ERR_BADMASK",          &irc_c_error,   IRC_ERR_21 },
00253         { 1,    421,    NULL,   "ERR_UNKNOWNCOMMAND",   &irc_c_error,   IRC_ERR_21 },
00254         { 1,    422,    NULL,   "ERR_NOMOTD",           &irc_c_error,   IRC_ERR_ONLY1 },
00255         { 1,    423,    NULL,   "ERR_NOADMININFO",      &irc_c_error,   IRC_ERR_12 },
00256         { 1,    424,    NULL,   "ERR_FILEERROR",        &irc_c_error,   IRC_ERR_ONLY1 },
00257         { 1,    431,    NULL,   "ERR_NONICKNAMEGIVEN",  &irc_c_error,   IRC_ERR_ONLY1 },
00258         { 1,    432,    NULL,   "ERR_ERRONEUSNICKNAME", &irc_c_error,   IRC_ERR_21 },
00259         { 1,    433,    NULL,   "ERR_NICKNAMEINUSE",    &irc_c_error,   IRC_ERR_OTHER },
00260         { 1,    436,    NULL,   "ERR_NICKCOLLISION",    &irc_c_error,   IRC_ERR_12 },
00261         { 1,    437,    NULL,   "ERR_UNAVAILRESOURCE",  &irc_c_error,   IRC_ERR_12 },
00262         { 1,    441,    NULL,   "ERR_USERNOTINCHANNEL", &irc_c_error,   IRC_ERR_NEW },
00263         { 1,    442,    NULL,   "ERR_NOTONCHANNEL",     &irc_c_error,   IRC_ERR_21 },
00264         { 1,    443,    NULL,   "ERR_USERONCHANNEL",    &irc_c_error,   IRC_ERR_NEW },
00265         { 1,    444,    NULL,   "ERR_NOLOGIN",          &irc_c_error,   IRC_ERR_12 },
00266         { 1,    445,    NULL,   "ERR_SUMMONDISABLED",   &irc_c_error,   IRC_ERR_ONLY1 },
00267         { 1,    446,    NULL,   "ERR_USERSDISABLED",    &irc_c_error,   IRC_ERR_ONLY1 },
00268         { 1,    451,    NULL,   "ERR_NOTREGISTERED",    &irc_c_error,   IRC_ERR_ONLY1 },
00269         { 1,    461,    NULL,   "ERR_NEEDMOREPARAMS",   &irc_c_error,   IRC_ERR_12 },
00270         { 1,    462,    NULL,   "ERR_ALREADYREGISTRED", &irc_c_error,   IRC_ERR_ONLY1 },
00271         { 1,    463,    NULL,   "ERR_NOPERMFORHOST",    &irc_c_error,   IRC_ERR_ONLY1 },
00272         { 1,    464,    NULL,   "ERR_PASSWDMISMATCH",   &irc_c_error,   IRC_ERR_ONLY1 },
00273         { 1,    465,    NULL,   "ERR_YOUREBANNEDCREEP", &irc_c_error,   IRC_ERR_ONLY1 },
00274         { 1,    466,    NULL,   "ERR_YOUWILLBEBANNED",  &irc_c_error,   IRC_ERR_NEW },
00275         { 1,    467,    NULL,   "ERR_KEYSET",           &irc_c_error,   IRC_ERR_12 },
00276         { 1,    471,    NULL,   "ERR_CHANNELISFULL",    &irc_c_error,   IRC_ERR_12 },
00277         { 1,    472,    NULL,   "ERR_UNKNOWNMODE",      &irc_c_error,   IRC_ERR_12 },
00278         { 1,    473,    NULL,   "ERR_INVITEONLYCHAN",   &irc_c_error,   IRC_ERR_12 },
00279         { 1,    474,    NULL,   "ERR_BANNEDFROMCHAN",   &irc_c_error,   IRC_ERR_12 },
00280         { 1,    475,    NULL,   "ERR_BADCHANNELKEY",    &irc_c_error,   IRC_ERR_12 },
00281         { 1,    476,    NULL,   "ERR_BADCHANMASK",      &irc_c_error,   IRC_ERR_12 },
00282         { 1,    477,    NULL,   "ERR_NOCHANMODES",      &irc_c_error,   IRC_ERR_12 },
00283         { 1,    478,    NULL,   "ERR_BANLISTFULL",      &irc_c_error,   IRC_ERR_NEW },
00284         { 1,    481,    NULL,   "ERR_NOPRIVILEGES",     &irc_c_error,   IRC_ERR_ONLY1 },
00285         { 1,    482,    NULL,   "ERR_CHANOPRIVSNEEDED", &irc_c_error,   IRC_ERR_12 },
00286         { 1,    483,    NULL,   "ERR_CANTKILLSERVER",   &irc_c_error,   IRC_ERR_ONLY1 },
00287         { 1,    484,    NULL,   "ERR_RESTRICTED",       &irc_c_error,   IRC_ERR_ONLY1 },
00288         { 1,    485,    NULL,   "ERR_UNIQOPPRIVSNEEDED",&irc_c_error,   IRC_ERR_ONLY1 },
00289         { 1,    491,    NULL,   "ERR_NOOPERHOST",       &irc_c_error,   IRC_ERR_ONLY1 },
00290         { 1,    501,    NULL,   "ERR_UMODEUNKNOWNFLAG", &irc_c_error,   IRC_ERR_ONLY1 },
00291         { 1,    502,    NULL,   "ERR_USERSDONTMATCH",   &irc_c_error,   IRC_ERR_ONLY1 },
00292        
00293         { 0,    0,      "PING", "PING",                 &irc_c_ping,    0 },
00294         { 0,    0,      "INVITE", "INVITE",             &irc_c_invite,  0 },
00295         { 0,    0,      "NICK", "NICK",                 &irc_c_nick,    0 },
00296         { 0,    0,      "PRIVMSG", "PRIVMSG",           &irc_c_msg,     0 },
00297         { 0,    0,      "NOTICE", "NOTICE",             &irc_c_msg,     0 },
00298         { 0,    0,      "JOIN", "JOIN",                 &irc_c_join,    0 },
00299         { 0,    0,      "PART", "PART",                 &irc_c_part,    0 },
00300         { 0,    0,      "KICK", "KICK",                 &irc_c_kick,    0 },
00301         { 0,    0,      "QUIT", "QUIT",                 &irc_c_quit,    0 },
00302         { 0,    0,      "MODE", "MODE",                 &irc_c_mode,    0 },
00303         { 0,    0,      "TOPIC", "TOPIC",               &irc_c_topic,   0 },
00304         { 0,    0,      "ERROR", "ERROR",               &irc_c_error,   0 },
00305         { -1,   -1,     NULL,   NULL,                   NULL,           0 }
00306 };      
00307 /*
00308         { 1,    372, "RPL_MOTD",                irc_c_motd, 1, NULL },
00309         { 1,    376, "RPL_ENDOFMOTD",           irc_c_motd, 1, NULL }
00310 */
00311 #endif /* __EKG_PLUGINS_IRC_MISC_H */
00312 
00313 /*
00314  * Local Variables:
00315  * mode: c
00316  * c-file-style: "k&r"
00317  * c-basic-offset: 8
00318  * indent-tabs-mode: t
00319  * End:
00320  */
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje