M src/common/ctcp.c => src/common/ctcp.c +1 -1
@@ 147,7 147,7 @@ ctcp_handle (session *sess, char *to, char *nick, char *ip,
g_snprintf (outbuf, sizeof (outbuf), "VERSION HexChat "PACKAGE_VERSION" / %s",
get_sys_str (1));
#endif
- serv->p_nctcp (serv, nick, outbuf);
+ irc_nctcp (serv, nick, outbuf);
}
if (word[4][1] == '\0')
M src/common/dcc.c => src/common/dcc.c +5 -5
@@ 1392,7 1392,7 @@ dcc_connect (struct DCC *dcc)
else
g_snprintf (tbuf, sizeof (tbuf), "DCC CHAT chat %u %d %d",
dcc->addr, dcc->port, dcc->pasvid);
- dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf);
+ irc_ctcp (dcc->serv, dcc->nick, tbuf);
}
else
{
@@ 1897,7 1897,7 @@ dcc_send (struct session *sess, char *to, char *filename, gint64 maxcps, int pas
file_part (dcc->file), dcc->addr,
dcc->port, dcc->size);
}
- sess->server->p_ctcp (sess->server, to, outbuf);
+ irc_ctcp (sess->server, to, outbuf);
EMIT_SIGNAL (XP_TE_DCCOFFER, sess, file_part (dcc->file),
to, dcc->file, NULL, 0);
@@ 2323,7 2323,7 @@ dcc_chat (struct session *sess, char *nick, int passive)
g_snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat %u %d",
dcc->addr, dcc->port);
}
- dcc->serv->p_ctcp (dcc->serv, nick, outbuf);
+ irc_ctcp (dcc->serv, nick, outbuf);
EMIT_SIGNAL (XP_TE_DCCCHATOFFERING, sess, nick, NULL, NULL, NULL, 0);
} else
{
@@ 2356,7 2356,7 @@ dcc_resume (struct DCC *dcc)
if (dcc->pasvid)
sprintf (tbuf + strlen (tbuf), " %d", dcc->pasvid);
- dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf);
+ irc_ctcp (dcc->serv, dcc->nick, tbuf);
return 1;
}
@@ 2601,7 2601,7 @@ handle_dcc (struct session *sess, char *nick, char *word[], char *word_eol[],
"DCC ACCEPT %s %d %" G_GUINT64_FORMAT,
file_part (dcc->file), port, dcc->resumable);
- dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf);
+ irc_ctcp (dcc->serv, dcc->nick, tbuf);
}
sprintf (tbuf, "%" G_GUINT64_FORMAT, dcc->pos);
EMIT_SIGNAL_TAGS (XP_TE_DCCRESUMEREQUEST, sess, nick, file_part (dcc->file),
M src/common/hexchat.c => src/common/hexchat.c +4 -4
@@ 48,6 48,7 @@
#include "plugin-timer.h"
#include "notify.h"
#include "server.h"
+#include "proto-irc.h"
#include "servlist.h"
#include "outbound.h"
#include "text.h"
@@ 271,7 272,7 @@ lag_check (void)
else
{
g_snprintf (tbuf, sizeof (tbuf), "LAG%lu", tim);
- serv->p_ping (serv, "", tbuf);
+ irc_ping (serv, "", tbuf);
if (!serv->lag_sent)
{
@@ 317,8 318,7 @@ doover:
{
sess->done_away_check = TRUE;
sess->doing_who = TRUE;
- /* this'll send a WHO #channel */
- sess->server->p_away_status (sess->server, sess->channel);
+ irc_who (sess->server, sess->channel);
sent += sess->total;
}
}
@@ 518,7 518,7 @@ new_ircwindow (ircconn *serv, char *name, int type, int focus)
switch (type)
{
case SESS_SERVER:
- serv = server_new ();
+ serv = ircconn_new ();
if (prefs.hex_gui_tab_server)
sess = session_new (serv, name, SESS_SERVER, focus);
else
M src/common/hexchat.h => src/common/hexchat.h +11 -35
@@ 433,13 433,22 @@ typedef struct session
#define MECH_SCRAM_SHA_256 3
#define MECH_SCRAM_SHA_512 4
+typedef struct conn
+{
+
+} conn;
+
typedef struct ircconn
{
+ struct conn c;
+
/* server control operations (in server*.c) */
int (*cleanup)(struct ircconn *);
void (*flush_queue)(struct ircconn *);
void (*auto_reconnect)(struct ircconn *, int send_quit, int err);
+ /* irc protocol functions (in proto*.c) */
+ void (*p_inline)(struct ircconn *, char *buf, int len);
void (*p_connected)(struct ircconn *);
void (*p_disconnected)(struct ircconn *, int, int);
void (*p_ssl_message)(struct ircconn *, const char *);
@@ 455,42 464,9 @@ typedef struct ircconn
void (*p_throttle_update)(struct ircconn *);
void (*p_cleanup)(struct ircconn *);
void (*p_stopconnect)(struct ircconn *);
-
- /* irc protocol functions (in proto*.c) */
- void (*p_inline)(struct ircconn *, char *buf, int len);
- void (*p_invite)(struct ircconn *, char *channel, char *nick);
- void (*p_cycle)(struct ircconn *, char *channel, char *key);
- void (*p_ctcp)(struct ircconn *, char *to, char *msg);
- void (*p_nctcp)(struct ircconn *, char *to, char *msg);
+ int (*p_cmp)(const char *s1, const char *s2);
void (*p_quit)(struct ircconn *);
- void (*p_kick)(struct ircconn *, char *channel, char *nick, char *reason);
- void (*p_part)(struct ircconn *, char *channel, char *reason);
- void (*p_ns_identify)(struct ircconn *, char *pass);
- void (*p_ns_ghost)(struct ircconn *, char *usname, char *pass);
- void (*p_join)(struct ircconn *, char *channel, char *key);
- void (*p_join_list)(struct ircconn *, GSList *favorites);
- void (*p_login)(struct ircconn *, char *user, char *realname);
- void (*p_join_info)(struct ircconn *, char *channel);
- void (*p_mode)(struct ircconn *, char *target, char *mode);
- void (*p_user_list)(struct ircconn *, char *channel);
- void (*p_away_status)(struct ircconn *, char *channel);
- void (*p_whois)(struct ircconn *, char *nicks);
- void (*p_get_ip)(struct ircconn *, char *nick);
- void (*p_get_ip_uh)(struct ircconn *, char *nick);
- void (*p_set_back)(struct ircconn *);
- void (*p_set_away)(struct ircconn *, char *reason);
- void (*p_message)(struct ircconn *, char *channel, char *text);
- void (*p_action)(struct ircconn *, char *channel, char *act);
- void (*p_notice)(struct ircconn *, char *channel, char *text);
- void (*p_topic)(struct ircconn *, char *channel, char *topic);
- void (*p_list_channels)(struct ircconn *, char *arg, int min_users);
- void (*p_change_nick)(struct ircconn *, char *new_nick);
- void (*p_names)(struct ircconn *, char *channel);
- void (*p_ping)(struct ircconn *, char *to, char *timestring);
-/* void (*p_set_away)(struct ircconn *);*/
- int (*p_raw)(struct ircconn *, char *raw);
- int (*p_cmp)(const char *s1, const char *s2);
-
+
int port;
int sok; /* is equal to sok4 or sok6 (the one we are using) */
int sok4; /* tcp4 socket */
M src/common/inbound.c => src/common/inbound.c +12 -12
@@ 42,6 42,7 @@
#include "outbound.h"
#include "inbound.h"
#include "server.h"
+#include "proto-irc.h"
#include "servlist.h"
#include "text.h"
#include "ctcp.h"
@@ 471,7 472,7 @@ inbound_chanmsg (ircconn *serv, session *sess, char *chan, char *from,
if (fromme)
{
if (prefs.hex_away_auto_unmark && serv->is_away && !tags_data->timestamp)
- sess->server->p_set_back (sess->server);
+ irc_set_back (sess->server);
EMIT_SIGNAL_TAGS (XP_TE_UCHANMSG, sess, from, text, nickchar, NULL, 0, tags_data);
return;
}
@@ 619,14 620,13 @@ inbound_ujoin (ircconn *serv, char *chan, char *nick, char *ip,
sess->end_of_names = FALSE;
/* sends a MODE */
- serv->p_join_info (sess->server, chan);
+ irc_join_info (sess->server, chan);
EMIT_SIGNAL_TAGS (XP_TE_UJOIN, sess, nick, chan, ip, NULL, 0, tags_data);
if (prefs.hex_irc_who_join)
{
- /* sends WHO #channel */
- serv->p_user_list (sess->server, chan);
+ irc_who (sess->server, chan);
sess->doing_who = TRUE;
}
}
@@ 642,7 642,7 @@ inbound_ukick (ircconn *serv, char *chan, char *kicker, char *reason,
clear_channel (sess);
if (prefs.hex_irc_auto_rejoin)
{
- serv->p_join (serv, chan, sess->channelkey);
+ irc_join (serv, chan, sess->channelkey);
safe_strcpy (sess->waitchannel, chan, CHANLEN);
}
}
@@ 1172,7 1172,7 @@ check_autojoin_channels (ircconn *serv)
if (sess_channels)
{
- serv->p_join_list (serv, sess_channels);
+ irc_join_list (serv, sess_channels);
g_slist_free_full (sess_channels, (GDestroyNotify) servlist_favchan_free);
}
else
@@ 1180,7 1180,7 @@ check_autojoin_channels (ircconn *serv)
/* If there's no session, just autojoin to favorites. */
if (serv->favlist)
{
- serv->p_join_list (serv, serv->favlist);
+ irc_join_list (serv, serv->favlist);
i++;
/* FIXME this is not going to work and is not needed either. server_free() does the job already. */
@@ 1213,7 1213,7 @@ inbound_next_nick (session *sess, char *nick, int error,
{
newnick = net->nick2;
}
- serv->p_change_nick (serv, newnick);
+ irc_change_nick (serv, newnick);
if (error)
{
EMIT_SIGNAL_TAGS (XP_TE_NICKERROR, sess, nick, newnick, NULL, NULL, 0, tags_data);
@@ 1225,7 1225,7 @@ inbound_next_nick (session *sess, char *nick, int error,
break;
case 3:
- serv->p_change_nick (serv, prefs.hex_irc_nick3);
+ irc_change_nick (serv, prefs.hex_irc_nick3);
if (error)
{
EMIT_SIGNAL_TAGS (XP_TE_NICKERROR, sess, nick, prefs.hex_irc_nick3, NULL, NULL, 0, tags_data);
@@ 1329,7 1329,7 @@ set_default_modes (ircconn *serv)
if (modes[1] != '\0')
{
- serv->p_mode (serv, serv->nick, modes);
+ irc_mode (serv, serv->nick, modes);
}
}
@@ 1544,7 1544,7 @@ inbound_login_end (session *sess, char *text, const message_tags_data *tags_data
if (prefs.hex_dcc_ip_from_server && serv->use_who)
{
serv->skip_next_userhost = TRUE;
- serv->p_get_ip_uh (serv, serv->nick); /* sends USERHOST mynick */
+ irc_userhost (serv, serv->nick); /* sends USERHOST mynick */
}
set_default_modes (serv);
@@ 1567,7 1567,7 @@ inbound_login_end (session *sess, char *text, const message_tags_data *tags_data
/* send nickserv password */
if (net && net->pass && inbound_nickserv_login (serv))
{
- serv->p_ns_identify (serv, net->pass);
+ irc_ns_identify (serv, net->pass);
}
/* wait for join if command or nickserv set */
M src/common/modes.c => src/common/modes.c +2 -1
@@ 24,6 24,7 @@
#include "hexchatc.h"
#include "modes.h"
#include "server.h"
+#include "proto-irc.h"
#include "text.h"
#include "fe.h"
#include "util.h"
@@ 117,7 118,7 @@ send_channel_modes (session *sess, char *tbuf, char *word[], int wpos,
strcat (tbuf, " ");
strcat (tbuf, word[wpos + i]);
}
- serv->p_mode (serv, sess->channel, tbuf);
+ irc_mode (serv, sess->channel, tbuf);
wpos += usable_modes;
}
M src/common/notify.c => src/common/notify.c +5 -4
@@ 35,6 35,7 @@
#include "cfgfiles.h"
#include "fe.h"
#include "server.h"
+#include "proto-irc.h"
#include "text.h"
#include "util.h"
#include "hexchatc.h"
@@ 247,7 248,7 @@ notify_announce_online (ircconn * serv, struct notify_per_server *servnot,
/* Let's do whois with idle time (like in /quote WHOIS %s %s) */
char *wii_str = g_strdup_printf ("%s %s", nick, nick);
- serv->p_whois (serv, wii_str);
+ irc_user_whois (serv, wii_str);
g_free (wii_str);
}
}
@@ 350,7 351,7 @@ notify_watch (ircconn * serv, char *nick, int add)
else
return;
- serv->p_raw (serv, tbuf);
+ irc_raw (serv, tbuf);
}
static void
@@ 387,7 388,7 @@ notify_flush_watches (ircconn * serv, GSList *from, GSList *end)
g_strlcat (tbuf, notify->name, sizeof(tbuf));
list = list->next;
}
- serv->p_raw (serv, tbuf);
+ irc_raw (serv, tbuf);
}
/* called when logging in. e.g. when End of motd. */
@@ 521,7 522,7 @@ notify_checklist_for_server (ircconn *serv)
}
if (i)
- serv->p_raw (serv, outbuf);
+ irc_raw (serv, outbuf);
}
int
M src/common/outbound.c => src/common/outbound.c +48 -47
@@ 52,6 52,7 @@
#include "hexchatc.h"
#include "servlist.h"
#include "server.h"
+#include "proto-irc.h"
#include "tree.h"
#include "outbound.h"
#include "chanopt.h"
@@ 81,12 82,12 @@ server_sendpart (ircconn * serv, char *channel, char *reason)
if (!reason)
{
reason = random_line (prefs.hex_irc_part_reason);
- serv->p_part (serv, channel, reason);
+ irc_part (serv, channel, reason);
g_free (reason);
} else
{
/* reason set by /quit, /close argument */
- serv->p_part (serv, channel, reason);
+ irc_part (serv, channel, reason);
}
}
@@ 316,7 317,7 @@ cmd_away (struct session *sess, char *tbuf, char *word[], char *word_eol[])
/* must manage memory pointed to by random_line() */
reason = random_line (prefs.hex_away_reason);
}
- sess->server->p_set_away (sess->server, reason);
+ irc_set_away (sess->server, reason);
if (sess->server->last_away_reason != reason)
{
@@ 339,7 340,7 @@ cmd_back (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
if (sess->server->is_away)
{
- sess->server->p_set_back (sess->server);
+ irc_set_back (sess->server);
}
else
{
@@ 475,7 476,7 @@ ban (session * sess, char *tbuf, char *mask, char *bantypestr, int deop)
if (banmask)
{
- serv->p_mode (serv, sess->channel, banmask);
+ irc_mode (serv, sess->channel, banmask);
g_free (banmask);
}
}
@@ 490,7 491,7 @@ cmd_ban (struct session *sess, char *tbuf, char *word[], char *word_eol[])
ban (sess, tbuf, mask, word[3], 0);
} else
{
- sess->server->p_mode (sess->server, sess->channel, "+b"); /* banlist */
+ irc_mode (sess->server, sess->channel, "+b"); /* banlist */
}
return TRUE;
@@ 634,7 635,7 @@ cmd_ctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[])
cmd += mbl;
}
- sess->server->p_ctcp (sess->server, to, msg);
+ irc_ctcp (sess->server, to, msg);
EMIT_SIGNAL (XP_TE_CTCPSEND, sess, to, msg, NULL, NULL, 0);
@@ 688,7 689,7 @@ cmd_cycle (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (chan_sess && chan_sess->type == SESS_CHANNEL)
{
key = chan_sess->channelkey;
- sess->server->p_cycle (sess->server, chan, key);
+ irc_cycle (sess->server, chan, key);
return TRUE;
}
}
@@ 1309,7 1310,7 @@ static int
mkick_cb (struct User *user, multidata *data)
{
if (!user->op && !user->me)
- data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason);
+ irc_kick (data->sess->server, data->sess->channel, user->nick, data->reason);
return TRUE;
}
@@ 1317,7 1318,7 @@ static int
mkickops_cb (struct User *user, multidata *data)
{
if (user->op && !user->me)
- data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason);
+ irc_kick (data->sess->server, data->sess->channel, user->nick, data->reason);
return TRUE;
}
@@ 1377,7 1378,7 @@ cmd_dns (struct session *sess, char *tbuf, char *word[], char *word_eol[])
do_dns (sess, user->nick, user->hostname, &no_tags);
} else
{
- sess->server->p_get_ip (sess->server, nick);
+ irc_who (sess->server, nick);
sess->server->doing_dns = TRUE;
}
} else
@@ 2103,7 2104,7 @@ cmd_ghost (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (!word[2][0])
return FALSE;
- sess->server->p_ns_ghost (sess->server, word[2], word[3]);
+ irc_ns_ghost (sess->server, word[2], word[3]);
return TRUE;
}
@@ 2277,7 2278,7 @@ cmd_id (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
if (word[2][0])
{
- sess->server->p_ns_identify (sess->server, word[2]);
+ irc_ns_identify (sess->server, word[2]);
return TRUE;
}
@@ 2367,9 2368,9 @@ cmd_invite (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (!*word[2])
return FALSE;
if (*word[3])
- sess->server->p_invite (sess->server, word[3], word[2]);
+ irc_invite (sess->server, word[3], word[2]);
else
- sess->server->p_invite (sess->server, sess->channel, word[2]);
+ irc_invite (sess->server, sess->channel, word[2]);
return TRUE;
}
@@ 2385,7 2386,7 @@ cmd_join (struct session *sess, char *tbuf, char *word[], char *word_eol[])
sess_find = find_channel (sess->server, chan);
if (!sess_find)
{
- sess->server->p_join (sess->server, chan, pass);
+ irc_join (sess->server, chan, pass);
if (sess->channel[0] == 0 && sess->waitchannel[0])
{
po = strchr (chan, ',');
@@ 2409,7 2410,7 @@ cmd_kick (struct session *sess, char *tbuf, char *word[], char *word_eol[])
char *reason = word_eol[3];
if (*nick)
{
- sess->server->p_kick (sess->server, sess->channel, nick, reason);
+ irc_kick (sess->server, sess->channel, nick, reason);
return TRUE;
}
return FALSE;
@@ 2435,7 2436,7 @@ cmd_kickban (struct session *sess, char *tbuf, char *word[], char *word_eol[])
} else
ban (sess, tbuf, nick, "", (user && user->op));
- sess->server->p_kick (sess->server, sess->channel, nick, reason);
+ irc_kick (sess->server, sess->channel, nick, reason);
return TRUE;
}
@@ 2680,7 2681,7 @@ cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
/* print it to screen */
inbound_action (sess, sess->channel, sess->server->nick, "", act, TRUE, FALSE,
- &no_tags);
+ &no_tags);
} else
{
/* DCC CHAT failed, try through server */
@@ 2688,7 2689,7 @@ cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
while ((split_text = split_up_text (sess, act + offset, cmd_length, split_text)))
{
- sess->server->p_action (sess->server, sess->channel, split_text);
+ irc_action (sess->server, sess->channel, split_text);
/* print it to screen */
if (!sess->server->have_echo_message)
inbound_action (sess, sess->channel, sess->server->nick, "",
@@ 2701,7 2702,7 @@ cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[])
g_free (split_text);
}
- sess->server->p_action (sess->server, sess->channel, act + offset);
+ irc_action (sess->server, sess->channel, act + offset);
/* print it to screen */
if (!sess->server->have_echo_message)
inbound_action (sess, sess->channel, sess->server->nick, "",
@@ 2730,13 2731,13 @@ cmd_mode (struct session *sess, char *tbuf, char *word[], char *word_eol[])
&& (is_channel (sess->server, word[2]) || !rfc_casecmp (sess->server->nick, word[2])))
)
{
- sess->server->p_mode (sess->server, word[2], word_eol[3]);
+ irc_mode (sess->server, word[2], word_eol[3]);
}
else
{
if(sess->channel[0] == 0)
return FALSE;
- sess->server->p_mode (sess->server, sess->channel, word_eol[2]);
+ irc_mode (sess->server, sess->channel, word_eol[2]);
}
return TRUE;
}
@@ 2809,14 2810,14 @@ cmd_msg (struct session *sess, char *tbuf, char *word[], char *word_eol[])
while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text)))
{
- sess->server->p_message (sess->server, nick, split_text);
+ irc_message (sess->server, nick, split_text);
if (*split_text)
offset += strlen(split_text);
g_free (split_text);
}
- sess->server->p_message (sess->server, nick, msg + offset);
+ irc_message (sess->server, nick, msg + offset);
offset = 0;
}
newsess = find_dialog (sess->server, nick);
@@ 2865,9 2866,9 @@ static int
cmd_names (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
if (*word[2])
- sess->server->p_names (sess->server, word[2]);
+ irc_names (sess->server, word[2]);
else
- sess->server->p_names (sess->server, sess->channel);
+ irc_names (sess->server, sess->channel);
return TRUE;
}
@@ 2876,7 2877,7 @@ cmd_nctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
if (*word_eol[3])
{
- sess->server->p_nctcp (sess->server, word[2], word_eol[3]);
+ irc_nctcp (sess->server, word[2], word_eol[3]);
return TRUE;
}
return FALSE;
@@ 2904,7 2905,7 @@ cmd_nick (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (*nick)
{
if (sess->server->connected)
- sess->server->p_change_nick (sess->server, nick);
+ irc_change_nick (sess->server, nick);
else
{
message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT;
@@ 2928,7 2929,7 @@ cmd_notice (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
while ((split_text = split_up_text (sess, text + offset, cmd_length, split_text)))
{
- sess->server->p_notice (sess->server, word[2], split_text);
+ irc_notice (sess->server, word[2], split_text);
EMIT_SIGNAL (XP_TE_NOTICESEND, sess, word[2], split_text, NULL, NULL, 0);
if (*split_text)
@@ 2937,7 2938,7 @@ cmd_notice (struct session *sess, char *tbuf, char *word[], char *word_eol[])
g_free (split_text);
}
- sess->server->p_notice (sess->server, word[2], text + offset);
+ irc_notice (sess->server, word[2], text + offset);
EMIT_SIGNAL (XP_TE_NOTICESEND, sess, word[2], text + offset, NULL, NULL, 0);
return TRUE;
@@ 3031,7 3032,7 @@ cmd_ping (struct session *sess, char *tbuf, char *word[], char *word_eol[])
tim = make_ping_time ();
g_snprintf (timestring, sizeof (timestring), "%lu", tim);
- sess->server->p_ping (sess->server, to, timestring);
+ irc_ping (sess->server, to, timestring);
return TRUE;
}
@@ 3085,7 3086,7 @@ cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[])
while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text)))
{
- sess->server->p_message (sess->server, nick, split_text);
+ irc_message (sess->server, nick, split_text);
inbound_chanmsg (nick_sess->server, nick_sess, nick_sess->channel,
nick_sess->server->nick, split_text, TRUE, FALSE,
&no_tags);
@@ 3095,7 3096,7 @@ cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[])
g_free (split_text);
}
- sess->server->p_message (sess->server, nick, msg + offset);
+ irc_message (sess->server, nick, msg + offset);
inbound_chanmsg (nick_sess->server, nick_sess, nick_sess->channel,
nick_sess->server->nick, msg + offset, TRUE, FALSE,
&no_tags);
@@ 3124,13 3125,13 @@ cmd_quiet (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (quietmask)
{
- serv->p_mode (serv, sess->channel, quietmask);
+ irc_mode (serv, sess->channel, quietmask);
g_free (quietmask);
}
}
else
{
- serv->p_mode (serv, sess->channel, "+q"); /* quietlist */
+ irc_mode (serv, sess->channel, "+q"); /* quietlist */
}
return TRUE;
@@ 3166,7 3167,7 @@ cmd_quote (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
char *raw = word_eol[2];
- return sess->server->p_raw (sess->server, raw);
+ return irc_raw (sess->server, raw);
}
static int
@@ 3549,9 3550,9 @@ static int
cmd_topic (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
if (word[2][0] && is_channel (sess->server, word[2]))
- sess->server->p_topic (sess->server, word[2], word_eol[3]);
+ irc_topic (sess->server, word[2], word_eol[3]);
else
- sess->server->p_topic (sess->server, sess->channel, word_eol[2]);
+ irc_topic (sess->server, sess->channel, word_eol[2]);
return TRUE;
}
@@ 3707,9 3708,9 @@ url_join_only (ircconn *serv, char *tbuf, char *channel, char *key)
/* tbuf is 4kb */
safe_strcpy ((tbuf + 1), channel, 256);
if (key)
- serv->p_join (serv, tbuf, key);
+ irc_join (serv, tbuf, key);
else
- serv->p_join (serv, tbuf, "");
+ irc_join (serv, tbuf, "");
}
static int
@@ 3832,7 3833,7 @@ wallchop_cb (struct User *user, multidata *data)
data->i = 0;
sprintf (data->tbuf + strlen (data->tbuf),
" :[@%s] %s", data->sess->channel, data->reason);
- data->sess->server->p_raw (data->sess->server, data->tbuf);
+ irc_raw (data->sess->server, data->tbuf);
strcpy (data->tbuf, "NOTICE ");
}
@@ 3859,8 3860,8 @@ cmd_wallchop (struct session *sess, char *tbuf, char *word[],
if (data.i)
{
sprintf (tbuf + strlen (tbuf),
- " :[@%s] %s", sess->channel, word_eol[2]);
- sess->server->p_raw (sess->server, tbuf);
+ " :[@%s] %s", sess->channel, word_eol[2]);
+ irc_raw (sess->server, tbuf);
}
return TRUE;
@@ 4599,7 4600,7 @@ handle_say (session *sess, char *text, int check_spch)
if (!sess->server->have_echo_message)
inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick,
split_text, TRUE, FALSE, &no_tags);
- sess->server->p_message (sess->server, sess->channel, split_text);
+ irc_message (sess->server, sess->channel, split_text);
if (*split_text)
offset += strlen(split_text);
@@ 4610,7 4611,7 @@ handle_say (session *sess, char *text, int check_spch)
if (!sess->server->have_echo_message)
inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick,
text + offset, TRUE, FALSE, &no_tags);
- sess->server->p_message (sess->server, sess->channel, text + offset);
+ irc_message (sess->server, sess->channel, text + offset);
} else
{
notc_msg (sess);
@@ 4814,7 4815,7 @@ handle_command (session *sess, char *cmd, int check_spch)
else
{
/* unknown command, just send it to the server and hope */
- sess->server->p_raw (sess->server, cmd);
+ irc_raw (sess->server, cmd);
}
}
M src/common/proto-irc.c => src/common/proto-irc.c +31 -79
@@ 99,7 99,7 @@ irc_nickserv (ircconn *serv, char *cmd, char *arg1, char *arg2, char *arg3)
}
}
-static void
+void
irc_ns_identify (ircconn *serv, char *pass)
{
switch (serv->loginmethod)
@@ 117,7 117,7 @@ irc_ns_identify (ircconn *serv, char *pass)
}
}
-static void
+void
irc_ns_ghost (ircconn *serv, char *usname, char *pass)
{
if (serv->loginmethod != LOGIN_CHALLENGEAUTH)
@@ 126,7 126,7 @@ irc_ns_ghost (ircconn *serv, char *usname, char *pass)
}
}
-static void
+void
irc_join (ircconn *serv, char *channel, char *key)
{
if (key[0])
@@ 161,7 161,7 @@ irc_join_list_flush (ircconn *serv, GString *channels, GString *keys, int send_k
* to get around the 512 limit.
*/
-static void
+void
irc_join_list (ircconn *serv, GSList *favorites)
{
int first_item = 1; /* determine whether we add commas or not */
@@ 229,7 229,7 @@ irc_join_list (ircconn *serv, GSList *favorites)
g_slist_free (favlist);
}
-static void
+void
irc_part (ircconn *serv, char *channel, char *reason)
{
if (reason[0])
@@ 263,13 263,13 @@ irc_quit (ircconn *serv)
}
}
-static void
+void
irc_set_back (ircconn *serv)
{
tcp_send_len (serv, "AWAY\r\n", 6);
}
-static void
+void
irc_set_away (ircconn *serv, char *reason)
{
if (reason)
@@ 285,25 285,25 @@ irc_set_away (ircconn *serv, char *reason)
tcp_sendf (serv, "AWAY :%s\r\n", reason);
}
-static void
+void
irc_ctcp (ircconn *serv, char *to, char *msg)
{
tcp_sendf (serv, "PRIVMSG %s :\001%s\001\r\n", to, msg);
}
-static void
+void
irc_nctcp (ircconn *serv, char *to, char *msg)
{
tcp_sendf (serv, "NOTICE %s :\001%s\001\r\n", to, msg);
}
-static void
+void
irc_cycle (ircconn *serv, char *channel, char *key)
{
tcp_sendf (serv, "PART %s\r\nJOIN %s %s\r\n", channel, channel, key);
}
-static void
+void
irc_kick (ircconn *serv, char *channel, char *nick, char *reason)
{
if (reason[0])
@@ 312,13 312,13 @@ irc_kick (ircconn *serv, char *channel, char *nick, char *reason)
tcp_sendf (serv, "KICK %s %s\r\n", channel, nick);
}
-static void
+void
irc_invite (ircconn *serv, char *channel, char *nick)
{
tcp_sendf (serv, "INVITE %s %s\r\n", nick, channel);
}
-static void
+void
irc_mode (ircconn *serv, char *target, char *mode)
{
tcp_sendf (serv, "MODE %s %s\r\n", target, mode);
@@ 326,16 326,14 @@ irc_mode (ircconn *serv, char *target, char *mode)
/* find channel info when joined */
-static void
+void
irc_join_info (ircconn *serv, char *channel)
{
tcp_sendf (serv, "MODE %s\r\n", channel);
}
-/* initiate userlist retreival */
-
-static void
-irc_user_list (ircconn *serv, char *channel)
+void
+irc_who (ircconn *serv, char *channel)
{
if (serv->have_whox)
tcp_sendf (serv, "WHO %s %%chtsunfra,152\r\n", channel);
@@ 345,57 343,42 @@ irc_user_list (ircconn *serv, char *channel)
/* userhost */
-static void
+void
irc_userhost (ircconn *serv, char *nick)
{
tcp_sendf (serv, "USERHOST %s\r\n", nick);
}
-static void
-irc_away_status (ircconn *serv, char *channel)
-{
- if (serv->have_whox)
- tcp_sendf (serv, "WHO %s %%chtsunfra,152\r\n", channel);
- else
- tcp_sendf (serv, "WHO %s\r\n", channel);
-}
-
-/*static void
-irc_get_ip (ircconn *serv, char *nick)
-{
- tcp_sendf (serv, "WHO %s\r\n", nick);
-}*/
-
/*
* Command: WHOIS
* Parameters: [<server>] <nickmask>[,<nickmask>[,...]]
*/
-static void
+void
irc_user_whois (ircconn *serv, char *nicks)
{
tcp_sendf (serv, "WHOIS %s\r\n", nicks);
}
-static void
+void
irc_message (ircconn *serv, char *channel, char *text)
{
tcp_sendf (serv, "PRIVMSG %s :%s\r\n", channel, text);
}
-static void
+void
irc_action (ircconn *serv, char *channel, char *act)
{
tcp_sendf (serv, "PRIVMSG %s :\001ACTION %s\001\r\n", channel, act);
}
-static void
+void
irc_notice (ircconn *serv, char *channel, char *text)
{
tcp_sendf (serv, "NOTICE %s :%s\r\n", channel, text);
}
-static void
+void
irc_topic (ircconn *serv, char *channel, char *topic)
{
if (!topic)
@@ 406,7 389,7 @@ irc_topic (ircconn *serv, char *channel, char *topic)
tcp_sendf (serv, "TOPIC %s\r\n", channel);
}
-static void
+void
irc_list_channels (ircconn *serv, char *arg, int min_users)
{
if (arg[0])
@@ 421,19 404,19 @@ irc_list_channels (ircconn *serv, char *arg, int min_users)
tcp_send_len (serv, "LIST\r\n", 6);
}
-static void
+void
irc_names (ircconn *serv, char *channel)
{
tcp_sendf (serv, "NAMES %s\r\n", channel);
}
-static void
+void
irc_change_nick (ircconn *serv, char *new_nick)
{
tcp_sendf (serv, "NICK %s\r\n", new_nick);
}
-static void
+void
irc_ping (ircconn *serv, char *to, char *timestring)
{
if (*to)
@@ 442,7 425,7 @@ irc_ping (ircconn *serv, char *to, char *timestring)
tcp_sendf (serv, "PING %s\r\n", timestring);
}
-static int
+int
irc_raw (ircconn *serv, char *raw)
{
int len;
@@ 760,12 743,12 @@ process_numeric (session * sess, int n,
}
break;
- case 354: /* undernet WHOX: used as a reply for irc_away_status */
+ case 354: /* undernet WHOX: used as a reply for irc_who */
{
unsigned int away = 0;
session *who_sess;
- /* irc_away_status and irc_user_list sends out a "152" */
+ /* irc_who sends out a "152" */
if (!strcmp (word[4], "152"))
{
who_sess = find_channel (serv, word[5]);
@@ 775,8 758,8 @@ process_numeric (session * sess, int n,
/* :server 354 yournick 152 #channel ~ident host servname nick H account :realname */
inbound_user_info (sess, word[5], word[6], word[7], word[8],
- word[9], word_eol[12]+1, word[11], away,
- tags_data);
+ word[9], word_eol[12]+1, word[11], away,
+ tags_data);
/* try to show only user initiated whos */
if (!who_sess || !who_sess->doing_who)
@@ 2013,36 1996,5 @@ proto_fill_her_up (ircconn *serv)
serv->p_quit = irc_quit;
serv->p_inline = irc_inline;
-
- serv->p_invite = irc_invite;
- serv->p_cycle = irc_cycle;
- serv->p_ctcp = irc_ctcp;
- serv->p_nctcp = irc_nctcp;
- serv->p_kick = irc_kick;
- serv->p_part = irc_part;
- serv->p_ns_identify = irc_ns_identify;
- serv->p_ns_ghost = irc_ns_ghost;
- serv->p_join = irc_join;
- serv->p_join_list = irc_join_list;
- serv->p_login = irc_login;
- serv->p_join_info = irc_join_info;
- serv->p_mode = irc_mode;
- serv->p_user_list = irc_user_list;
- serv->p_away_status = irc_away_status;
- /*serv->p_get_ip = irc_get_ip;*/
- serv->p_whois = irc_user_whois;
- serv->p_get_ip = irc_user_list;
- serv->p_get_ip_uh = irc_userhost;
- serv->p_set_back = irc_set_back;
- serv->p_set_away = irc_set_away;
- serv->p_message = irc_message;
- serv->p_action = irc_action;
- serv->p_notice = irc_notice;
- serv->p_topic = irc_topic;
- serv->p_list_channels = irc_list_channels;
- serv->p_change_nick = irc_change_nick;
- serv->p_names = irc_names;
- serv->p_ping = irc_ping;
- serv->p_raw = irc_raw;
serv->p_cmp = rfc_casecmp; /* can be changed by 005 in modes.c */
}
M src/common/proto-irc.h => src/common/proto-irc.h +27 -0
@@ 51,4 51,31 @@ void message_tags_data_free (message_tags_data *tags_data);
void proto_fill_her_up (ircconn *serv);
+void irc_invite (ircconn *serv, char *channel, char *nick);
+void irc_cycle (ircconn *serv, char *channel, char *key);
+void irc_kick (ircconn *, char *channel, char *nick, char *reason);
+void irc_part (ircconn *, char *channel, char *reason);
+void irc_ns_identify (ircconn *, char *pass);
+void irc_ns_ghost (ircconn *, char *usname, char *pass);
+void irc_join_list (ircconn *, GSList *favorites);
+void irc_set_back (ircconn *serv);
+void irc_set_away (ircconn *serv, char *reason);
+void irc_who (ircconn *, char *channel);
+void irc_userhost (ircconn *, char *nick);
+void irc_message (ircconn *, char *channel, char *text);
+void irc_action (ircconn *, char *channel, char *act);
+void irc_notice (ircconn *, char *channel, char *text);
+void irc_topic (ircconn *, char *channel, char *topic);
+void irc_change_nick (ircconn *serv, char *new_nick);
+void irc_names (ircconn *, char *channel);
+void irc_user_whois (ircconn *serv, char *nicks);
+void irc_ping (ircconn *, char *to, char *timestring);
+void irc_join_info (ircconn *, char *channel);
+int irc_raw (ircconn *, char *raw);
+void irc_list_channels (ircconn *, char *arg, int min_users);
+void irc_mode (ircconn *, char *target, char *mode);
+void irc_join (ircconn *serv, char *channel, char *key);
+void irc_ctcp (ircconn *serv, char *to, char *msg);
+void irc_nctcp (ircconn *serv, char *to, char *msg);
+
#endif
M src/common/server.c => src/common/server.c +1 -2
@@ 51,7 51,6 @@
#include "text.h"
#include "util.h"
#include "url.h"
-#include "proto-irc.h"
#include "servlist.h"
#include "server.h"
@@ 1531,7 1530,7 @@ server_set_encoding (ircconn *serv, char *new_encoding)
}
ircconn *
-server_new (void)
+ircconn_new (void)
{
static int id = 0;
ircconn *serv;
M src/common/server.h => src/common/server.h +1 -1
@@ 27,7 27,7 @@ int tcp_send_len (ircconn *serv, char *buf, int len);
void tcp_sendf (ircconn *serv, const char *fmt, ...) G_GNUC_PRINTF (2, 3);
int tcp_send_real (void *ssl, int sok, GIConv write_converter, char *buf, int len);
-ircconn *server_new (void);
+ircconn *ircconn_new (void);
int is_server (ircconn *serv);
void server_fill_her_up (ircconn *serv);
void server_set_encoding (ircconn *serv, char *new_encoding);
M src/fe-gtk/chanlist.c => src/fe-gtk/chanlist.c +2 -2
@@ 303,14 303,14 @@ chanlist_do_refresh (ircconn *serv)
if (serv->use_listargs)
{
/* yes - it will download faster */
- serv->p_list_channels (serv, "", serv->gui->chanlist_minusers);
+ irc_list_channels (serv, "", serv->gui->chanlist_minusers);
/* don't allow the spin button below this value from now on */
serv->gui->chanlist_minusers_downloaded = serv->gui->chanlist_minusers;
}
else
{
/* download all, filter minusers locally only */
- serv->p_list_channels (serv, "", 1);
+ irc_list_channels (serv, "", 1);
serv->gui->chanlist_minusers_downloaded = 1;
}
M src/fe-gtk/joind.c => src/fe-gtk/joind.c +1 -1
@@ 91,7 91,7 @@ joind_ok_cb (GtkWidget *ok, ircconn *serv)
fe_message (_("Channel name too short, try again."), FE_MSG_ERROR);
return;
}
- serv->p_join (serv, text, "");
+ irc_join (serv, text, "");
goto xit;
}
M src/fe-gtk/maingui.c => src/fe-gtk/maingui.c +10 -10
@@ 1770,7 1770,7 @@ mg_topic_cb (GtkWidget *entry, gpointer userdata)
text = (char *)gtk_entry_get_text (GTK_ENTRY (entry));
if (text[0] == 0)
text = NULL;
- sess->server->p_topic (sess->server, sess->channel, text);
+ irc_topic (sess->server, sess->channel, text);
} else
gtk_entry_set_text (GTK_ENTRY (entry), "");
/* restore focus to the input widget, where the next input will most
@@ 1913,8 1913,8 @@ mg_change_flag (GtkWidget * wid, session *sess, char flag)
mode[0] = '+';
else
mode[0] = '-';
- serv->p_mode (serv, sess->channel, mode);
- serv->p_join_info (serv, sess->channel);
+ irc_mode (serv, sess->channel, mode);
+ irc_join_info (serv, sess->channel);
sess->ignore_mode = TRUE;
sess->ignore_date = TRUE;
}
@@ 1940,8 1940,8 @@ flagl_hit (GtkWidget * wid, struct session *sess)
return;
}
g_snprintf (modes, sizeof (modes), "+l %d", atoi (limit_str));
- serv->p_mode (serv, sess->channel, modes);
- serv->p_join_info (serv, sess->channel);
+ irc_mode (serv, sess->channel, modes);
+ irc_join_info (serv, sess->channel);
}
} else
mg_change_flag (wid, sess, 'l');
@@ 1961,7 1961,7 @@ flagk_hit (GtkWidget * wid, struct session *sess)
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid)))
modes[0] = '+';
- serv->p_mode (serv, sess->channel, modes);
+ irc_mode (serv, sess->channel, modes);
}
}
@@ 2030,8 2030,8 @@ mg_key_entry_cb (GtkWidget * igad, gpointer userdata)
{
g_snprintf (modes, sizeof (modes), "+k %s",
gtk_entry_get_text (GTK_ENTRY (igad)));
- serv->p_mode (serv, sess->channel, modes);
- serv->p_join_info (serv, sess->channel);
+ irc_mode (serv, sess->channel, modes);
+ irc_join_info (serv, sess->channel);
}
}
@@ 2053,8 2053,8 @@ mg_limit_entry_cb (GtkWidget * igad, gpointer userdata)
}
g_snprintf (modes, sizeof(modes), "+l %d",
atoi (gtk_entry_get_text (GTK_ENTRY (igad))));
- serv->p_mode (serv, sess->channel, modes);
- serv->p_join_info (serv, sess->channel);
+ irc_mode (serv, sess->channel, modes);
+ irc_join_info (serv, sess->channel);
}
}
M src/fe-text/fe-text.c => src/fe-text/fe-text.c +4 -3
@@ 41,6 41,7 @@
#include "../common/outbound.h"
#include "../common/util.h"
#include "../common/fe.h"
+#include "../common/proto-irc.h"
#include "fe-text.h"
@@ 847,8 848,8 @@ fe_flash_window (struct session *sess)
{
}
void fe_get_file (const char *title, char *initial,
- void (*callback) (void *userdata, char *file), void *userdata,
- int flags)
+ void (*callback) (void *userdata, char *file), void *userdata,
+ int flags)
{
}
void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout){}
@@ 859,7 860,7 @@ void fe_userlist_update (session *sess, struct User *user){}
void
fe_open_chan_list (ircconn *serv, char *filter, int do_refresh)
{
- serv->p_list_channels (serv, filter, 1);
+ irc_list_channels (serv, filter, 1);
}
const char *
fe_get_default_font (void)