summaryrefslogtreecommitdiff
path: root/src/irc/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc/core')
-rw-r--r--src/irc/core/Makefile.am1
-rw-r--r--src/irc/core/bans.c17
-rw-r--r--src/irc/core/bans.h2
-rw-r--r--src/irc/core/channel-events.c2
-rw-r--r--src/irc/core/channel-rejoin.c8
-rw-r--r--src/irc/core/channels-query.c3
-rw-r--r--src/irc/core/ctcp.c1
-rw-r--r--src/irc/core/irc-channels.c2
-rw-r--r--src/irc/core/irc-channels.h5
-rw-r--r--src/irc/core/irc-chatnets.h4
-rw-r--r--src/irc/core/irc-commands.c224
-rw-r--r--src/irc/core/irc-commands.h26
-rw-r--r--src/irc/core/irc-core.c10
-rw-r--r--src/irc/core/irc-expandos.c1
-rw-r--r--src/irc/core/irc-masks.c1
-rw-r--r--src/irc/core/irc-nicklist.c2
-rw-r--r--src/irc/core/irc-nicklist.h1
-rw-r--r--src/irc/core/irc-queries.c2
-rw-r--r--src/irc/core/irc-queries.h1
-rw-r--r--src/irc/core/irc-rawlog.c79
-rw-r--r--src/irc/core/irc-servers-reconnect.c1
-rw-r--r--src/irc/core/irc-servers.c1
-rw-r--r--src/irc/core/irc-servers.h8
-rw-r--r--src/irc/core/irc.c1
-rw-r--r--src/irc/core/irc.h6
-rw-r--r--src/irc/core/lag.c1
-rw-r--r--src/irc/core/massjoin.c1
-rw-r--r--src/irc/core/mode-lists.c3
-rw-r--r--src/irc/core/mode-lists.h2
-rw-r--r--src/irc/core/modes.c31
-rw-r--r--src/irc/core/modes.h3
-rw-r--r--src/irc/core/module.h3
-rw-r--r--src/irc/core/server-idle.c1
-rw-r--r--src/irc/core/server-idle.h2
34 files changed, 156 insertions, 300 deletions
diff --git a/src/irc/core/Makefile.am b/src/irc/core/Makefile.am
index 40204183..149c317c 100644
--- a/src/irc/core/Makefile.am
+++ b/src/irc/core/Makefile.am
@@ -21,7 +21,6 @@ libirc_core_a_SOURCES = \
irc-masks.c \
irc-nicklist.c \
irc-queries.c \
- irc-rawlog.c \
irc-servers.c \
irc-servers-reconnect.c \
irc-servers-setup.c \
diff --git a/src/irc/core/bans.c b/src/irc/core/bans.c
index 26768ca0..5583d63a 100644
--- a/src/irc/core/bans.c
+++ b/src/irc/core/bans.c
@@ -20,14 +20,15 @@
#include "module.h"
#include "signals.h"
-#include "commands.h"
#include "misc.h"
#include "settings.h"
+#include "irc-servers.h"
+#include "irc-channels.h"
#include "irc-masks.h"
+#include "irc-commands.h"
#include "modes.h"
#include "mode-lists.h"
-#include "irc.h"
#include "nicklist.h"
#define BAN_TYPE_NORMAL (IRC_MASK_USER | IRC_MASK_DOMAIN)
@@ -253,6 +254,8 @@ static void cmd_ban(const char *data, IRC_SERVER_REC *server, void *item)
int ban_type;
void *free_arg;
+ CMD_IRC_SERVER(server);
+
if (!cmd_get_params(data, &free_arg, 1 |
PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST,
"ban", &optlist, &ban))
@@ -285,12 +288,14 @@ static void cmd_unban(const char *data, IRC_SERVER_REC *server, void *item)
GHashTable *optlist;
char *ban;
void *free_arg;
-
+
+ CMD_IRC_SERVER(server);
+
if (!cmd_get_params(data, &free_arg, 1 |
PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST,
"unban", &optlist, &ban))
return;
-
+
ban = NULL;
if (g_hash_table_lookup(optlist, "first") != NULL)
ban = g_strdup(BAN_FIRST);
@@ -326,8 +331,8 @@ void bans_init(void)
default_ban_type_str = NULL;
settings_add_str("misc", "ban_type", "normal");
- command_bind("ban", NULL, (SIGNAL_FUNC) cmd_ban);
- command_bind("unban", NULL, (SIGNAL_FUNC) cmd_unban);
+ command_bind_irc("ban", NULL, (SIGNAL_FUNC) cmd_ban);
+ command_bind_irc("unban", NULL, (SIGNAL_FUNC) cmd_unban);
command_set_options("ban", "normal user host domain +custom");
command_set_options("unban", "first last");
diff --git a/src/irc/core/bans.h b/src/irc/core/bans.h
index 6f106f55..0b00f19d 100644
--- a/src/irc/core/bans.h
+++ b/src/irc/core/bans.h
@@ -1,8 +1,6 @@
#ifndef __BANS_H
#define __BANS_H
-#include "irc-channels.h"
-
void bans_init(void);
void bans_deinit(void);
diff --git a/src/irc/core/channel-events.c b/src/irc/core/channel-events.c
index 92ea4d59..65fe3bf6 100644
--- a/src/irc/core/channel-events.c
+++ b/src/irc/core/channel-events.c
@@ -23,7 +23,7 @@
#include "misc.h"
#include "channels-setup.h"
-#include "irc.h"
+#include "irc-servers.h"
#include "irc-channels.h"
static void event_cannot_join(IRC_SERVER_REC *server, const char *data)
diff --git a/src/irc/core/channel-rejoin.c b/src/irc/core/channel-rejoin.c
index e18da65e..174c1c4e 100644
--- a/src/irc/core/channel-rejoin.c
+++ b/src/irc/core/channel-rejoin.c
@@ -23,8 +23,9 @@
#include "signals.h"
#include "misc.h"
-#include "irc.h"
+#include "irc-servers.h"
#include "irc-channels.h"
+#include "irc-commands.h"
#include "channel-rejoin.h"
#define REJOIN_TIMEOUT (1000*60*5) /* try to rejoin every 5 minutes */
@@ -241,8 +242,7 @@ static int sig_rejoin(void)
static void cmd_rmrejoins(const char *data, IRC_SERVER_REC *server)
{
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
while (server->rejoin_channels != NULL)
rejoin_destroy(server, server->rejoin_channels->data);
@@ -253,7 +253,7 @@ void channel_rejoin_init(void)
rejoin_tag = g_timeout_add(REJOIN_TIMEOUT,
(GSourceFunc) sig_rejoin, NULL);
- command_bind("rmrejoins", NULL, (SIGNAL_FUNC) cmd_rmrejoins);
+ command_bind_irc("rmrejoins", NULL, (SIGNAL_FUNC) cmd_rmrejoins);
signal_add_first("event 407", (SIGNAL_FUNC) event_duplicate_channel);
signal_add_first("event 437", (SIGNAL_FUNC) event_target_unavailable);
signal_add_first("channel joined", (SIGNAL_FUNC) sig_remove_rejoin);
diff --git a/src/irc/core/channels-query.c b/src/irc/core/channels-query.c
index 9dda5595..c8a29866 100644
--- a/src/irc/core/channels-query.c
+++ b/src/irc/core/channels-query.c
@@ -43,12 +43,11 @@ loop:
#include "signals.h"
#include "settings.h"
-#include "channels.h"
-#include "irc.h"
#include "modes.h"
#include "mode-lists.h"
#include "nicklist.h"
#include "irc-servers.h"
+#include "irc-channels.h"
#include "servers-redirect.h"
enum {
diff --git a/src/irc/core/ctcp.c b/src/irc/core/ctcp.c
index 88261800..e062a735 100644
--- a/src/irc/core/ctcp.c
+++ b/src/irc/core/ctcp.c
@@ -25,7 +25,6 @@
#include "special-vars.h"
#include "settings.h"
-#include "irc.h"
#include "irc-servers.h"
#include "server-idle.h"
#include "ignore.h"
diff --git a/src/irc/core/irc-channels.c b/src/irc/core/irc-channels.c
index f2109712..75741355 100644
--- a/src/irc/core/irc-channels.c
+++ b/src/irc/core/irc-channels.c
@@ -24,10 +24,10 @@
#include "levels.h"
#include "channels-setup.h"
-#include "irc.h"
#include "bans.h"
#include "modes.h"
#include "mode-lists.h"
+#include "irc-servers.h"
#include "irc-channels.h"
#include "irc-nicklist.h"
#include "channel-rejoin.h"
diff --git a/src/irc/core/irc-channels.h b/src/irc/core/irc-channels.h
index 41826cb1..a00b0a49 100644
--- a/src/irc/core/irc-channels.h
+++ b/src/irc/core/irc-channels.h
@@ -3,7 +3,6 @@
#include "chat-protocols.h"
#include "channels.h"
-#include "irc-servers.h"
/* Returns IRC_CHANNEL_REC if it's IRC channel, NULL if it isn't. */
#define IRC_CHANNEL(channel) \
@@ -13,7 +12,7 @@
(IRC_CHANNEL(channel) ? TRUE : FALSE)
#define STRUCT_SERVER_REC IRC_SERVER_REC
-typedef struct {
+struct _IRC_CHANNEL_REC {
#include "channel-rec.h"
GSList *banlist; /* list of bans */
@@ -23,7 +22,7 @@ typedef struct {
time_t massjoin_start; /* Massjoin start time */
int massjoins; /* Number of nicks waiting for massjoin signal.. */
int last_massjoins; /* Massjoins when last checked in timeout function */
-} IRC_CHANNEL_REC;
+};
void irc_channels_init(void);
void irc_channels_deinit(void);
diff --git a/src/irc/core/irc-chatnets.h b/src/irc/core/irc-chatnets.h
index 5404c0d2..b8d6fb9f 100644
--- a/src/irc/core/irc-chatnets.h
+++ b/src/irc/core/irc-chatnets.h
@@ -14,7 +14,7 @@
#define IS_IRCNET(ircnet) IS_IRC_CHATNET(ircnet)
#define IRCNET(ircnet) IRC_CHATNET(ircnet)
-typedef struct {
+struct _IRC_CHATNET_REC {
#include "chatnet-rec.h"
int max_cmds_at_once;
int cmd_queue_speed;
@@ -23,7 +23,7 @@ typedef struct {
/* max. number of kicks/msgs/mode/whois per command */
int max_kicks, max_msgs, max_modes, max_whois;
-} IRC_CHATNET_REC;
+};
void ircnet_create(IRC_CHATNET_REC *rec);
diff --git a/src/irc/core/irc-commands.c b/src/irc/core/irc-commands.c
index d3eefbbf..e8d3a043 100644
--- a/src/irc/core/irc-commands.c
+++ b/src/irc/core/irc-commands.c
@@ -19,7 +19,6 @@
*/
#include "module.h"
-#include "commands.h"
#include "misc.h"
#include "special-vars.h"
#include "settings.h"
@@ -31,7 +30,7 @@
#include "nicklist.h"
#include "bans.h"
-#include "irc.h"
+#include "irc-commands.h"
#include "irc-servers.h"
#include "irc-channels.h"
#include "irc-queries.h"
@@ -65,9 +64,7 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server)
char *target, *msg;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &target, &msg))
return;
@@ -85,9 +82,7 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server)
char *target, *ctcpcmd, *ctcpdata;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &target, &ctcpcmd, &ctcpdata))
return;
@@ -109,9 +104,7 @@ static void cmd_nctcp(const char *data, IRC_SERVER_REC *server)
char *target, *ctcpcmd, *ctcpdata;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &target, &ctcpcmd, &ctcpdata))
return;
@@ -130,9 +123,7 @@ static void cmd_part(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
char *channame, *msg;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTCHAN | PARAM_FLAG_GETREST, item, &channame, &msg))
return;
@@ -155,9 +146,7 @@ static void cmd_kick(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
char *channame, *nicks, *reason;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_OPTCHAN | PARAM_FLAG_GETREST,
item, &channame, &nicks, &reason))
@@ -179,9 +168,7 @@ static void cmd_topic(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *ite
char *channame, *topic;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTCHAN |
PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST,
@@ -201,9 +188,7 @@ static void cmd_invite(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *it
char *nick, *channame;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2, &nick, &channame))
return;
@@ -228,9 +213,7 @@ static void cmd_list(const char *data, IRC_SERVER_REC *server,
char *str;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_GETREST, "list", &optlist, &str))
@@ -255,9 +238,7 @@ static void cmd_who(const char *data, IRC_SERVER_REC *server,
char *channel, *rest;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &channel, &rest))
return;
@@ -288,9 +269,7 @@ static void cmd_names(const char *data, IRC_SERVER_REC *server,
char *channel;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_GETREST, "names", &optlist, &channel))
@@ -321,8 +300,7 @@ static void cmd_nick(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1, &nick))
return;
@@ -392,9 +370,7 @@ static void cmd_whois(const char *data, IRC_SERVER_REC *server,
void *free_arg;
int free_nick;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTIONS,
"whois", &optlist, &qserver, &query))
@@ -480,9 +456,7 @@ static void cmd_whowas(const char *data, IRC_SERVER_REC *server)
void *free_arg;
int free_nick;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2, &nicks, &count))
return;
@@ -506,9 +480,7 @@ static void cmd_ping(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
GTimeVal tv;
char *str;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (*data == '\0' || strcmp(data, "*") == 0) {
if (!IS_IRC_ITEM(item))
@@ -545,9 +517,7 @@ static void cmd_away(const char *data, IRC_SERVER_REC *server)
char *reason;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_GETREST, "away", &optlist, &reason)) return;
@@ -560,23 +530,10 @@ static void cmd_away(const char *data, IRC_SERVER_REC *server)
cmd_params_free(free_arg);
}
-/* SYNTAX: DEOP <nicks> */
-static void cmd_deop(const char *data, IRC_SERVER_REC *server)
-{
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
-
- if (*data == '\0')
- irc_send_cmdv(server, "MODE %s -o", server->nick);
-}
-
/* SYNTAX: SCONNECT <new server> [[<port>] <existing server>] */
static void cmd_sconnect(const char *data, IRC_SERVER_REC *server)
{
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (*data == '\0') cmd_return_error(CMDERR_NOT_ENOUGH_PARAMS);
irc_send_cmdv(server, "CONNECT %s", data);
@@ -585,9 +542,7 @@ static void cmd_sconnect(const char *data, IRC_SERVER_REC *server)
/* SYNTAX: QUOTE <data> */
static void cmd_quote(const char *data, IRC_SERVER_REC *server)
{
- g_return_if_fail(data != NULL);
- if (server == NULL || !IS_IRC_SERVER(server))
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
irc_send_cmd(server, data);
}
@@ -595,9 +550,7 @@ static void cmd_quote(const char *data, IRC_SERVER_REC *server)
/* SYNTAX: RAWQUOTE <data> */
static void cmd_rawquote(const char *data, IRC_SERVER_REC *server)
{
- g_return_if_fail(data != NULL);
- if (server == NULL || !IS_IRC_SERVER(server))
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
irc_send_cmd_full(server, data, FALSE, FALSE, TRUE);
}
@@ -615,9 +568,7 @@ static void cmd_wait(const char *data, IRC_SERVER_REC *server)
void *free_arg;
int n;
- g_return_if_fail(data != NULL);
- if (!IS_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_UNKNOWN_OPTIONS | PARAM_FLAG_GETREST,
@@ -652,9 +603,7 @@ static void cmd_wall(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
IRC_CHANNEL_REC *chanrec;
GSList *tmp, *nicks;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTCHAN |
PARAM_FLAG_GETREST, item, &channame, &msg))
@@ -694,9 +643,7 @@ static void cmd_kickban(const char *data, IRC_SERVER_REC *server,
char **nicklist, *spacenicks;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_OPTCHAN | PARAM_FLAG_GETREST,
item, &channel, &nicks, &reason))
@@ -784,7 +731,8 @@ static void cmd_knockout(const char *data, IRC_SERVER_REC *server,
void *free_arg;
int timeleft;
- g_return_if_fail(data != NULL);
+ CMD_IRC_SERVER(server);
+
if (!IS_IRC_CHANNEL(channel))
cmd_return_error(CMDERR_NOT_JOINED);
if (!channel->wholist)
@@ -850,9 +798,7 @@ static void cmd_server_purge(const char *data, IRC_SERVER_REC *server)
char *target;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1, &target))
return;
@@ -897,9 +843,7 @@ static void cmd_oper(const char *data, IRC_SERVER_REC *server)
char *nick, *password;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
/* asking for password is handled by fe-common */
if (!cmd_get_params(data, &free_arg, 2, &nick, &password))
@@ -913,9 +857,7 @@ static void cmd_oper(const char *data, IRC_SERVER_REC *server)
/* SYNTAX: UNSILENCE <nick!user@host> */
static void cmd_unsilence(const char *data, IRC_SERVER_REC *server)
{
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (*data == '\0')
cmd_return_error(CMDERR_NOT_ENOUGH_PARAMS);
@@ -925,9 +867,7 @@ static void cmd_unsilence(const char *data, IRC_SERVER_REC *server)
static void command_self(const char *data, IRC_SERVER_REC *server)
{
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
irc_send_cmdv(server, *data == '\0' ? "%s" : "%s %s", current_command, data);
}
@@ -947,9 +887,7 @@ static void command_2self(const char *data, IRC_SERVER_REC *server)
char *target, *text;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (!IS_IRC_SERVER(server) || !server->connected)
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &target, &text))
return;
@@ -1011,85 +949,84 @@ void irc_commands_init(void)
knockout_tag = g_timeout_add(KNOCKOUT_TIMECHECK, (GSourceFunc) knockout_timeout, NULL);
- command_bind("notice", NULL, (SIGNAL_FUNC) cmd_notice);
- command_bind("ctcp", NULL, (SIGNAL_FUNC) cmd_ctcp);
- command_bind("nctcp", NULL, (SIGNAL_FUNC) cmd_nctcp);
- command_bind("part", NULL, (SIGNAL_FUNC) cmd_part);
- command_bind("kick", NULL, (SIGNAL_FUNC) cmd_kick);
- command_bind("topic", NULL, (SIGNAL_FUNC) cmd_topic);
- command_bind("invite", NULL, (SIGNAL_FUNC) cmd_invite);
- command_bind("list", NULL, (SIGNAL_FUNC) cmd_list);
- command_bind("who", NULL, (SIGNAL_FUNC) cmd_who);
- command_bind("names", NULL, (SIGNAL_FUNC) cmd_names);
- command_bind("nick", NULL, (SIGNAL_FUNC) cmd_nick);
+ command_bind_irc("notice", NULL, (SIGNAL_FUNC) cmd_notice);
+ command_bind_irc("ctcp", NULL, (SIGNAL_FUNC) cmd_ctcp);
+ command_bind_irc("nctcp", NULL, (SIGNAL_FUNC) cmd_nctcp);
+ command_bind_irc("part", NULL, (SIGNAL_FUNC) cmd_part);
+ command_bind_irc("kick", NULL, (SIGNAL_FUNC) cmd_kick);
+ command_bind_irc("topic", NULL, (SIGNAL_FUNC) cmd_topic);
+ command_bind_irc("invite", NULL, (SIGNAL_FUNC) cmd_invite);
+ command_bind_irc("list", NULL, (SIGNAL_FUNC) cmd_list);
+ command_bind_irc("who", NULL, (SIGNAL_FUNC) cmd_who);
+ command_bind_irc("names", NULL, (SIGNAL_FUNC) cmd_names);
+ command_bind_irc("nick", NULL, (SIGNAL_FUNC) cmd_nick);
/* SYNTAX: NOTE <command> [&<password>] [+|-<flags>] [<arguments>] */
- command_bind("note", NULL, (SIGNAL_FUNC) command_self);
- command_bind("whois", NULL, (SIGNAL_FUNC) cmd_whois);
- command_bind("whowas", NULL, (SIGNAL_FUNC) cmd_whowas);
- command_bind("ping", NULL, (SIGNAL_FUNC) cmd_ping);
+ command_bind_irc("note", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("whois", NULL, (SIGNAL_FUNC) cmd_whois);
+ command_bind_irc("whowas", NULL, (SIGNAL_FUNC) cmd_whowas);
+ command_bind_irc("ping", NULL, (SIGNAL_FUNC) cmd_ping);
/* SYNTAX: KILL <nick> <reason> */
- command_bind("kill", NULL, (SIGNAL_FUNC) command_2self);
- command_bind("away", NULL, (SIGNAL_FUNC) cmd_away);
+ command_bind_irc("kill", NULL, (SIGNAL_FUNC) command_2self);
+ command_bind_irc("away", NULL, (SIGNAL_FUNC) cmd_away);
/* SYNTAX: ISON <nicks> */
- command_bind("ison", NULL, (SIGNAL_FUNC) command_1self);
+ command_bind_irc("ison", NULL, (SIGNAL_FUNC) command_1self);
/* SYNTAX: ADMIN [<server>|<nickname>] */
- command_bind("admin", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("admin", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: INFO [<server>] */
- command_bind("info", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("info", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: LINKS [[<server>] <mask>] */
- command_bind("links", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("links", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: LUSERS [<server mask> [<remote server>]] */
- command_bind("lusers", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("lusers", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: MAP */
- command_bind("map", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("map", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: MOTD [<server>|<nick>] */
- command_bind("motd", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("motd", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: REHASH */
- command_bind("rehash", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("rehash", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: STATS <type> [<server>] */
- command_bind("stats", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("stats", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: TIME [<server>|<nick>] */
- command_bind("time", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("time", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: TRACE [<server>|<nick>] */
- command_bind("trace", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("trace", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: VERSION [<server>|<nick>] */
- command_bind("version", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("version", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: SERVLIST [<server mask>] */
- command_bind("servlist", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("servlist", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: SILENCE [[+|-]<nick!user@host>]
SILENCE [<nick>] */
- command_bind("silence", NULL, (SIGNAL_FUNC) command_self);
- command_bind("unsilence", NULL, (SIGNAL_FUNC) cmd_unsilence);
- command_bind("sconnect", NULL, (SIGNAL_FUNC) cmd_sconnect);
+ command_bind_irc("silence", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("unsilence", NULL, (SIGNAL_FUNC) cmd_unsilence);
+ command_bind_irc("sconnect", NULL, (SIGNAL_FUNC) cmd_sconnect);
/* SYNTAX: SQUERY <service> [<commands>] */
- command_bind("squery", NULL, (SIGNAL_FUNC) command_2self);
- command_bind("deop", NULL, (SIGNAL_FUNC) cmd_deop);
+ command_bind_irc("squery", NULL, (SIGNAL_FUNC) command_2self);
/* SYNTAX: DIE */
- command_bind("die", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("die", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: HASH */
- command_bind("hash", NULL, (SIGNAL_FUNC) command_self);
- command_bind("oper", NULL, (SIGNAL_FUNC) cmd_oper);
+ command_bind_irc("hash", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("oper", NULL, (SIGNAL_FUNC) cmd_oper);
/* SYNTAX: RESTART */
- command_bind("restart", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("restart", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: RPING <server> */
- command_bind("rping", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("rping", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: SQUIT <server>|<mask> <reason> */
- command_bind("squit", NULL, (SIGNAL_FUNC) command_2self);
+ command_bind_irc("squit", NULL, (SIGNAL_FUNC) command_2self);
/* SYNTAX: UPING <server> */
- command_bind("uping", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("uping", NULL, (SIGNAL_FUNC) command_self);
/* SYNTAX: USERHOST <nicks> */
- command_bind("userhost", NULL, (SIGNAL_FUNC) command_self);
- command_bind("quote", NULL, (SIGNAL_FUNC) cmd_quote);
- command_bind("rawquote", NULL, (SIGNAL_FUNC) cmd_rawquote);
- command_bind("wall", NULL, (SIGNAL_FUNC) cmd_wall);
- command_bind("wait", NULL, (SIGNAL_FUNC) cmd_wait);
+ command_bind_irc("userhost", NULL, (SIGNAL_FUNC) command_self);
+ command_bind_irc("quote", NULL, (SIGNAL_FUNC) cmd_quote);
+ command_bind_irc("rawquote", NULL, (SIGNAL_FUNC) cmd_rawquote);
+ command_bind_irc("wall", NULL, (SIGNAL_FUNC) cmd_wall);
+ command_bind_irc("wait", NULL, (SIGNAL_FUNC) cmd_wait);
/* SYNTAX: WALLOPS <message> */
- command_bind("wallops", NULL, (SIGNAL_FUNC) command_1self);
+ command_bind_irc("wallops", NULL, (SIGNAL_FUNC) command_1self);
/* SYNTAX: WALLCHOPS <channel> <message> */
- command_bind("wallchops", NULL, (SIGNAL_FUNC) command_2self);
- command_bind("kickban", NULL, (SIGNAL_FUNC) cmd_kickban);
- command_bind("knockout", NULL, (SIGNAL_FUNC) cmd_knockout);
- command_bind("server purge", NULL, (SIGNAL_FUNC) cmd_server_purge);
+ command_bind_irc("wallchops", NULL, (SIGNAL_FUNC) command_2self);
+ command_bind_irc("kickban", NULL, (SIGNAL_FUNC) cmd_kickban);
+ command_bind_irc("knockout", NULL, (SIGNAL_FUNC) cmd_knockout);
+ command_bind_irc("server purge", NULL, (SIGNAL_FUNC) cmd_server_purge);
signal_add("channel destroyed", (SIGNAL_FUNC) sig_channel_destroyed);
signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected);
@@ -1144,7 +1081,6 @@ void irc_commands_deinit(void)
command_unbind("unsilence", (SIGNAL_FUNC) cmd_unsilence);
command_unbind("sconnect", (SIGNAL_FUNC) cmd_sconnect);
command_unbind("squery", (SIGNAL_FUNC) command_2self);
- command_unbind("deop", (SIGNAL_FUNC) cmd_deop);
command_unbind("die", (SIGNAL_FUNC) command_self);
command_unbind("hash", (SIGNAL_FUNC) command_self);
command_unbind("oper", (SIGNAL_FUNC) cmd_oper);
diff --git a/src/irc/core/irc-commands.h b/src/irc/core/irc-commands.h
new file mode 100644
index 00000000..739bd443
--- /dev/null
+++ b/src/irc/core/irc-commands.h
@@ -0,0 +1,26 @@
+#ifndef __IRC_COMMANDS_H
+#define __IRC_COMMANDS_H
+
+#include "commands.h"
+
+#define command_bind_irc(cmd, section, signal) \
+ command_bind_proto(cmd, IRC_PROTOCOL, section, signal)
+#define command_bind_irc_first(cmd, section, signal) \
+ command_bind_proto_first(cmd, IRC_PROTOCOL, section, signal)
+#define command_bind_irc_last(cmd, section, signal) \
+ command_bind_proto_last(cmd, IRC_PROTOCOL, section, signal)
+
+/* Simply returns if server isn't for IRC protocol. Prints ERR_NOT_CONNECTED
+ error if there's no server or server isn't connected yet */
+#define CMD_IRC_SERVER(server) \
+ G_STMT_START { \
+ if (server != NULL && !IS_IRC_SERVER(server)) \
+ return; \
+ if (server == NULL || !(server)->connected) \
+ cmd_return_error(CMDERR_NOT_CONNECTED); \
+ } G_STMT_END
+
+void irc_commands_init(void);
+void irc_commands_deinit(void);
+
+#endif
diff --git a/src/irc/core/irc-core.c b/src/irc/core/irc-core.c
index 607f36d7..8906efbe 100644
--- a/src/irc/core/irc-core.c
+++ b/src/irc/core/irc-core.c
@@ -30,15 +30,9 @@
#include "channels-setup.h"
#include "ctcp.h"
-#include "irc.h"
+#include "irc-commands.h"
#include "netsplit.h"
-void irc_commands_init(void);
-void irc_commands_deinit(void);
-
-void irc_rawlog_init(void);
-void irc_rawlog_deinit(void);
-
void irc_expandos_init(void);
void irc_expandos_deinit(void);
@@ -116,7 +110,6 @@ void irc_core_init(void)
irc_irc_init();
lag_init();
netsplit_init();
- irc_rawlog_init();
irc_expandos_init();
module_register("core", "irc");
@@ -127,7 +120,6 @@ void irc_core_deinit(void)
signal_emit("chat protocol deinit", 1, chat_protocol_find("IRC"));
irc_expandos_deinit();
- irc_rawlog_deinit();
netsplit_deinit();
lag_deinit();
irc_commands_deinit();
diff --git a/src/irc/core/irc-expandos.c b/src/irc/core/irc-expandos.c
index 2825dfc9..c8ce9d97 100644
--- a/src/irc/core/irc-expandos.c
+++ b/src/irc/core/irc-expandos.c
@@ -23,7 +23,6 @@
#include "expandos.h"
#include "settings.h"
-#include "irc.h"
#include "irc-servers.h"
#include "channels.h"
#include "nicklist.h"
diff --git a/src/irc/core/irc-masks.c b/src/irc/core/irc-masks.c
index f07ae60d..345b1b77 100644
--- a/src/irc/core/irc-masks.c
+++ b/src/irc/core/irc-masks.c
@@ -21,7 +21,6 @@
#include "module.h"
#include "network.h"
-#include "irc.h"
#include "irc-masks.h"
static char *get_domain_mask(char *host)
diff --git a/src/irc/core/irc-nicklist.c b/src/irc/core/irc-nicklist.c
index 42dac71d..31b072ba 100644
--- a/src/irc/core/irc-nicklist.c
+++ b/src/irc/core/irc-nicklist.c
@@ -22,7 +22,7 @@
#include "signals.h"
#include "misc.h"
-#include "irc.h"
+#include "irc-servers.h"
#include "irc-channels.h"
#include "irc-masks.h"
#include "irc-nicklist.h"
diff --git a/src/irc/core/irc-nicklist.h b/src/irc/core/irc-nicklist.h
index 611589d2..7d0ae2f4 100644
--- a/src/irc/core/irc-nicklist.h
+++ b/src/irc/core/irc-nicklist.h
@@ -2,7 +2,6 @@
#define __IRC_NICKLIST_H
#include "nicklist.h"
-#include "irc-channels.h"
/* Add new nick to list */
NICK_REC *irc_nicklist_insert(IRC_CHANNEL_REC *channel, const char *nick,
diff --git a/src/irc/core/irc-queries.c b/src/irc/core/irc-queries.c
index 87aed832..380b12ef 100644
--- a/src/irc/core/irc-queries.c
+++ b/src/irc/core/irc-queries.c
@@ -22,7 +22,7 @@
#include "signals.h"
#include "misc.h"
-#include "irc.h"
+#include "irc-servers.h"
#include "irc-queries.h"
QUERY_REC *irc_query_create(const char *server_tag,
diff --git a/src/irc/core/irc-queries.h b/src/irc/core/irc-queries.h
index 5e791b1f..e95602c1 100644
--- a/src/irc/core/irc-queries.h
+++ b/src/irc/core/irc-queries.h
@@ -3,7 +3,6 @@
#include "chat-protocols.h"
#include "queries.h"
-#include "irc-servers.h"
/* Returns IRC_QUERY_REC if it's IRC query, NULL if it isn't. */
#define IRC_QUERY(query) \
diff --git a/src/irc/core/irc-rawlog.c b/src/irc/core/irc-rawlog.c
deleted file mode 100644
index a76fcf45..00000000
--- a/src/irc/core/irc-rawlog.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- irc-rawlog.c : irssi
-
- Copyright (C) 1999-2000 Timo Sirainen
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "module.h"
-#include "rawlog.h"
-#include "signals.h"
-#include "misc.h"
-
-#include "commands.h"
-#include "servers.h"
-
-#include "settings.h"
-
-static void cmd_rawlog(const char *data, SERVER_REC *server, void *item)
-{
- command_runsub("rawlog", data, server, item);
-}
-
-/* SYNTAX: RAWLOG SAVE <file> */
-static void cmd_rawlog_save(const char *data, SERVER_REC *server)
-{
- g_return_if_fail(data != NULL);
- if (server == NULL || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED);
-
- if (*data == '\0') cmd_return_error(CMDERR_NOT_ENOUGH_PARAMS);
- rawlog_save(server->rawlog, data);
-}
-
-/* SYNTAX: RAWLOG OPEN <file> */
-static void cmd_rawlog_open(const char *data, SERVER_REC *server)
-{
- g_return_if_fail(data != NULL);
- if (server == NULL || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED);
-
- if (*data == '\0') cmd_return_error(CMDERR_NOT_ENOUGH_PARAMS);
- rawlog_open(server->rawlog, data);
-}
-
-/* SYNTAX: RAWLOG CLOSE */
-static void cmd_rawlog_close(const char *data, SERVER_REC *server)
-{
- g_return_if_fail(data != NULL);
- if (server == NULL || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED);
-
- rawlog_close(server->rawlog);
-}
-
-void irc_rawlog_init(void)
-{
- command_bind("rawlog", NULL, (SIGNAL_FUNC) cmd_rawlog);
- command_bind("rawlog save", NULL, (SIGNAL_FUNC) cmd_rawlog_save);
- command_bind("rawlog open", NULL, (SIGNAL_FUNC) cmd_rawlog_open);
- command_bind("rawlog close", NULL, (SIGNAL_FUNC) cmd_rawlog_close);
-}
-
-void irc_rawlog_deinit(void)
-{
- command_unbind("rawlog", (SIGNAL_FUNC) cmd_rawlog);
- command_unbind("rawlog save", (SIGNAL_FUNC) cmd_rawlog_save);
- command_unbind("rawlog open", (SIGNAL_FUNC) cmd_rawlog_open);
- command_unbind("rawlog close", (SIGNAL_FUNC) cmd_rawlog_close);
-}
diff --git a/src/irc/core/irc-servers-reconnect.c b/src/irc/core/irc-servers-reconnect.c
index 3dc9b414..26f40779 100644
--- a/src/irc/core/irc-servers-reconnect.c
+++ b/src/irc/core/irc-servers-reconnect.c
@@ -23,7 +23,6 @@
#include "network.h"
#include "signals.h"
-#include "irc.h"
#include "modes.h"
#include "irc-servers.h"
diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c
index 0dbb3468..5591e313 100644
--- a/src/irc/core/irc-servers.c
+++ b/src/irc/core/irc-servers.c
@@ -30,7 +30,6 @@
#include "channels.h"
#include "queries.h"
-#include "irc.h"
#include "irc-servers-setup.h"
#include "irc-servers.h"
#include "channel-rejoin.h"
diff --git a/src/irc/core/irc-servers.h b/src/irc/core/irc-servers.h
index 9a4f0ea8..1add7cdd 100644
--- a/src/irc/core/irc-servers.h
+++ b/src/irc/core/irc-servers.h
@@ -20,7 +20,7 @@
/* all strings should be either NULL or dynamically allocated */
/* address and nick are mandatory, rest are optional */
-typedef struct {
+struct _IRC_SERVER_CONNECT_REC {
#include "server-connect-rec.h"
char *usermode;
@@ -31,10 +31,10 @@ typedef struct {
int max_query_chans;
int max_kicks, max_msgs, max_modes, max_whois;
-} IRC_SERVER_CONNECT_REC;
+};
#define STRUCT_SERVER_CONNECT_REC IRC_SERVER_CONNECT_REC
-typedef struct {
+struct _IRC_SERVER_REC {
#include "server-rec.h"
char *real_address; /* address the irc server gives */
@@ -87,7 +87,7 @@ typedef struct {
channels go here if they're "temporarily unavailable"
because of netsplits */
void *chanqueries;
-} IRC_SERVER_REC;
+};
IRC_SERVER_REC *irc_server_connect(IRC_SERVER_CONNECT_REC *conn);
diff --git a/src/irc/core/irc.c b/src/irc/core/irc.c
index bf41fbbc..a7e58bb6 100644
--- a/src/irc/core/irc.c
+++ b/src/irc/core/irc.c
@@ -26,7 +26,6 @@
#include "rawlog.h"
#include "misc.h"
-#include "irc.h"
#include "irc-servers.h"
#include "irc-channels.h"
#include "servers-redirect.h"
diff --git a/src/irc/core/irc.h b/src/irc/core/irc.h
index 46051d9e..3ff3e249 100644
--- a/src/irc/core/irc.h
+++ b/src/irc/core/irc.h
@@ -1,7 +1,10 @@
#ifndef __IRC_H
#define __IRC_H
-#include "irc-servers.h"
+typedef struct _IRC_CHATNET_REC IRC_CHATNET_REC;
+typedef struct _IRC_SERVER_CONNECT_REC IRC_SERVER_CONNECT_REC;
+typedef struct _IRC_SERVER_REC IRC_SERVER_REC;
+typedef struct _IRC_CHANNEL_REC IRC_CHANNEL_REC;
/* From ircd 2.9.5:
none I line with ident
@@ -26,6 +29,7 @@
(a) == '+') /* modeless */
#define IS_IRC_ITEM(rec) (IS_IRC_CHANNEL(rec) || IS_IRC_QUERY(rec))
+#define IRC_PROTOCOL (chat_protocol_lookup("IRC"))
extern char *current_server_event; /* current server event being processed */
diff --git a/src/irc/core/lag.c b/src/irc/core/lag.c
index 8b934dd7..d2c62813 100644
--- a/src/irc/core/lag.c
+++ b/src/irc/core/lag.c
@@ -23,7 +23,6 @@
#include "misc.h"
#include "settings.h"
-#include "irc.h"
#include "irc-servers.h"
typedef struct {
diff --git a/src/irc/core/massjoin.c b/src/irc/core/massjoin.c
index 13df8694..07ea8fbd 100644
--- a/src/irc/core/massjoin.c
+++ b/src/irc/core/massjoin.c
@@ -22,7 +22,6 @@
#include "signals.h"
#include "settings.h"
-#include "irc.h"
#include "irc-servers.h"
#include "irc-channels.h"
#include "irc-nicklist.h"
diff --git a/src/irc/core/mode-lists.c b/src/irc/core/mode-lists.c
index 3f98b73b..71fba750 100644
--- a/src/irc/core/mode-lists.c
+++ b/src/irc/core/mode-lists.c
@@ -22,7 +22,8 @@
#include "misc.h"
#include "signals.h"
-#include "irc.h"
+#include "irc-servers.h"
+#include "irc-channels.h"
#include "mode-lists.h"
static void ban_free(GSList **list, BAN_REC *rec)
diff --git a/src/irc/core/mode-lists.h b/src/irc/core/mode-lists.h
index ef13ae3c..324b7752 100644
--- a/src/irc/core/mode-lists.h
+++ b/src/irc/core/mode-lists.h
@@ -1,8 +1,6 @@
#ifndef __MODE_LISTS_H
#define __MODE_LISTS_H
-#include "irc-channels.h"
-
typedef struct {
char *ban;
char *setby;
diff --git a/src/irc/core/modes.c b/src/irc/core/modes.c
index 8c102e9a..25b212c2 100644
--- a/src/irc/core/modes.c
+++ b/src/irc/core/modes.c
@@ -20,10 +20,11 @@
#include "module.h"
#include "signals.h"
-#include "commands.h"
#include "settings.h"
-#include "irc.h"
+#include "irc-commands.h"
+#include "irc-servers.h"
+#include "irc-channels.h"
#include "modes.h"
#include "mode-lists.h"
#include "nicklist.h"
@@ -590,8 +591,7 @@ static void cmd_op(const char *data, IRC_SERVER_REC *server,
{
char *nicks;
- if (!IS_IRC_CHANNEL(channel))
- return;
+ CMD_IRC_SERVER(server);
nicks = get_nicks(channel, data, 0, -1);
if (nicks != NULL && *nicks != '\0')
@@ -605,8 +605,7 @@ static void cmd_deop(const char *data, IRC_SERVER_REC *server,
{
char *nicks;
- if (!IS_IRC_CHANNEL(channel))
- return;
+ CMD_IRC_SERVER(server);
nicks = get_nicks(channel, data, 1, -1);
if (nicks != NULL && *nicks != '\0')
@@ -620,8 +619,7 @@ static void cmd_voice(const char *data, IRC_SERVER_REC *server,
{
char *nicks;
- if (!IS_IRC_CHANNEL(channel))
- return;
+ CMD_IRC_SERVER(server);
nicks = get_nicks(channel, data, 0, 0);
if (nicks != NULL && *nicks != '\0')
@@ -635,8 +633,7 @@ static void cmd_devoice(const char *data, IRC_SERVER_REC *server,
{
char *nicks;
- if (!IS_IRC_CHANNEL(channel))
- return;
+ CMD_IRC_SERVER(server);
nicks = get_nicks(channel, data, -1, 1);
if (nicks != NULL && *nicks != '\0')
@@ -651,9 +648,7 @@ static void cmd_mode(const char *data, IRC_SERVER_REC *server,
char *target, *mode;
void *free_arg;
- g_return_if_fail(data != NULL);
- if (server == NULL || !server->connected || !IS_IRC_SERVER(server))
- cmd_return_error(CMDERR_NOT_CONNECTED);
+ CMD_IRC_SERVER(server);
if (*data == '+' || *data == '-') {
target = "*";
@@ -692,11 +687,11 @@ void modes_init(void)
signal_add("event 381", (SIGNAL_FUNC) event_oper);
signal_add("event mode", (SIGNAL_FUNC) event_mode);
- command_bind("op", NULL, (SIGNAL_FUNC) cmd_op);
- command_bind("deop", NULL, (SIGNAL_FUNC) cmd_deop);
- command_bind("voice", NULL, (SIGNAL_FUNC) cmd_voice);
- command_bind("devoice", NULL, (SIGNAL_FUNC) cmd_devoice);
- command_bind("mode", NULL, (SIGNAL_FUNC) cmd_mode);
+ command_bind_irc("op", NULL, (SIGNAL_FUNC) cmd_op);
+ command_bind_irc("deop", NULL, (SIGNAL_FUNC) cmd_deop);
+ command_bind_irc("voice", NULL, (SIGNAL_FUNC) cmd_voice);
+ command_bind_irc("devoice", NULL, (SIGNAL_FUNC) cmd_devoice);
+ command_bind_irc("mode", NULL, (SIGNAL_FUNC) cmd_mode);
}
void modes_deinit(void)
diff --git a/src/irc/core/modes.h b/src/irc/core/modes.h
index 5db61fd3..7da90ab7 100644
--- a/src/irc/core/modes.h
+++ b/src/irc/core/modes.h
@@ -1,9 +1,6 @@
#ifndef __MODES_H
#define __MODES_H
-#include "irc-servers.h"
-#include "irc-channels.h"
-
/* modes that have argument always */
#define HAS_MODE_ARG_ALWAYS(mode) \
((mode) == 'b' || (mode) == 'e' || (mode) == 'I' || (mode) == 'k' || \
diff --git a/src/irc/core/module.h b/src/irc/core/module.h
index a605302b..19c0b3cc 100644
--- a/src/irc/core/module.h
+++ b/src/irc/core/module.h
@@ -1,5 +1,4 @@
#include "common.h"
+#include "irc.h"
#define MODULE_NAME "irc/core"
-
-#define IRC_PROTOCOL (chat_protocol_lookup("IRC"))
diff --git a/src/irc/core/server-idle.c b/src/irc/core/server-idle.c
index dd85282b..9443fdf7 100644
--- a/src/irc/core/server-idle.c
+++ b/src/irc/core/server-idle.c
@@ -24,7 +24,6 @@
#include "irc-servers.h"
#include "server-idle.h"
#include "servers-redirect.h"
-#include "irc.h"
typedef struct {
char *event;
diff --git a/src/irc/core/server-idle.h b/src/irc/core/server-idle.h
index 73761dae..8d89f8f5 100644
--- a/src/irc/core/server-idle.h
+++ b/src/irc/core/server-idle.h
@@ -1,8 +1,6 @@
#ifndef __SERVER_IDLE_H
#define __SERVER_IDLE_H
-#include "irc-servers.h"
-
/* Add new idle command to queue */
int server_idle_add(IRC_SERVER_REC *server, const char *cmd, const char *arg, int last, ...);