forked from PsychoticNinja/ailin-nemui-irssi
[wip]
This commit is contained in:
parent
d46d83a3b0
commit
775c3186ea
@ -116,4 +116,12 @@ pkginc_core_HEADERS = \
|
|||||||
window-item-def.h \
|
window-item-def.h \
|
||||||
tls.h \
|
tls.h \
|
||||||
write-buffer.h \
|
write-buffer.h \
|
||||||
|
signal-registry-macros.h \
|
||||||
|
signal-registry.h \
|
||||||
$(structure_headers)
|
$(structure_headers)
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
signal-registry.def
|
||||||
|
|
||||||
|
signal-registry.def: signal-registry.def.in
|
||||||
|
$(top_srcdir)/utils/signals-to-reg.pl $^ > $@
|
||||||
|
@ -162,7 +162,7 @@ SIGNAL_REGISTER(server_connect_failed, 2, (SERVER_REC *server, const char *msg),
|
|||||||
server, msg)
|
server, msg)
|
||||||
SIGNAL_REGISTER(server_disconnected, 1, (SERVER_REC *server),
|
SIGNAL_REGISTER(server_disconnected, 1, (SERVER_REC *server),
|
||||||
server)
|
server)
|
||||||
SIGNAL_REGISTER(server_quit, 2, (SERVER_REC *server, char *msg),
|
SIGNAL_REGISTER(server_quit, 2, (SERVER_REC *server, const char *msg),
|
||||||
server, msg)
|
server, msg)
|
||||||
SIGNAL_REGISTER(server_sendmsg, 4, (SERVER_REC *server, const char *target, const char *msg, int_in_ptr target_type),
|
SIGNAL_REGISTER(server_sendmsg, 4, (SERVER_REC *server, const char *target, const char *msg, int_in_ptr target_type),
|
||||||
server, target, msg, target_type)
|
server, target, msg, target_type)
|
||||||
|
@ -97,7 +97,7 @@
|
|||||||
"server connecting", SERVER_REC, mem_ptr ip
|
"server connecting", SERVER_REC, mem_ptr ip
|
||||||
"server connect failed", SERVER_REC, const char *msg
|
"server connect failed", SERVER_REC, const char *msg
|
||||||
"server disconnected", SERVER_REC
|
"server disconnected", SERVER_REC
|
||||||
"server quit", SERVER_REC, char *msg
|
"server quit", SERVER_REC, const char *msg
|
||||||
"server sendmsg", SERVER_REC, const char *target, const char *msg, int target_type
|
"server sendmsg", SERVER_REC, const char *target, const char *msg, int target_type
|
||||||
"server destroyed", SERVER_REC
|
"server destroyed", SERVER_REC
|
||||||
|
|
||||||
|
@ -69,3 +69,9 @@ pkginc_fe_common_core_HEADERS = \
|
|||||||
window-items.h \
|
window-items.h \
|
||||||
windows-layout.h \
|
windows-layout.h \
|
||||||
fe-windows.h
|
fe-windows.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
signal-registry.def
|
||||||
|
|
||||||
|
signal-registry.def: signal-registry.def.in
|
||||||
|
$(top_srcdir)/utils/signals-to-reg.pl $^ > $@
|
||||||
|
@ -42,6 +42,12 @@ pkginc_fe_common_irc_HEADERS = \
|
|||||||
module.h \
|
module.h \
|
||||||
module-formats.h
|
module-formats.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
signal-registry.def
|
||||||
|
|
||||||
|
signal-registry.def: signal-registry.def.in
|
||||||
|
$(top_srcdir)/utils/signals-to-reg.pl $^ > $@
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(real_sources) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(real_sources) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
|
@ -70,5 +70,11 @@ noinst_HEADERS = \
|
|||||||
module.h \
|
module.h \
|
||||||
module-formats.h
|
module-formats.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
signal-registry.def
|
||||||
|
|
||||||
|
signal-registry.def: signal-registry.def.in
|
||||||
|
$(top_srcdir)/utils/signals-to-reg.pl $^ > $@
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
$(terminfo_sources)
|
$(terminfo_sources)
|
||||||
|
@ -58,4 +58,11 @@ pkginc_irc_core_HEADERS = \
|
|||||||
module.h \
|
module.h \
|
||||||
netsplit.h \
|
netsplit.h \
|
||||||
servers-idle.h \
|
servers-idle.h \
|
||||||
servers-redirect.h
|
servers-redirect.h \
|
||||||
|
signal-registry.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
signal-registry.def
|
||||||
|
|
||||||
|
signal-registry.def: signal-registry.def.in
|
||||||
|
$(top_srcdir)/utils/signals-to-reg.pl $^ > $@
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
#include "signals.h"
|
#include "signals.h"
|
||||||
|
#include "core/signal-registry.h"
|
||||||
|
#include "signal-registry.h"
|
||||||
|
|
||||||
#include "modes.h"
|
#include "modes.h"
|
||||||
#include "irc-servers.h"
|
#include "irc-servers.h"
|
||||||
@ -29,79 +31,89 @@
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
static void sig_server_connect_copy(SERVER_CONNECT_REC **dest,
|
static void sig_server_connect_copy(SERVER_CONNECT_REC **dest,
|
||||||
IRC_SERVER_CONNECT_REC *src)
|
SERVER_CONNECT_REC *src)
|
||||||
{
|
{
|
||||||
IRC_SERVER_CONNECT_REC *rec;
|
IRC_SERVER_CONNECT_REC *rec, *irc_src;
|
||||||
|
|
||||||
g_return_if_fail(dest != NULL);
|
g_return_if_fail(dest != NULL);
|
||||||
if (!IS_IRC_SERVER_CONNECT(src))
|
if ((irc_src = IRC_SERVER_CONNECT(src)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rec = g_new0(IRC_SERVER_CONNECT_REC, 1);
|
rec = g_new0(IRC_SERVER_CONNECT_REC, 1);
|
||||||
rec->chat_type = IRC_PROTOCOL;
|
rec->chat_type = IRC_PROTOCOL;
|
||||||
rec->max_cmds_at_once = src->max_cmds_at_once;
|
rec->max_cmds_at_once = irc_src->max_cmds_at_once;
|
||||||
rec->cmd_queue_speed = src->cmd_queue_speed;
|
rec->cmd_queue_speed = irc_src->cmd_queue_speed;
|
||||||
rec->max_query_chans = src->max_query_chans;
|
rec->max_query_chans = irc_src->max_query_chans;
|
||||||
rec->max_kicks = src->max_kicks;
|
rec->max_kicks = irc_src->max_kicks;
|
||||||
rec->max_modes = src->max_modes;
|
rec->max_modes = irc_src->max_modes;
|
||||||
rec->max_msgs = src->max_msgs;
|
rec->max_msgs = irc_src->max_msgs;
|
||||||
rec->max_whois = src->max_whois;
|
rec->max_whois = irc_src->max_whois;
|
||||||
rec->usermode = g_strdup(src->usermode);
|
rec->usermode = g_strdup(irc_src->usermode);
|
||||||
rec->alternate_nick = g_strdup(src->alternate_nick);
|
rec->alternate_nick = g_strdup(irc_src->alternate_nick);
|
||||||
rec->sasl_mechanism = src->sasl_mechanism;
|
rec->sasl_mechanism = irc_src->sasl_mechanism;
|
||||||
rec->sasl_username = src->sasl_username;
|
rec->sasl_username = irc_src->sasl_username;
|
||||||
rec->sasl_password = src->sasl_password;
|
rec->sasl_password = irc_src->sasl_password;
|
||||||
*dest = (SERVER_CONNECT_REC *) rec;
|
*dest = (SERVER_CONNECT_REC *) rec;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_server_reconnect_save_status(IRC_SERVER_CONNECT_REC *conn,
|
static void sig_server_reconnect_save_status(SERVER_CONNECT_REC *conn,
|
||||||
IRC_SERVER_REC *server)
|
SERVER_REC *server)
|
||||||
{
|
{
|
||||||
if (!IS_IRC_SERVER_CONNECT(conn) || !IS_IRC_SERVER(server) ||
|
IRC_SERVER_CONNECT_REC *irc_conn;
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
|
if ((irc_conn = IRC_SERVER_CONNECT(conn)) == NULL || (irc_server = IRC_SERVER(server)) == NULL ||
|
||||||
!server->connected)
|
!server->connected)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_free_not_null(conn->channels);
|
g_free_not_null(irc_conn->channels);
|
||||||
conn->channels = irc_server_get_channels(server);
|
irc_conn->channels = irc_server_get_channels(irc_server);
|
||||||
|
|
||||||
g_free_not_null(conn->usermode);
|
g_free_not_null(irc_conn->usermode);
|
||||||
conn->usermode = g_strdup(server->wanted_usermode);
|
irc_conn->usermode = g_strdup(irc_server->wanted_usermode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_connected(IRC_SERVER_REC *server)
|
static void sig_connected(SERVER_REC *server, const char *u0, const char *u1, const char *u2)
|
||||||
{
|
{
|
||||||
if (!IS_IRC_SERVER(server) || !server->connrec->reconnection)
|
IRC_SERVER_REC *irc_server;
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL || !irc_server->connrec->reconnection)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (server->connrec->away_reason != NULL)
|
if (irc_server->connrec->away_reason != NULL)
|
||||||
irc_server_send_away(server, server->connrec->away_reason);
|
irc_server_send_away(irc_server, irc_server->connrec->away_reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_nick_collision(IRC_SERVER_REC *server, const char *data)
|
static void event_nick_collision(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
|
|
||||||
time_t new_connect;
|
time_t new_connect;
|
||||||
|
|
||||||
if (!IS_IRC_SERVER(server))
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* after server kills us because of nick collision, we want to
|
/* after server kills us because of nick collision, we want to
|
||||||
connect back immediately. but no matter how hard they kill us,
|
connect back immediately. but no matter how hard they kill us,
|
||||||
don't connect to the server more than once in every 10 seconds. */
|
don't connect to the server more than once in every 10 seconds. */
|
||||||
|
|
||||||
new_connect = server->connect_time+10 -
|
new_connect = irc_server->connect_time+10 -
|
||||||
settings_get_time("server_reconnect_time")/1000;
|
settings_get_time("server_reconnect_time")/1000;
|
||||||
if (server->connect_time > new_connect)
|
if (irc_server->connect_time > new_connect)
|
||||||
server->connect_time = new_connect;
|
irc_server->connect_time = new_connect;
|
||||||
|
|
||||||
server->nick_collision = TRUE;
|
irc_server->nick_collision = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_kill(IRC_SERVER_REC *server, const char *data,
|
static void event_kill(SERVER_REC *server, const char *data,
|
||||||
const char *nick, const char *addr)
|
const char *nick, const char *addr)
|
||||||
{
|
{
|
||||||
if (addr != NULL && !server->nick_collision) {
|
IRC_SERVER_REC *irc_server;
|
||||||
|
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (addr != NULL && !irc_server->nick_collision) {
|
||||||
/* don't reconnect if we were killed by an oper (not server) */
|
/* don't reconnect if we were killed by an oper (not server) */
|
||||||
server->no_reconnect = TRUE;
|
irc_server->no_reconnect = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,21 +735,25 @@ static void event_connected(SERVER_REC *server, const char *data, const char *fr
|
|||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_server_info(IRC_SERVER_REC *server, const char *data)
|
static void event_server_info(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
char *params, *ircd_version, *usermodes, *chanmodes;
|
char *params, *ircd_version, *usermodes, *chanmodes;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 5, NULL, NULL, &ircd_version, &usermodes, &chanmodes);
|
params = event_get_params(data, 5, NULL, NULL, &ircd_version, &usermodes, &chanmodes);
|
||||||
|
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
/* check if server understands I and e channel modes */
|
/* check if server understands I and e channel modes */
|
||||||
if (strchr(chanmodes, 'I') && strchr(chanmodes, 'e'))
|
if (strchr(chanmodes, 'I') && strchr(chanmodes, 'e'))
|
||||||
server->emode_known = TRUE;
|
irc_server->emode_known = TRUE;
|
||||||
|
|
||||||
/* save server version */
|
/* save server version */
|
||||||
g_free_not_null(server->version);
|
g_free_not_null(irc_server->version);
|
||||||
server->version = g_strdup(ircd_version);
|
irc_server->version = g_strdup(ircd_version);
|
||||||
|
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
@ -799,15 +803,19 @@ static void parse_prefix(IRC_SERVER_REC *server, const char *sptr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_isupport(IRC_SERVER_REC *server, const char *data)
|
static void event_isupport(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
char **item, *sptr, *eptr;
|
char **item, *sptr, *eptr;
|
||||||
char **isupport;
|
char **isupport;
|
||||||
gpointer key, value;
|
gpointer key, value;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
server->isupport_sent = TRUE;
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
irc_server->isupport_sent = TRUE;
|
||||||
|
|
||||||
sptr = strchr(data, ' ');
|
sptr = strchr(data, ' ');
|
||||||
if (sptr == NULL)
|
if (sptr == NULL)
|
||||||
@ -838,13 +846,13 @@ static void event_isupport(IRC_SERVER_REC *server, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
key = value = NULL;
|
key = value = NULL;
|
||||||
if (!g_hash_table_lookup_extended(server->isupport, eptr,
|
if (!g_hash_table_lookup_extended(irc_server->isupport, eptr,
|
||||||
&key, &value) && removed)
|
&key, &value) && removed)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
g_hash_table_remove(server->isupport, eptr);
|
g_hash_table_remove(irc_server->isupport, eptr);
|
||||||
if (!removed) {
|
if (!removed) {
|
||||||
g_hash_table_insert(server->isupport, g_strdup(eptr),
|
g_hash_table_insert(irc_server->isupport, g_strdup(eptr),
|
||||||
g_strdup(sptr != NULL ? sptr : ""));
|
g_strdup(sptr != NULL ? sptr : ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -852,7 +860,7 @@ static void event_isupport(IRC_SERVER_REC *server, const char *data)
|
|||||||
g_free(value);
|
g_free(value);
|
||||||
}
|
}
|
||||||
g_strfreev(isupport);
|
g_strfreev(isupport);
|
||||||
irc_server_init_isupport(server);
|
irc_server_init_isupport(irc_server);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -877,28 +885,41 @@ static void event_motd(SERVER_REC *server, const char *data, const char *from, c
|
|||||||
event_connected(server, data, from, NULL);
|
event_connected(server, data, from, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_end_of_motd(IRC_SERVER_REC *server, const char *data)
|
static void event_end_of_motd(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
server->motd_got = TRUE;
|
IRC_SERVER_REC *irc_server;
|
||||||
|
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
irc_server->motd_got = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_channels_formed(IRC_SERVER_REC *server, const char *data)
|
static void event_channels_formed(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
char *params, *channels;
|
char *params, *channels;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
params = event_get_params(data, 2, NULL, &channels);
|
params = event_get_params(data, 2, NULL, &channels);
|
||||||
server->channels_formed = atoi(channels);
|
irc_server->channels_formed = atoi(channels);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_hosthidden(IRC_SERVER_REC *server, const char *data)
|
static void event_hosthidden(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
char *params, *newhost, *p, *newuserhost;
|
char *params, *newhost, *p, *newuserhost;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
params = event_get_params(data, 2, NULL, &newhost);
|
params = event_get_params(data, 2, NULL, &newhost);
|
||||||
/* do a sanity check */
|
/* do a sanity check */
|
||||||
if (!strchr(newhost, '*') && !strchr(newhost, '?') &&
|
if (!strchr(newhost, '*') && !strchr(newhost, '?') &&
|
||||||
@ -909,49 +930,62 @@ static void event_hosthidden(IRC_SERVER_REC *server, const char *data)
|
|||||||
newhost[strlen(newhost) - 1] != '-') {
|
newhost[strlen(newhost) - 1] != '-') {
|
||||||
if (strchr(newhost, '@')) {
|
if (strchr(newhost, '@')) {
|
||||||
newuserhost = g_strdup(newhost);
|
newuserhost = g_strdup(newhost);
|
||||||
g_free(server->userhost);
|
g_free(irc_server->userhost);
|
||||||
server->userhost = newuserhost;
|
irc_server->userhost = newuserhost;
|
||||||
} else if (server->userhost != NULL) {
|
} else if (irc_server->userhost != NULL) {
|
||||||
/* no user@, only process if we know the user@
|
/* no user@, only process if we know the user@
|
||||||
* already
|
* already
|
||||||
*/
|
*/
|
||||||
p = strchr(server->userhost, '@');
|
p = strchr(irc_server->userhost, '@');
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
p = server->userhost;
|
p = irc_server->userhost;
|
||||||
newuserhost = g_strdup_printf("%.*s@%s", (int)(p - server->userhost), server->userhost, newhost);
|
newuserhost = g_strdup_printf("%.*s@%s", (int)(p - irc_server->userhost), irc_server->userhost, newhost);
|
||||||
g_free(server->userhost);
|
g_free(irc_server->userhost);
|
||||||
server->userhost = newuserhost;
|
irc_server->userhost = newuserhost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_server_banned(IRC_SERVER_REC *server, const char *data)
|
static void event_server_banned(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
server->banned = TRUE;
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
irc_server->banned = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_error(IRC_SERVER_REC *server, const char *data)
|
static void event_error(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
if (!server->connected && (stristr(data, "Unauthorized") != NULL ||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!irc_server->connected && (stristr(data, "Unauthorized") != NULL ||
|
||||||
stristr(data, "K-lined") != NULL ||
|
stristr(data, "K-lined") != NULL ||
|
||||||
stristr(data, "Banned") != NULL ||
|
stristr(data, "Banned") != NULL ||
|
||||||
stristr(data, "Bad user info") != NULL))
|
stristr(data, "Bad user info") != NULL))
|
||||||
server->banned = TRUE;
|
irc_server->banned = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_ping(IRC_SERVER_REC *server, const char *data)
|
static void event_ping(SERVER_REC *server, const char *data, const char *u0, const char *u1)
|
||||||
{
|
{
|
||||||
|
IRC_SERVER_REC *irc_server;
|
||||||
char *params, *origin, *target, *str;
|
char *params, *origin, *target, *str;
|
||||||
|
|
||||||
|
if ((irc_server = IRC_SERVER(server)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
params = event_get_params(data, 2, &origin, &target);
|
params = event_get_params(data, 2, &origin, &target);
|
||||||
str = *target == '\0' ? g_strconcat("PONG :", origin, NULL) :
|
str = *target == '\0' ? g_strconcat("PONG :", origin, NULL) :
|
||||||
g_strdup_printf("PONG %s :%s", target, origin);
|
g_strdup_printf("PONG %s :%s", target, origin);
|
||||||
irc_send_cmd_now(server, str);
|
irc_send_cmd_now(irc_server, str);
|
||||||
g_free(str);
|
g_free(str);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
@ -1051,14 +1085,14 @@ void irc_servers_init(void)
|
|||||||
signal_add__event_("004", event_server_info);
|
signal_add__event_("004", event_server_info);
|
||||||
signal_add__event_("005", event_isupport);
|
signal_add__event_("005", event_isupport);
|
||||||
signal_add__event_("375", event_motd);
|
signal_add__event_("375", event_motd);
|
||||||
signal_add_last__event_376(event_end_of_motd);
|
signal_add_last__event_("376", event_end_of_motd);
|
||||||
signal_add_last__event_422(event_end_of_motd); /* no motd */
|
signal_add_last__event_("422", event_end_of_motd); /* no motd */
|
||||||
signal_add__event_("254", event_channels_formed);
|
signal_add__event_("254", event_channels_formed);
|
||||||
signal_add__event_("396", event_hosthidden);
|
signal_add__event_("396", event_hosthidden);
|
||||||
signal_add__event_("465", event_server_banned);
|
signal_add__event_("465", event_server_banned);
|
||||||
signal_add__event_("error", event_error);
|
signal_add__event_("error", event_error);
|
||||||
signal_add__event_("ping", event_ping);
|
signal_add__event_("ping", event_ping);
|
||||||
signal_add__event_("empty", event_empty);
|
signal_add__event_("empty", (signal_func_event__t) event_empty);
|
||||||
|
|
||||||
irc_servers_setup_init();
|
irc_servers_setup_init();
|
||||||
irc_servers_reconnect_init();
|
irc_servers_reconnect_init();
|
||||||
@ -1085,7 +1119,7 @@ void irc_servers_deinit(void)
|
|||||||
signal_remove__event_("465", event_server_banned);
|
signal_remove__event_("465", event_server_banned);
|
||||||
signal_remove__event_("error", event_error);
|
signal_remove__event_("error", event_error);
|
||||||
signal_remove__event_("ping", event_ping);
|
signal_remove__event_("ping", event_ping);
|
||||||
signal_remove__event_("empty", event_empty);
|
signal_remove__event_("empty", (signal_func_event__t) event_empty);
|
||||||
|
|
||||||
irc_servers_setup_deinit();
|
irc_servers_setup_deinit();
|
||||||
irc_servers_reconnect_deinit();
|
irc_servers_reconnect_deinit();
|
||||||
|
@ -20,6 +20,6 @@ typedef struct SERVER_DCC_REC SERVER_DCC_REC;
|
|||||||
typedef void *int_in_ptr;
|
typedef void *int_in_ptr;
|
||||||
typedef void *uint_in_ptr;
|
typedef void *uint_in_ptr;
|
||||||
|
|
||||||
#include "signal-registry.def"
|
#include "irc/core/signal-registry.def"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -40,3 +40,9 @@ noinst_HEADERS = \
|
|||||||
otr-formats.h \
|
otr-formats.h \
|
||||||
otr-fe.h \
|
otr-fe.h \
|
||||||
otr.h
|
otr.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
signal-registry.def
|
||||||
|
|
||||||
|
signal-registry.def: signal-registry.def.in
|
||||||
|
$(top_srcdir)/utils/signals-to-reg.pl $^ > $@
|
||||||
|
@ -3,4 +3,5 @@ EXTRA_DIST = \
|
|||||||
irssi-version.sh \
|
irssi-version.sh \
|
||||||
syntax.pl \
|
syntax.pl \
|
||||||
tap-driver.sh \
|
tap-driver.sh \
|
||||||
tap-test
|
tap-test \
|
||||||
|
signals-to-reg.pl
|
||||||
|
24
utils/signals-to-reg.pl
Executable file
24
utils/signals-to-reg.pl
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
use strict; use warnings;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
my $args = y/,//;
|
||||||
|
s{^\s* " ([^"]*?)(\s)? "(?:<([^>]+)>)? }{SIGNAL_REGISTER@{[
|
||||||
|
$2 ? "_" : ""
|
||||||
|
]}(@{[ $1 =~ s/_/__/gr =~ s/ /_/gr ]}, $args@{[
|
||||||
|
$2 ? ", const char *\L$3" : ""]}}gx ;
|
||||||
|
my %X;
|
||||||
|
s{ (\w+)_REC(,|$) }{$1_REC *\L$1@{[ $X{"\L$1"}++ || "" ]}$2}gx ;
|
||||||
|
s{ CONFIG_(\w+)(,|$) }{CONFIG_$1 *\L$1@{[ $X{"\L$1"}++ || "" ]}$2}gx ;
|
||||||
|
/\(/ && s/$/)/ ;
|
||||||
|
s/ (u?)int (?![*])/ $1int_in_ptr /g;
|
||||||
|
s{ (SIGNAL_REGISTER(_)?\(\w+,\ (\d+))(,\ (.*?))?\) }{$1, (@{[ $4 ? $5 : "void" ]})@{[
|
||||||
|
$4
|
||||||
|
? ",\n\t". $5 =~ s{[^,]* [*]*(\w+)\s*(?:/\*.*?\*/\s*)*(,|$)}{ $1$2}gr
|
||||||
|
: ""
|
||||||
|
]})}gx ;
|
||||||
|
s{ SIGNAL_REGISTER_\(\w+,\ \d+,\ \([^,]+(?:,\ (.*?))?\),\K}{\n\t(@{[ $1 ? $1 : "void" ]}),}gx ;
|
||||||
|
}
|
||||||
|
continue {
|
||||||
|
print;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user