ekg2  GIT master
misc.h
Idź do dokumentacji tego pliku.
1 /*
2  * (C) Copyright 2004-2005 Michal 'GiM' Spadlinski <gim at skrzynka dot pl>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License Version 2 as
6  * published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16  */
17 
18 #ifndef __EKG_PLUGINS_IRC_MISC_H
19 #define __EKG_PLUGINS_IRC_MISC_H
20 
21 #include <stdio.h>
22 
23 #include "irc.h"
24 
25 #define IRC_COMMAND(x) static int x(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
26 typedef int (*Irc_Cmd) (session_t * , irc_private_t * , int , int , char **);
27 
28 #define IRC_LISTBAN 0x001
29 #define IRC_LISTEXC 0x002
30 #define IRC_LISTINV 0x004
31 #define IRC_LISTLIN 0x008
32 #define IRC_LISTSTA 0x010
33 #define IRC_LISTWHO 0x020
34 #define IRC_LISTCHA 0x040
35 #define IRC_LISTEND 0x080
36 
37 #define IRC_WHOIS 0x001
38 #define IRC_WHOWAS 0x002
39 #define IRC_WHOERR 0x004
40 
43 
46 
47 typedef struct {
48  int type;
49  int num;
50  const char *comm;
51  const char *name;
53  int future;
54 } IrcCommand;
55 
71 
72 /* 1st - 1 if reply in numeric form, 0 if as a string
73  * 1st== 1 | 0
74  * 2nd - code | 0
75  * 3rd - NULL | command
76  * 4th - name from rfc and stylename | command name
77  * 5th - function handler | function handler
78  * 6th - 0 or one of enum's above...
79  * IRC_ERR if error, IRC_RPL if reply [used to determine style
80  * of display]
81  *
82  * for simple numeric replies [and for ERROR] exsist one function
83  * irc_c_error
84  *
85  * first it checks style and if =NOT= *_OTHER or *_IGNO [ignore]
86  * it displays some information
87  * if *_OTHER is used reply is treated according to its code
88  * starting with line switch(i), where i is code
89  *
90  * if you add something that is not currently on the list
91  * give somewhere [*] in comment
92  */
93 static const IrcCommand irccommands[] =
94 {
95  { 1, -1, NULL, NULL, &irc_c_error, IRC_ERR_NEW },
96  { 1, 1, NULL, "RPL_WELCOME", &irc_c_init, 0 },
97  { 1, 2, NULL, "RPL_YOURHOST", &irc_c_init, 0 },
98  { 1, 3, NULL, "RPL_CREATED", &irc_c_init, 0 },
99  { 1, 4, NULL, "RPL_MYINFO", &irc_c_init, 0 },
100  { 1, 5, NULL, "RPL_BOUNCE", &irc_c_init, 0 },
101 
102 /* { 1, 200, NULL, "RPL_TRACELINK", &irc_c_error,
103  { 1, 201, NULL, "RPL_TRACECONNECTING", &irc_c_error,
104  { 1, 202, NULL, "RPL_TRACEHANDSHAKE", &irc_c_error,
105  { 1, 203, NULL, "RPL_TRACEUNKNOWN", &irc_c_error,
106  { 1, 204, NULL, "RPL_TRACEOPERATOR", &irc_c_error,
107  { 1, 205, NULL, "RPL_TRACEUSER", &irc_c_error,
108  { 1, 206, NULL, "RPL_TRACESERVER", &irc_c_error,
109  { 1, 207, NULL, "RPL_TRACESERVICE", &irc_c_error,
110  { 1, 208, NULL, "RPL_TRACENEWTYPE", &irc_c_error,
111  { 1, 209, NULL, "RPL_TRACECLASS", &irc_c_error,
112  { 1, 210, NULL, "RPL_TRACERECONNECT", &irc_c_error,
113  { 1, 261, NULL, "RPL_TRACELOG", &irc_c_error,
114  { 1, 262, NULL, "RPL_TRACEEND", &irc_c_error, */
115 
116 /* { 1, 211, NULL, "RPL_STATSLINKINFO", &irc_c_error,
117  { 1, 212, NULL, "RPL_STATSCOMMANDS", &irc_c_error,
118  { 1, 219, NULL, "RPL_ENDOFSTATS", &irc_c_error,
119  { 1, 242, NULL, "RPL_STATSUPTIME", &irc_c_error,
120  { 1, 243, NULL, "RPL_STATSOLINE", &irc_c_error, */
121  /*[ ] /stats M -> modules */
122  { 1, 212, NULL, "RPL_STATS", &irc_c_list, IRC_LISTSTA},
123  /*[*] /stats C -> connect() */
124  { 1, 213, NULL, "RPL_STATS_EXT", &irc_c_list, IRC_LISTSTA},
125  /*[*] /stats I -> I:lines */
126  { 1, 215, NULL, "RPL_STATS_EXT", &irc_c_list, IRC_LISTSTA},
127  /*[*] /stats K -> K:lines */
128  { 1, 216, NULL, "RPL_STATS_EXT", &irc_c_list, IRC_LISTSTA},
129  /*[*] /stats Y -> classes */
130  { 1, 218, NULL, "RPL_STATS", &irc_c_list, IRC_LISTSTA},
131  { 1, 219, NULL, "RPL_STATSEND", &irc_c_list, IRC_LISTSTA|IRC_LISTEND },
132  /*[*] /stats P -> ports */
133  { 1, 220, NULL, "RPL_STATS_EXT", &irc_c_list, IRC_LISTSTA},
134  /*[*] /stats A */
135  { 1, 226, NULL, "RPL_STATS", &irc_c_list, IRC_LISTSTA},
136  /*[ ] /stats u -> uptime */
137  { 1, 242, NULL, "RPL_STATS", &irc_c_list, IRC_LISTSTA},
138  /*[ ] /stats O -> O:lines ; P -> aktywni */
139  { 1, 243, NULL, "RPL_STATS_EXT", &irc_c_list, IRC_LISTSTA},
140  /*[*] /stats H -> */
141  { 1, 244, NULL, "RPL_STATS", &irc_c_list, IRC_LISTSTA},
142  /*[*] /stats F, R, T, Z, ? */
143  { 1, 249, NULL, "RPL_STATS", &irc_c_list, IRC_LISTSTA},
144 
145 /* { 1, 221, NULL, "RPL_UMODEIS", &irc_c_error,
146  { 1, 234, NULL, "RPL_SERVLIST", &irc_c_error,
147  { 1, 235, NULL, "RPL_SERVLISTEND", &irc_c_error,
148 
149  { 1,250,NULL,"RPL_STATS",&irc_c_list,IRC_LISTSTA }, [*]
150  { 1, 251, NULL, "RPL_LUSERCLIENT", &irc_c_error,
151  { 1, 252, NULL, "RPL_LUSEROP", &irc_c_error,
152  { 1, 253, NULL, "RPL_LUSERUNKNOWN", &irc_c_error,
153  { 1, 254, NULL, "RPL_LUSERCHANNELS", &irc_c_error,
154  { 1, 255, NULL, "RPL_LUSERME", &irc_c_error,
155 */
156 
157 /*
158  { 1, 256, NULL, "RPL_ADMINME", &irc_c_error,
159  { 1, 257, NULL, "RPL_ADMINLOC1", &irc_c_error,
160  { 1, 258, NULL, "RPL_ADMINLOC2", &irc_c_error,
161  { 1, 259, NULL, "RPL_ADMINEMAIL", &irc_c_error, */
162  { 1, 263, NULL, "RPL_TRYAGAIN", &irc_c_error, IRC_ERR_ONLY1},
163 
164 /* { 1, 302, NULL, "RPL_USERHOST", &irc_c_error,
165  { 1, 303, NULL, "RPL_ISON", &irc_c_error, */
166 
167  { 1, 301, NULL, "RPL_AWAY", &irc_c_error, IRC_RPL_OTHER},
168  { 1, 305, NULL, "RPL_UNAWAY", &irc_c_error, IRC_RPL_ONLY1},
169  { 1, 306, NULL, "RPL_NOWAWAY", &irc_c_error, IRC_RPL_ONLY1},
170 
171  { 1, 311, NULL, "RPL_WHOISUSER", &irc_c_whois,IRC_WHOIS},
172  { 1, 312, NULL, "RPL_WHOISSERVER", &irc_c_whois,IRC_WHOIS},
173  { 1, 313, NULL, "RPL_WHOISOPERATOR", &irc_c_whois,IRC_WHOIS},
174  { 1, 317, NULL, "RPL_WHOISIDLE", &irc_c_whois,IRC_WHOIS},
175  { 1, 318, NULL, "RPL_ENDOFWHOIS", &irc_c_whois,IRC_WHOIS},
176  { 1, 319, NULL, "RPL_WHOISCHANNELS", &irc_c_whois,IRC_WHOIS},
177  { 1, 320, NULL, "RPL_WHOISMISC", &irc_c_whois,IRC_WHOIS},
178  { 1, 314, NULL, "RPL_WHOWASUSER", &irc_c_whois,IRC_WHOWAS},
179  { 1, 369, NULL, "RPL_ENDOFWHOWAS", &irc_c_whois,IRC_WHOWAS},
180 
181  /* G->dj I want to keep the names from rfc2812 */
182  { 1, 315, NULL, "RPL_ENDOFWHO", &irc_c_list, IRC_LISTWHO|IRC_LISTEND },
183  { 1, 352, NULL, "RPL_WHOREPLY", &irc_c_list, IRC_LISTWHO },
184 
185  /* G->dj: with what it colides ?? */
186 /* { 1, 321, NULL, "RPL_LISTSTART", &irc_c_error, */
187  { 1, 321, NULL, "RPL_CHLISTSTART", &irc_c_list, IRC_LISTCHA },
188  { 1, 322, NULL, "RPL_LIST", &irc_c_list, IRC_LISTCHA },
189  { 1, 323, NULL, "RPL_LISTEND", &irc_c_list, IRC_LISTCHA|IRC_LISTEND },
190 
191 /* { 1, 325, NULL, "RPL_UNIQOPIS", &irc_c_error, */
192  { 1, 324, NULL, "RPL_CHANNELMODEIS", &irc_c_mode, IRC_RPL_OTHER},
193  /* 331 is really RPL_NOTOPIC, but I don't want another format... */
194  { 1, 331, NULL, "RPL_TOPIC", &irc_c_error, IRC_RPL_OTHER},
195  { 1, 332, NULL, "RPL_TOPIC", &irc_c_error, IRC_RPL_OTHER},
196  /* [*] 333 not in rfc 2812 */
197  { 1, 333, NULL, "RPL_TOPICBY", &irc_c_error, IRC_RPL_OTHER},
198  { 1, 341, NULL, "RPL_INVITE", &irc_c_error, IRC_RPL_OTHER},
199 /* { 1, 443, G->dj: ??? */
200 /* { 1, 351, NULL, "RPL_VERSION", &irc_c_error, */
201  { 1, 353, NULL, "RPL_NAMREPLY", &irc_c_namerpl, 0 },
202  { 1, 364, NULL, "RPL_LINKS", &irc_c_list, IRC_LISTLIN },
203  { 1, 365, NULL, "RPL_ENDOFLINKS", &irc_c_list, IRC_LISTLIN|IRC_LISTEND },
204 
205  { 1, 346, NULL, "RPL_INVITELIST", &irc_c_list, IRC_LISTINV },
206  { 1, 347, NULL, "RPL_ENDOFLIST", &irc_c_list, IRC_LISTINV|IRC_LISTEND },
207  { 1, 348, NULL, "RPL_EXCEPTLIST", &irc_c_list, IRC_LISTEXC },
208  { 1, 349, NULL, "RPL_ENDOFLIST", &irc_c_list, IRC_LISTEXC|IRC_LISTEND },
209 
210  { 1, 366, NULL, "RPL_ENDOFNAMES", &irc_c_error, IRC_RPL_IGNO},
211  { 1, 367, NULL, "RPL_BANLIST", &irc_c_list, IRC_LISTBAN },
212  { 1, 368, NULL, "RPL_ENDOFBANLIST", &irc_c_list, IRC_LISTBAN|IRC_LISTEND },
213 /* { 1, 371, NULL, "RPL_INFO", &irc_c_error, */
214  { 1, 372, NULL, "RPL_MOTD", &irc_c_error, IRC_RPL_OTHER},
215 /* { 1, 374, NULL, "RPL_ENDOFINFO", &irc_c_error, */
216  { 1, 375, NULL, "RPL_MOTDSTART", &irc_c_error, IRC_RPL_OTHER},
217  { 1, 376, NULL, "RPL_ENDOFMOTD", &irc_c_error, IRC_RPL_OTHER},
218 /* { 1, 381, NULL, "RPL_YOUREOPER", &irc_c_error,
219  { 1, 382, NULL, "RPL_REHASHING", &irc_c_error,
220  { 1, 383, NULL, "RPL_YOURESERVICE", &irc_c_error,
221  { 1, 391, NULL, "RPL_TIME", &irc_c_error,
222  { 1, 392, NULL, "RPL_USERSSTART", &irc_c_error,
223  { 1, 393, NULL, "RPL_USERS", &irc_c_error,
224  { 1, 394, NULL, "RPL_ENDOFUSERS", &irc_c_error,
225  { 1, 395, NULL, "RPL_NOUSERS", &irc_c_error, */
226 
227  { 1, 401, NULL, "ERR_NOSUCHNICK", &irc_c_error, IRC_ERR_21 },
228  { 1, 402, NULL, "ERR_NOSUCHSERVER", &irc_c_error, IRC_ERR_21 },
229  { 1, 403, NULL, "ERR_NOSUCHCHANNEL", &irc_c_error, IRC_ERR_21 },
230 /*
231  * G->dj: what ? why dya want to put this stuff there ?
232 + { 1, 401, NULL, "ERR_NOSUCHNICK", &irc_c_whois, IRC_WHOIS | IRC_WHOERR },
233 + { 1, 402, NULL, "ERR_NOSUCHSERVER", &irc_c_whois, IRC_WHOIS | IRC_WHOERR },
234 + { 1, 403, NULL, "ERR_NOSUCHCHANNEL", &irc_c_whois, IRC_WHOIS | IRC_WHOERR },
235 + { 1, 406, NULL, "ERR_WASNOSUCHNICK", &irc_c_whois, IRC_WHOWAS | IRC_WHOERR },
236 +
237 */
238  { 1, 404, NULL, "ERR_CANNOTSENDTOCHAN", &irc_c_error, IRC_ERR_OTHER },
239  { 1, 404, NULL, "ERR_CANNOTSENDTOCHAN", &irc_c_error, IRC_ERR_OTHER },
240  { 1, 405, NULL, "ERR_TOOMANYCHANNELS", &irc_c_error, IRC_ERR_12 },
241  { 1, 406, NULL, "ERR_WASNOSUCHNICK", &irc_c_error, IRC_ERR_21 },
242  { 1, 407, NULL, "ERR_TOOMANYTARGETS", &irc_c_error, IRC_ERR_12 },
243  { 1, 408, NULL, "ERR_NOSUCHSERVICE", &irc_c_error, IRC_ERR_21 },
244  { 1, 409, NULL, "ERR_NOORIGIN", &irc_c_error, IRC_ERR_ONLY1 },
245  { 1, 411, NULL, "ERR_NORECIPIENT", &irc_c_error, IRC_ERR_ONLY1 },
246  { 1, 412, NULL, "ERR_NOTEXTTOSEND", &irc_c_error, IRC_ERR_ONLY1 },
247  { 1, 413, NULL, "ERR_NOTOPLEVEL", &irc_c_error, IRC_ERR_21 },
248  { 1, 414, NULL, "ERR_WILDTOPLEVEL", &irc_c_error, IRC_ERR_21 },
249  { 1, 415, NULL, "ERR_BADMASK", &irc_c_error, IRC_ERR_21 },
250  { 1, 421, NULL, "ERR_UNKNOWNCOMMAND", &irc_c_error, IRC_ERR_21 },
251  { 1, 422, NULL, "ERR_NOMOTD", &irc_c_error, IRC_ERR_ONLY1 },
252  { 1, 423, NULL, "ERR_NOADMININFO", &irc_c_error, IRC_ERR_12 },
253  { 1, 424, NULL, "ERR_FILEERROR", &irc_c_error, IRC_ERR_ONLY1 },
254  { 1, 431, NULL, "ERR_NONICKNAMEGIVEN", &irc_c_error, IRC_ERR_ONLY1 },
255  { 1, 432, NULL, "ERR_ERRONEUSNICKNAME", &irc_c_error, IRC_ERR_21 },
256  { 1, 433, NULL, "ERR_NICKNAMEINUSE", &irc_c_error, IRC_ERR_OTHER },
257  { 1, 436, NULL, "ERR_NICKCOLLISION", &irc_c_error, IRC_ERR_12 },
258  { 1, 437, NULL, "ERR_UNAVAILRESOURCE", &irc_c_error, IRC_ERR_12 },
259  { 1, 441, NULL, "ERR_USERNOTINCHANNEL", &irc_c_error, IRC_ERR_NEW },
260  { 1, 442, NULL, "ERR_NOTONCHANNEL", &irc_c_error, IRC_ERR_21 },
261  { 1, 443, NULL, "ERR_USERONCHANNEL", &irc_c_error, IRC_ERR_NEW },
262  { 1, 444, NULL, "ERR_NOLOGIN", &irc_c_error, IRC_ERR_12 },
263  { 1, 445, NULL, "ERR_SUMMONDISABLED", &irc_c_error, IRC_ERR_ONLY1 },
264  { 1, 446, NULL, "ERR_USERSDISABLED", &irc_c_error, IRC_ERR_ONLY1 },
265  { 1, 451, NULL, "ERR_NOTREGISTERED", &irc_c_error, IRC_ERR_ONLY1 },
266  { 1, 461, NULL, "ERR_NEEDMOREPARAMS", &irc_c_error, IRC_ERR_12 },
267  { 1, 462, NULL, "ERR_ALREADYREGISTRED", &irc_c_error, IRC_ERR_ONLY1 },
268  { 1, 463, NULL, "ERR_NOPERMFORHOST", &irc_c_error, IRC_ERR_ONLY1 },
269  { 1, 464, NULL, "ERR_PASSWDMISMATCH", &irc_c_error, IRC_ERR_ONLY1 },
270  { 1, 465, NULL, "ERR_YOUREBANNEDCREEP", &irc_c_error, IRC_ERR_ONLY1 },
271  { 1, 466, NULL, "ERR_YOUWILLBEBANNED", &irc_c_error, IRC_ERR_NEW },
272  { 1, 467, NULL, "ERR_KEYSET", &irc_c_error, IRC_ERR_12 },
273  { 1, 471, NULL, "ERR_CHANNELISFULL", &irc_c_error, IRC_ERR_12 },
274  { 1, 472, NULL, "ERR_UNKNOWNMODE", &irc_c_error, IRC_ERR_12 },
275  { 1, 473, NULL, "ERR_INVITEONLYCHAN", &irc_c_error, IRC_ERR_12 },
276  { 1, 474, NULL, "ERR_BANNEDFROMCHAN", &irc_c_error, IRC_ERR_12 },
277  { 1, 475, NULL, "ERR_BADCHANNELKEY", &irc_c_error, IRC_ERR_12 },
278  { 1, 476, NULL, "ERR_BADCHANMASK", &irc_c_error, IRC_ERR_12 },
279  { 1, 477, NULL, "ERR_NOCHANMODES", &irc_c_error, IRC_ERR_12 },
280  { 1, 478, NULL, "ERR_BANLISTFULL", &irc_c_error, IRC_ERR_NEW },
281  { 1, 481, NULL, "ERR_NOPRIVILEGES", &irc_c_error, IRC_ERR_ONLY1 },
282  { 1, 482, NULL, "ERR_CHANOPRIVSNEEDED", &irc_c_error, IRC_ERR_12 },
283  { 1, 483, NULL, "ERR_CANTKILLSERVER", &irc_c_error, IRC_ERR_ONLY1 },
284  { 1, 484, NULL, "ERR_RESTRICTED", &irc_c_error, IRC_ERR_ONLY1 },
285  { 1, 485, NULL, "ERR_UNIQOPPRIVSNEEDED",&irc_c_error, IRC_ERR_ONLY1 },
286  { 1, 491, NULL, "ERR_NOOPERHOST", &irc_c_error, IRC_ERR_ONLY1 },
287  { 1, 501, NULL, "ERR_UMODEUNKNOWNFLAG", &irc_c_error, IRC_ERR_ONLY1 },
288  { 1, 502, NULL, "ERR_USERSDONTMATCH", &irc_c_error, IRC_ERR_ONLY1 },
289 
290  { 0, 0, "PING", "PING", &irc_c_ping, 0 },
291  { 0, 0, "INVITE", "INVITE", &irc_c_invite, 0 },
292  { 0, 0, "NICK", "NICK", &irc_c_nick, 0 },
293  { 0, 0, "PRIVMSG", "PRIVMSG", &irc_c_msg, 0 },
294  { 0, 0, "NOTICE", "NOTICE", &irc_c_msg, 0 },
295  { 0, 0, "JOIN", "JOIN", &irc_c_join, 0 },
296  { 0, 0, "PART", "PART", &irc_c_part, 0 },
297  { 0, 0, "KICK", "KICK", &irc_c_kick, 0 },
298  { 0, 0, "QUIT", "QUIT", &irc_c_quit, 0 },
299  { 0, 0, "MODE", "MODE", &irc_c_mode, 0 },
300  { 0, 0, "TOPIC", "TOPIC", &irc_c_topic, 0 },
301  { 0, 0, "ERROR", "ERROR", &irc_c_error, 0 },
302  { -1, -1, NULL, NULL, NULL, 0 }
303 };
304 /*
305  { 1, 372, "RPL_MOTD", irc_c_motd, 1, NULL },
306  { 1, 376, "RPL_ENDOFMOTD", irc_c_motd, 1, NULL }
307 */
308 #endif /* __EKG_PLUGINS_IRC_MISC_H */
309 
310 /*
311  * Local Variables:
312  * mode: c
313  * c-file-style: "k&r"
314  * c-basic-offset: 8
315  * indent-tabs-mode: t
316  * End:
317  */
#define IRC_LISTCHA
Definition: misc.h:34
Definition: misc.h:45
Definition: sessions.h:127
static int irc_c_error(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
Definition: misc.h:44
#define IRC_WHOWAS
Definition: misc.h:38
static int irc_c_kick(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
#define IRC_LISTINV
Definition: misc.h:30
static int irc_c_topic(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
Definition: misc.h:47
const char * comm
Definition: misc.h:50
Definition: misc.h:41
static int irc_c_msg(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
static int irc_c_whois(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
Definition: misc.h:44
int future
Definition: misc.h:53
#define IRC_LISTEXC
Definition: misc.h:29
#define NULL
Definition: oralog.c:49
Definition: misc.h:44
#define IRC_WHOIS
Definition: misc.h:37
static int irc_c_nick(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
Definition: misc.h:41
static int irc_c_mode(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
int type
Definition: misc.h:48
static const IrcCommand irccommands[]
Definition: misc.h:93
#define IRC_LISTLIN
Definition: misc.h:31
static int irc_c_init(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
#define IRC_LISTSTA
Definition: misc.h:32
Definition: misc.h:41
Irc_Cmd handler
Definition: misc.h:52
Definition: misc.h:41
Definition: misc.h:44
static int irc_c_join(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
Definition: misc.h:42
#define IRC_LISTBAN
Definition: misc.h:28
#define IRC_COMMAND(x)
Definition: misc.h:25
static int irc_c_quit(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
static int irc_c_namerpl(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
static int irc_c_list(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
const char * name
Definition: misc.h:51
int num
Definition: misc.h:49
static int irc_c_ping(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
static int irc_c_invite(session_t *s, irc_private_t *j, int fd, int ecode, char **param)
#define IRC_LISTWHO
Definition: misc.h:33
Definition: misc.h:41
Definition: irc.h:30
#define IRC_LISTEND
Definition: misc.h:35
Definition: misc.h:44
int(* Irc_Cmd)(session_t *, irc_private_t *, int, int, char **)
Definition: misc.h:26
static int irc_c_part(session_t *s, irc_private_t *j, int fd, int ecode, char **param)