|
zacw@1300
|
1 |
/** |
|
zacw@1300
|
2 |
* @file irc.h |
|
zacw@1300
|
3 |
* |
|
zacw@1300
|
4 |
* purple |
|
zacw@1300
|
5 |
* |
|
zacw@1300
|
6 |
* Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> |
|
zacw@1300
|
7 |
* |
|
zacw@1300
|
8 |
* This program is free software; you can redistribute it and/or modify |
|
zacw@1300
|
9 |
* it under the terms of the GNU General Public License as published by |
|
zacw@1300
|
10 |
* the Free Software Foundation; either version 2 of the License, or |
|
zacw@1300
|
11 |
* (at your option) any later version. |
|
zacw@1300
|
12 |
* |
|
zacw@1300
|
13 |
* This program is distributed in the hope that it will be useful, |
|
zacw@1300
|
14 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
zacw@1300
|
15 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
zacw@1300
|
16 |
* GNU General Public License for more details. |
|
zacw@1300
|
17 |
* |
|
zacw@1300
|
18 |
* You should have received a copy of the GNU General Public License |
|
zacw@1300
|
19 |
* along with this program; if not, write to the Free Software |
|
zacw@1300
|
20 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
zacw@1300
|
21 |
*/ |
|
zacw@1300
|
22 |
|
|
zacw@1300
|
23 |
#ifndef _PURPLE_IRC_H |
|
zacw@1300
|
24 |
#define _PURPLE_IRC_H |
|
zacw@1300
|
25 |
|
|
zacw@1300
|
26 |
#include <glib.h> |
|
zacw@1300
|
27 |
|
|
zacw@1300
|
28 |
#include "circbuffer.h" |
|
zacw@1300
|
29 |
#include "ft.h" |
|
zacw@1300
|
30 |
#include "roomlist.h" |
|
zacw@1300
|
31 |
#include "sslconn.h" |
|
zacw@1300
|
32 |
|
|
zacw@1300
|
33 |
#define IRC_DEFAULT_SERVER "irc.freenode.net" |
|
zacw@1300
|
34 |
#define IRC_DEFAULT_PORT 6667 |
|
zacw@1300
|
35 |
#define IRC_DEFAULT_SSL_PORT 994 |
|
zacw@1300
|
36 |
|
|
zacw@1300
|
37 |
#define IRC_DEFAULT_CHARSET "UTF-8" |
|
zacw@1300
|
38 |
#define IRC_DEFAULT_AUTODETECT FALSE |
|
zacw@1300
|
39 |
#define IRC_DEFAULT_ALIAS "purple" |
|
zacw@1300
|
40 |
|
|
zacw@1300
|
41 |
#define IRC_DEFAULT_QUIT "Leaving." |
|
zacw@1300
|
42 |
|
|
zacw@1300
|
43 |
#define IRC_INITIAL_BUFSIZE 1024 |
|
zacw@1300
|
44 |
|
|
zacw@1300
|
45 |
#define IRC_NAMES_FLAG "irc-namelist" |
|
zacw@1300
|
46 |
|
|
zacw@1300
|
47 |
|
|
zacw@1300
|
48 |
enum { IRC_USEROPT_SERVER, IRC_USEROPT_PORT, IRC_USEROPT_CHARSET }; |
|
zacw@1300
|
49 |
enum irc_state { IRC_STATE_NEW, IRC_STATE_ESTABLISHED }; |
|
zacw@1300
|
50 |
|
|
zacw@1300
|
51 |
struct irc_conn { |
|
zacw@1300
|
52 |
PurpleAccount *account; |
|
zacw@1300
|
53 |
GHashTable *msgs; |
|
zacw@1300
|
54 |
GHashTable *cmds; |
|
zacw@1300
|
55 |
char *server; |
|
zacw@1300
|
56 |
int fd; |
|
zacw@1300
|
57 |
guint timer; |
|
zacw@1300
|
58 |
GHashTable *buddies; |
|
zacw@1300
|
59 |
|
|
zacw@1300
|
60 |
gboolean ison_outstanding; |
|
zacw@1300
|
61 |
|
|
zacw@1300
|
62 |
char *inbuf; |
|
zacw@1300
|
63 |
int inbuflen; |
|
zacw@1300
|
64 |
int inbufused; |
|
zacw@1300
|
65 |
|
|
zacw@1300
|
66 |
GString *motd; |
|
zacw@1300
|
67 |
GString *names; |
|
zacw@1300
|
68 |
struct _whois { |
|
zacw@1300
|
69 |
char *nick; |
|
zacw@1300
|
70 |
char *away; |
|
zacw@1300
|
71 |
char *userhost; |
|
zacw@1300
|
72 |
char *name; |
|
zacw@1300
|
73 |
char *server; |
|
zacw@1300
|
74 |
char *serverinfo; |
|
zacw@1300
|
75 |
char *channels; |
|
zacw@1300
|
76 |
int ircop; |
|
zacw@1300
|
77 |
int identified; |
|
zacw@1300
|
78 |
int idle; |
|
zacw@1300
|
79 |
time_t signon; |
|
zacw@1300
|
80 |
} whois; |
|
zacw@1300
|
81 |
PurpleRoomlist *roomlist; |
|
zacw@1300
|
82 |
PurpleSslConnection *gsc; |
|
zacw@1300
|
83 |
|
|
zacw@1300
|
84 |
gboolean quitting; |
|
zacw@1300
|
85 |
|
|
zacw@1300
|
86 |
PurpleCircBuffer *outbuf; |
|
zacw@1300
|
87 |
guint writeh; |
|
zacw@1300
|
88 |
|
|
zacw@1300
|
89 |
time_t recv_time; |
|
zacw@1300
|
90 |
|
|
zacw@1300
|
91 |
char *mode_chars; |
|
zacw@1300
|
92 |
char *reqnick; |
|
zacw@1300
|
93 |
gboolean nickused; |
|
zacw@1300
|
94 |
}; |
|
zacw@1300
|
95 |
|
|
zacw@1300
|
96 |
struct irc_buddy { |
|
zacw@1300
|
97 |
char *name; |
|
zacw@1300
|
98 |
gboolean online; |
|
zacw@1300
|
99 |
gboolean flag; |
|
zacw@1300
|
100 |
}; |
|
zacw@1300
|
101 |
|
|
zacw@1300
|
102 |
typedef int (*IRCCmdCallback) (struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
103 |
|
|
zacw@1300
|
104 |
int irc_send(struct irc_conn *irc, const char *buf); |
|
zacw@1300
|
105 |
gboolean irc_blist_timeout(struct irc_conn *irc); |
|
zacw@1300
|
106 |
|
|
zacw@1300
|
107 |
char *irc_escape_privmsg(const char *text, gssize length); |
|
zacw@1300
|
108 |
|
|
zacw@1300
|
109 |
char *irc_mirc2html(const char *string); |
|
zacw@1300
|
110 |
char *irc_mirc2txt(const char *string); |
|
zacw@1300
|
111 |
|
|
zacw@1300
|
112 |
const char *irc_nick_skip_mode(struct irc_conn *irc, const char *string); |
|
zacw@1300
|
113 |
|
|
zacw@1300
|
114 |
gboolean irc_ischannel(const char *string); |
|
zacw@1300
|
115 |
|
|
zacw@1300
|
116 |
void irc_register_commands(void); |
|
zacw@1300
|
117 |
void irc_msg_table_build(struct irc_conn *irc); |
|
zacw@1300
|
118 |
void irc_parse_msg(struct irc_conn *irc, char *input); |
|
zacw@1300
|
119 |
char *irc_parse_ctcp(struct irc_conn *irc, const char *from, const char *to, const char *msg, int notice); |
|
zacw@1300
|
120 |
char *irc_format(struct irc_conn *irc, const char *format, ...); |
|
zacw@1300
|
121 |
|
|
zacw@1300
|
122 |
void irc_msg_default(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
123 |
void irc_msg_away(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
124 |
void irc_msg_badmode(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
125 |
void irc_msg_badnick(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
126 |
void irc_msg_ban(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
127 |
void irc_msg_banfull(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
128 |
void irc_msg_banned(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
129 |
void irc_msg_chanmode(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
130 |
void irc_msg_endwhois(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
131 |
void irc_msg_features(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
132 |
void irc_msg_invite(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
133 |
void irc_msg_inviteonly(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
134 |
void irc_msg_ison(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
135 |
void irc_msg_join(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
136 |
void irc_msg_kick(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
137 |
void irc_msg_list(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
138 |
void irc_msg_luser(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
139 |
void irc_msg_mode(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
140 |
void irc_msg_motd(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
141 |
void irc_msg_names(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
142 |
void irc_msg_nick(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
143 |
void irc_msg_nickused(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
144 |
void irc_msg_nochan(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
145 |
void irc_msg_nonick(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
146 |
void irc_msg_nochangenick(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
147 |
void irc_msg_nosend(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
148 |
void irc_msg_notice(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
149 |
void irc_msg_notinchan(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
150 |
void irc_msg_notop(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
151 |
void irc_msg_part(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
152 |
void irc_msg_ping(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
153 |
void irc_msg_pong(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
154 |
void irc_msg_privmsg(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
155 |
void irc_msg_quit(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
156 |
void irc_msg_regonly(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
157 |
void irc_msg_time(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
158 |
void irc_msg_topic(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
159 |
void irc_msg_unavailable(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
160 |
void irc_msg_unknown(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
161 |
void irc_msg_wallops(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
162 |
void irc_msg_whois(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
163 |
|
|
zacw@1300
|
164 |
void irc_msg_ignore(struct irc_conn *irc, const char *name, const char *from, char **args); |
|
zacw@1300
|
165 |
|
|
zacw@1300
|
166 |
void irc_cmd_table_build(struct irc_conn *irc); |
|
zacw@1300
|
167 |
|
|
zacw@1300
|
168 |
int irc_cmd_default(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
169 |
int irc_cmd_away(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
170 |
int irc_cmd_ctcp(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
171 |
int irc_cmd_ctcp_action(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
172 |
int irc_cmd_ctcp_version(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
173 |
int irc_cmd_invite(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
174 |
int irc_cmd_join(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
175 |
int irc_cmd_kick(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
176 |
int irc_cmd_list(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
177 |
int irc_cmd_mode(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
178 |
int irc_cmd_names(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
179 |
int irc_cmd_nick(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
180 |
int irc_cmd_op(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
181 |
int irc_cmd_privmsg(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
182 |
int irc_cmd_part(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
183 |
int irc_cmd_ping(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
184 |
int irc_cmd_quit(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
185 |
int irc_cmd_quote(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
186 |
int irc_cmd_query(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
187 |
int irc_cmd_remove(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
188 |
int irc_cmd_service(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
189 |
int irc_cmd_time(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
190 |
int irc_cmd_topic(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
191 |
int irc_cmd_wallops(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
192 |
int irc_cmd_whois(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
193 |
int irc_cmd_whowas(struct irc_conn *irc, const char *cmd, const char *target, const char **args); |
|
zacw@1300
|
194 |
|
|
zacw@1300
|
195 |
PurpleXfer *irc_dccsend_new_xfer(PurpleConnection *gc, const char *who); |
|
zacw@1300
|
196 |
void irc_dccsend_send_file(PurpleConnection *gc, const char *who, const char *file); |
|
zacw@1300
|
197 |
void irc_dccsend_recv(struct irc_conn *irc, const char *from, const char *msg); |
|
zacw@1300
|
198 |
#endif /* _PURPLE_IRC_H */ |