1
0
mirror of https://github.com/irssi/irssi.git synced 2025-02-02 15:08:01 -05:00

/set autocreate_query -> /set autocreate_query_level

fixes to /ircnet, /server and /channel commands
other updates and fixes


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@649 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2000-09-06 21:30:56 +00:00 committed by cras
parent 008ec45db2
commit 2d1ac3059a
24 changed files with 348 additions and 273 deletions

View File

@ -51,7 +51,7 @@ AC_ARG_WITH(bot,
want_irssibot=yes want_irssibot=yes
fi fi
fi, fi,
want_irssibot=yes) want_irssibot=no)
AC_ARG_WITH(modules, AC_ARG_WITH(modules,
[ --with-modules Specify what modules to build in binary], [ --with-modules Specify what modules to build in binary],
@ -284,7 +284,7 @@ if test "$want_perl" = "yes"; then
else else
PERL_LIBS="" PERL_LIBS=""
fi fi
FE_COMMON_LIBS="../fe-common/core/libfe_common_core.a" FE_COMMON_LIBS=""
CHAT_LIBS="" CHAT_LIBS=""
for c in $CHAT_MODULES; do for c in $CHAT_MODULES; do
@ -294,14 +294,14 @@ for c in $CHAT_MODULES; do
fe_module_deinits="" fe_module_deinits=""
CHAT_LIBS="$CHAT_LIBS ../$c/lib$c.a ../$c/core/lib${c}_core.a" CHAT_LIBS="$CHAT_LIBS ../$c/lib$c.a ../$c/core/lib${c}_core.a"
if test -d $srcdir/src/fe-common/$c; then if test -d $srcdir/src/fe-common/$c; then
FE_COMMON_LIBS="$FE_COMMON_LIBS ../fe-common/$c/libfe_common_$c.a" FE_COMMON_LIBS="$FE_COMMON_LIBS../fe-common/$c/libfe_common_$c.a "
fi fi
for s in `eval echo \\$${c}_MODULES`; do for s in `eval echo \\$${c}_MODULES`; do
CHAT_LIBS="$CHAT_LIBS ../$c/$s/.libs/lib${c}_$s.a" CHAT_LIBS="$CHAT_LIBS ../$c/$s/.libs/lib${c}_$s.a"
module_inits="$module_inits ${c}_${s}_init();" module_inits="$module_inits ${c}_${s}_init();"
module_deinits="${c}_${s}_deinit(); $module_deinits" module_deinits="${c}_${s}_deinit(); $module_deinits"
if test -d $srcdir/src/fe-common/$c/$s; then if test -d $srcdir/src/fe-common/$c/$s; then
FE_COMMON_LIBS="$FE_COMMON_LIBS ../fe-common/$c/$s/.libs/libfe_common_${c}_$s.a" FE_COMMON_LIBS="$FE_COMMON_LIBS../fe-common/$c/$s/.libs/libfe_common_${c}_$s.a "
fe_module_inits="$fe_module_inits fe_${c}_${s}_init();" fe_module_inits="$fe_module_inits fe_${c}_${s}_init();"
fe_module_deinits="fe_${c}_${s}_deinit(); $fe_module_deinits" fe_module_deinits="fe_${c}_${s}_deinit(); $fe_module_deinits"
fi fi
@ -329,6 +329,8 @@ for c in $CHAT_MODULES; do
fi fi
done done
FE_COMMON_LIBS="$FE_COMMON_LIBS../fe-common/core/libfe_common_core.a"
dnl ** dnl **
dnl ** internationalization support dnl ** internationalization support
dnl ** dnl **
@ -418,7 +420,7 @@ else
echo " --with-curses=/dir and make sure you have the curses headers" echo " --with-curses=/dir and make sure you have the curses headers"
echo " installed (usually in ncurses-devel package)" echo " installed (usually in ncurses-devel package)"
fi fi
echo "Building irssi-bot ......... : $want_irssibot" echo "Building irssi bot ......... : $want_irssibot"
echo "Building with IPv6 support . : $want_ipv6" echo "Building with IPv6 support . : $want_ipv6"
echo "Building with Perl support . : $want_perl" echo "Building with Perl support . : $want_perl"
if test "x$want_perl" = "xyes"; then if test "x$want_perl" = "xyes"; then

View File

@ -25,22 +25,22 @@
foreground background foreground background
------------------------------------------------------- -------------------------------------------------------
0 white black 0 white black
1 ligh gray --- 1 ligh gray ---
2 blue blue 2 blue blue
3 green green 3 green green
4 light red --- 4 light red ---
5 orange orange 5 orange orange
6 magenta (purple) magenta 6 magenta (purple) magenta
7 red red 7 red red
8 yellow --- 8 yellow ---
9 light green --- 9 light green ---
10 cyan cyan 10 cyan cyan
11 light cyan --- 11 light cyan ---
12 light blue --- 12 light blue ---
13 light magenta --- 13 light magenta ---
14 gray black on black 14 gray black on black
15 light gray black on black 15 light gray black on black
gray on light gray (with bold) gray on light gray (with bold)
These colors may differ depending on your terminal. These colors may differ depending on your terminal.

View File

@ -54,7 +54,7 @@ void *chatnet_save(CHATNET_REC *chatnet, void *parentnode)
CONFIG_NODE *node = parentnode; CONFIG_NODE *node = parentnode;
g_return_val_if_fail(parentnode != NULL, NULL); g_return_val_if_fail(parentnode != NULL, NULL);
g_return_val_if_fail(IS_CHATNET(chatnet), NULL); g_return_val_if_fail(chatnet != NULL, NULL);
node = config_node_section(node, chatnet->name, NODE_TYPE_BLOCK); node = config_node_section(node, chatnet->name, NODE_TYPE_BLOCK);
iconfig_node_clear(node); iconfig_node_clear(node);
@ -83,7 +83,7 @@ void chatnet_remove(CHATNET_REC *chatnet)
g_return_if_fail(IS_CHATNET(chatnet)); g_return_if_fail(IS_CHATNET(chatnet));
signal_emit("chatnet removed", 1, chatnet); signal_emit("chatnet removed", 1, chatnet);
chatnet_destroy(chatnet); chatnet_destroy(chatnet);
} }
void chatnet_destroy(CHATNET_REC *chatnet) void chatnet_destroy(CHATNET_REC *chatnet)
@ -135,6 +135,7 @@ static void sig_connected(SERVER_REC *server)
void chatnets_init(void) void chatnets_init(void)
{ {
chatnets = NULL;
signal_add("event connected", (SIGNAL_FUNC) sig_connected); signal_add("event connected", (SIGNAL_FUNC) sig_connected);
} }

View File

@ -338,6 +338,7 @@ void module_unload(MODULE_REC *module)
module_deinit(); module_deinit();
g_free(deinitfunc); g_free(deinitfunc);
signals_remove_module(module->name);
g_module_close(module->gmodule); g_module_close(module->gmodule);
g_free(module->name); g_free(module->name);
g_free(module); g_free(module);

View File

@ -36,6 +36,10 @@ int server_operator:1;
int usermode_away:1; int usermode_away:1;
int banned:1; /* not allowed to connect to this server */ int banned:1; /* not allowed to connect to this server */
time_t lag_sent; /* 0 or time when last lag query was sent to server */
time_t lag_last_check; /* last time we checked lag */
int lag; /* server lag in milliseconds */
GSList *channels; GSList *channels;
GSList *queries; GSList *queries;

View File

@ -385,6 +385,7 @@ static void server_setup_destroy(SERVER_SETUP_REC *rec)
void server_setup_add(SERVER_SETUP_REC *rec) void server_setup_add(SERVER_SETUP_REC *rec)
{ {
rec->type = module_get_uniq_id("SERVER SETUP", 0);
if (g_slist_find(setupservers, rec) == NULL) if (g_slist_find(setupservers, rec) == NULL)
setupservers = g_slist_append(setupservers, rec); setupservers = g_slist_append(setupservers, rec);
server_setup_save(rec); server_setup_save(rec);

View File

@ -31,10 +31,11 @@
#include "windows.h" #include "windows.h"
#include "window-items.h" #include "window-items.h"
static int queryclose_tag, query_auto_close; static int queryclose_tag, query_auto_close, querycreate_level;
/* Return query where to put the private message. */ /* Return query where to put the private message. */
QUERY_REC *privmsg_get_query(SERVER_REC *server, const char *nick, int own) QUERY_REC *privmsg_get_query(SERVER_REC *server, const char *nick,
int own, int level)
{ {
QUERY_REC *query; QUERY_REC *query;
@ -42,7 +43,7 @@ QUERY_REC *privmsg_get_query(SERVER_REC *server, const char *nick, int own)
g_return_val_if_fail(nick != NULL, NULL); g_return_val_if_fail(nick != NULL, NULL);
query = query_find(server, nick); query = query_find(server, nick);
if (query == NULL && settings_get_bool("autocreate_query") && if (query == NULL && (querycreate_level & level) != 0 &&
(!own || settings_get_bool("autocreate_own_query"))) (!own || settings_get_bool("autocreate_own_query")))
query = query_create(server->chat_type, server, nick, TRUE); query = query_create(server->chat_type, server, nick, TRUE);
@ -263,6 +264,7 @@ static int sig_query_autoclose(void)
static void read_settings(void) static void read_settings(void)
{ {
querycreate_level = level2bits(settings_get_str("autocreate_query_level"));
query_auto_close = settings_get_int("autoclose_query"); query_auto_close = settings_get_int("autoclose_query");
if (query_auto_close > 0 && queryclose_tag == -1) if (query_auto_close > 0 && queryclose_tag == -1)
queryclose_tag = g_timeout_add(5000, (GSourceFunc) sig_query_autoclose, NULL); queryclose_tag = g_timeout_add(5000, (GSourceFunc) sig_query_autoclose, NULL);
@ -274,7 +276,7 @@ static void read_settings(void)
void fe_queries_init(void) void fe_queries_init(void)
{ {
settings_add_bool("lookandfeel", "autocreate_query", TRUE); settings_add_str("lookandfeel", "autocreate_query_level", "MSGS");
settings_add_bool("lookandfeel", "autocreate_own_query", TRUE); settings_add_bool("lookandfeel", "autocreate_own_query", TRUE);
settings_add_int("lookandfeel", "autoclose_query", 0); settings_add_int("lookandfeel", "autoclose_query", 0);

View File

@ -4,7 +4,8 @@
#include "queries.h" #include "queries.h"
/* Return query where to put the private message. */ /* Return query where to put the private message. */
QUERY_REC *privmsg_get_query(SERVER_REC *server, const char *nick, int own); QUERY_REC *privmsg_get_query(SERVER_REC *server, const char *nick,
int own, int level);
void fe_queries_init(void); void fe_queries_init(void);
void fe_queries_deinit(void); void fe_queries_deinit(void);

View File

@ -20,13 +20,186 @@
#include "module.h" #include "module.h"
#include "signals.h" #include "signals.h"
#include "commands.h"
#include "network.h" #include "network.h"
#include "levels.h" #include "levels.h"
#include "servers.h"
#include "settings.h" #include "settings.h"
#include "chat-protocols.h"
#include "servers.h"
#include "servers-setup.h"
#include "servers-reconnect.h"
#include "module-formats.h" #include "module-formats.h"
static void print_servers(void)
{
GSList *tmp;
for (tmp = servers; tmp != NULL; tmp = tmp->next) {
SERVER_REC *rec = tmp->data;
printformat(NULL, NULL, MSGLEVEL_CRAP, IRCTXT_SERVER_LIST,
rec->tag, rec->connrec->address, rec->connrec->port,
rec->connrec->chatnet == NULL ? "" : rec->connrec->chatnet, rec->connrec->nick);
}
}
static void print_lookup_servers(void)
{
GSList *tmp;
for (tmp = lookup_servers; tmp != NULL; tmp = tmp->next) {
SERVER_REC *rec = tmp->data;
printformat(NULL, NULL, MSGLEVEL_CRAP, IRCTXT_SERVER_LOOKUP_LIST,
rec->tag, rec->connrec->address, rec->connrec->port,
rec->connrec->chatnet == NULL ? "" : rec->connrec->chatnet, rec->connrec->nick);
}
}
static void print_reconnects(void)
{
GSList *tmp;
char *tag, *next_connect;
int left;
for (tmp = reconnects; tmp != NULL; tmp = tmp->next) {
RECONNECT_REC *rec = tmp->data;
SERVER_CONNECT_REC *conn = rec->conn;
tag = g_strdup_printf("RECON-%d", rec->tag);
left = rec->next_connect-time(NULL);
next_connect = g_strdup_printf("%02d:%02d", left/60, left%60);
printformat(NULL, NULL, MSGLEVEL_CRAP, IRCTXT_SERVER_RECONNECT_LIST,
tag, conn->address, conn->port,
conn->chatnet == NULL ? "" : conn->chatnet,
conn->nick, next_connect);
g_free(next_connect);
g_free(tag);
}
}
/* SYNTAX: SERVER ADD [-auto | -noauto] [-host <hostname>]
[-cmdspeed <ms>] [-cmdmax <count>] [-port <port>]
<address> [<port> [<password>]] */
static void cmd_server_add(const char *data)
{
GHashTable *optlist;
SERVER_SETUP_REC *rec;
char *addr, *portstr, *password, *value;
void *free_arg;
int port;
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_OPTIONS,
"server add", &optlist, &addr, &portstr, &password))
return;
if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
port = *portstr == '\0' ? 6667 : atoi(portstr);
rec = server_setup_find_port(addr, port);
if (rec == NULL) {
signal_emit("server add create", 2, &rec, optlist);
if (rec == NULL) {
/* no chatnet option specified, use the first. */
g_hash_table_insert(optlist, (char *) chat_protocol_get_chatnet(1), "");
signal_emit("server add create", 2, &rec, optlist);
if (rec == NULL) {
/* bug? */
cmd_params_free(free_arg);
return;
}
}
rec->address = g_strdup(addr);
rec->port = port;
} else {
value = g_hash_table_lookup(optlist, "port");
if (value != NULL && *value != '\0') rec->port = atoi(value);
if (*password != '\0') g_free_and_null(rec->password);
if (g_hash_table_lookup(optlist, "host")) {
g_free_and_null(rec->own_host);
rec->own_ip = NULL;
}
}
if (g_hash_table_lookup(optlist, "auto")) rec->autoconnect = TRUE;
if (g_hash_table_lookup(optlist, "noauto")) rec->autoconnect = FALSE;
if (*password != '\0' && strcmp(password, "-") != 0) rec->password = g_strdup(password);
value = g_hash_table_lookup(optlist, "host");
if (value != NULL && *value != '\0') {
rec->own_host = g_strdup(value);
rec->own_ip = NULL;
}
signal_emit("server add fill", 2, rec, optlist);
server_setup_add(rec);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_SETUPSERVER_ADDED, addr, port);
cmd_params_free(free_arg);
}
/* SYNTAX: SERVER REMOVE <address> [<port>] */
static void cmd_server_remove(const char *data)
{
SERVER_SETUP_REC *rec;
char *addr, *portstr;
void *free_arg;
int port;
if (!cmd_get_params(data, &free_arg, 2, &addr, &portstr))
return;
if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
port = *portstr == '\0' ? -1 : atoi(portstr);
rec = server_setup_find_port(addr, port);
if (rec == NULL)
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_SETUPSERVER_NOT_FOUND, addr, port);
else {
server_setup_remove(rec);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_SETUPSERVER_REMOVED, addr, port);
}
cmd_params_free(free_arg);
}
static void cmd_server(const char *data, SERVER_REC *server, void *item)
{
GHashTable *optlist;
char *addr;
void *free_arg;
if (*data == '\0') {
print_servers();
print_lookup_servers();
print_reconnects();
signal_stop();
return;
}
if (g_strncasecmp(data, "add ", 4) == 0 ||
g_strncasecmp(data, "remove ", 7) == 0 ||
g_strcasecmp(data, "list") == 0 ||
g_strncasecmp(data, "list ", 5) == 0) {
command_runsub("server", data, server, item);
signal_stop();
return;
}
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS,
"connect", &optlist, &addr))
return;
if (*addr == '\0' || strcmp(addr, "+") == 0)
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
if (*addr == '+') window_create(NULL, FALSE);
cmd_params_free(free_arg);
}
static void sig_server_looking(SERVER_REC *server) static void sig_server_looking(SERVER_REC *server)
{ {
g_return_if_fail(server != NULL); g_return_if_fail(server != NULL);
@ -85,22 +258,64 @@ static void sig_server_quit(SERVER_REC *server, const char *msg)
IRCTXT_SERVER_QUIT, server->connrec->address, msg); IRCTXT_SERVER_QUIT, server->connrec->address, msg);
} }
static void sig_server_lag_disconnected(SERVER_REC *server)
{
g_return_if_fail(server != NULL);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
IRCTXT_LAG_DISCONNECTED, server->connrec->address, time(NULL)-server->lag_sent);
}
static void sig_server_reconnect_removed(RECONNECT_REC *reconnect)
{
g_return_if_fail(reconnect != NULL);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
IRCTXT_RECONNECT_REMOVED, reconnect->conn->address, reconnect->conn->port,
reconnect->conn->chatnet == NULL ? "" : reconnect->conn->chatnet);
}
static void sig_server_reconnect_not_found(const char *tag)
{
g_return_if_fail(tag != NULL);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
IRCTXT_RECONNECT_NOT_FOUND, tag);
}
void fe_server_init(void) void fe_server_init(void)
{ {
command_bind("server", NULL, (SIGNAL_FUNC) cmd_server);
command_bind("server add", NULL, (SIGNAL_FUNC) cmd_server_add);
command_bind("server remove", NULL, (SIGNAL_FUNC) cmd_server_remove);
command_set_options("server add", "auto noauto -host -cmdspeed -cmdmax -port");
signal_add("server looking", (SIGNAL_FUNC) sig_server_looking); signal_add("server looking", (SIGNAL_FUNC) sig_server_looking);
signal_add("server connecting", (SIGNAL_FUNC) sig_server_connecting); signal_add("server connecting", (SIGNAL_FUNC) sig_server_connecting);
signal_add("server connected", (SIGNAL_FUNC) sig_server_connected); signal_add("server connected", (SIGNAL_FUNC) sig_server_connected);
signal_add("server connect failed", (SIGNAL_FUNC) sig_connect_failed); signal_add("server connect failed", (SIGNAL_FUNC) sig_connect_failed);
signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected); signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected);
signal_add("server quit", (SIGNAL_FUNC) sig_server_quit); signal_add("server quit", (SIGNAL_FUNC) sig_server_quit);
signal_add("server lag disconnect", (SIGNAL_FUNC) sig_server_lag_disconnected);
signal_add("server reconnect remove", (SIGNAL_FUNC) sig_server_reconnect_removed);
signal_add("server reconnect not found", (SIGNAL_FUNC) sig_server_reconnect_not_found);
} }
void fe_server_deinit(void) void fe_server_deinit(void)
{ {
command_unbind("server", (SIGNAL_FUNC) cmd_server);
command_unbind("server add", (SIGNAL_FUNC) cmd_server_add);
command_unbind("server remove", (SIGNAL_FUNC) cmd_server_remove);
signal_remove("server looking", (SIGNAL_FUNC) sig_server_looking); signal_remove("server looking", (SIGNAL_FUNC) sig_server_looking);
signal_remove("server connecting", (SIGNAL_FUNC) sig_server_connecting); signal_remove("server connecting", (SIGNAL_FUNC) sig_server_connecting);
signal_remove("server connected", (SIGNAL_FUNC) sig_server_connected); signal_remove("server connected", (SIGNAL_FUNC) sig_server_connected);
signal_remove("server connect failed", (SIGNAL_FUNC) sig_connect_failed); signal_remove("server connect failed", (SIGNAL_FUNC) sig_connect_failed);
signal_remove("server disconnected", (SIGNAL_FUNC) sig_server_disconnected); signal_remove("server disconnected", (SIGNAL_FUNC) sig_server_disconnected);
signal_remove("server quit", (SIGNAL_FUNC) sig_server_quit); signal_remove("server quit", (SIGNAL_FUNC) sig_server_quit);
signal_remove("server lag disconnect", (SIGNAL_FUNC) sig_server_lag_disconnected);
signal_remove("server reconnect remove", (SIGNAL_FUNC) sig_server_reconnect_removed);
signal_remove("server reconnect not found", (SIGNAL_FUNC) sig_server_reconnect_not_found);
} }

View File

@ -46,9 +46,19 @@ FORMAT_REC fecommon_core_formats[] = {
{ "connection_established", "Connection to %_$0%_ established", 1, { 0 } }, { "connection_established", "Connection to %_$0%_ established", 1, { 0 } },
{ "cant_connect", "Unable to connect server %_$0%_ port %_$1%_ %K[%n$2%K]", 3, { 0, 1, 0 } }, { "cant_connect", "Unable to connect server %_$0%_ port %_$1%_ %K[%n$2%K]", 3, { 0, 1, 0 } },
{ "connection_lost", "Connection lost to %_$0%_", 1, { 0 } }, { "connection_lost", "Connection lost to %_$0%_", 1, { 0 } },
{ "lag_disconnected", "No PONG reply from server %_$0%_ in $1 seconds, disconnecting", 2, { 0, 1 } },
{ "disconnected", "Disconnected from %_$0%_ %K[%n$1%K]", 2, { 0, 0 } },
{ "server_quit", "Disconnecting from server $0: %K[%n$1%K]", 2, { 0, 0 } }, { "server_quit", "Disconnecting from server $0: %K[%n$1%K]", 2, { 0, 0 } },
{ "server_changed", "Changed to %_$2%_ server %_$1%_", 3, { 0, 0, 0 } }, { "server_changed", "Changed to %_$2%_ server %_$1%_", 3, { 0, 0, 0 } },
{ "unknown_server_tag", "Unknown server tag %_$0%_", 1, { 0 } }, { "unknown_server_tag", "Unknown server tag %_$0%_", 1, { 0 } },
{ "server_list", "%_$0%_: $1:$2 ($3)", 5, { 0, 0, 1, 0, 0 } },
{ "server_lookup_list", "%_$0%_: $1:$2 ($3) (connecting...)", 5, { 0, 0, 1, 0, 0 } },
{ "server_reconnect_list", "%_$0%_: $1:$2 ($3) ($5 left before reconnecting)", 6, { 0, 0, 1, 0, 0, 0 } },
{ "server_reconnect_removed", "Removed reconnection to server %_$0%_ port %_$1%_", 3, { 0, 1, 0 } },
{ "server_reconnect_not_found", "Reconnection tag %_$0%_ not found", 1, { 0 } },
{ "setupserver_added", "Server $0 saved", 2, { 0, 1 } },
{ "setupserver_removed", "Server $0 removed", 2, { 0, 1 } },
{ "setupserver_not_found", "Server $0 not found", 2, { 0, 1 } },
/* ---- */ /* ---- */
{ NULL, "Channels", 0 }, { NULL, "Channels", 0 },

View File

@ -23,9 +23,19 @@ enum {
IRCTXT_CONNECTION_ESTABLISHED, IRCTXT_CONNECTION_ESTABLISHED,
IRCTXT_CANT_CONNECT, IRCTXT_CANT_CONNECT,
IRCTXT_CONNECTION_LOST, IRCTXT_CONNECTION_LOST,
IRCTXT_LAG_DISCONNECTED,
IRCTXT_DISCONNECTED,
IRCTXT_SERVER_QUIT, IRCTXT_SERVER_QUIT,
IRCTXT_SERVER_CHANGED, IRCTXT_SERVER_CHANGED,
IRCTXT_UNKNOWN_SERVER_TAG, IRCTXT_UNKNOWN_SERVER_TAG,
IRCTXT_SERVER_LIST,
IRCTXT_SERVER_LOOKUP_LIST,
IRCTXT_SERVER_RECONNECT_LIST,
IRCTXT_RECONNECT_REMOVED,
IRCTXT_RECONNECT_NOT_FOUND,
IRCTXT_SETUPSERVER_ADDED,
IRCTXT_SETUPSERVER_REMOVED,
IRCTXT_SETUPSERVER_NOT_FOUND,
IRCTXT_FILL_3, IRCTXT_FILL_3,

View File

@ -98,7 +98,7 @@ static void print_channel_msg(IRC_SERVER_REC *server, const char *msg,
static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr) static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr)
{ {
WI_ITEM_REC *item; QUERY_REC *query;
char *params, *target, *msg; char *params, *target, *msg;
g_return_if_fail(data != NULL); g_return_if_fail(data != NULL);
@ -113,9 +113,9 @@ static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char *
print_channel_msg(server, msg, nick, addr, target); print_channel_msg(server, msg, nick, addr, target);
} else { } else {
/* private message */ /* private message */
item = (WI_ITEM_REC *) privmsg_get_query(SERVER(server), nick, FALSE); query = privmsg_get_query(SERVER(server), nick, FALSE, MSGLEVEL_MSGS);
printformat(server, nick, MSGLEVEL_MSGS, printformat(server, nick, MSGLEVEL_MSGS,
item == NULL ? IRCTXT_MSG_PRIVATE : IRCTXT_MSG_PRIVATE_QUERY, nick, addr, msg); query == NULL ? IRCTXT_MSG_PRIVATE : IRCTXT_MSG_PRIVATE_QUERY, nick, addr, msg);
} }
} }
@ -127,7 +127,7 @@ static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char *
static void ctcp_msg_check_action(const char *data, IRC_SERVER_REC *server, static void ctcp_msg_check_action(const char *data, IRC_SERVER_REC *server,
const char *nick, const char *addr, const char *target) const char *nick, const char *addr, const char *target)
{ {
WI_ITEM_REC *item; void *item;
int level; int level;
g_return_if_fail(data != NULL); g_return_if_fail(data != NULL);
@ -143,7 +143,7 @@ static void ctcp_msg_check_action(const char *data, IRC_SERVER_REC *server,
if (ischannel(*target)) { if (ischannel(*target)) {
/* channel action */ /* channel action */
item = (WI_ITEM_REC *) irc_channel_find(server, target); item = irc_channel_find(server, target);
if (window_item_is_active(item)) { if (window_item_is_active(item)) {
/* message to active channel in window */ /* message to active channel in window */
@ -156,7 +156,7 @@ static void ctcp_msg_check_action(const char *data, IRC_SERVER_REC *server,
} }
} else { } else {
/* private action */ /* private action */
item = (WI_ITEM_REC *) privmsg_get_query(SERVER(server), nick, FALSE); item = privmsg_get_query(SERVER(server), nick, FALSE, MSGLEVEL_MSGS);
printformat(server, nick, level, printformat(server, nick, level,
item == NULL ? IRCTXT_ACTION_PRIVATE : IRCTXT_ACTION_PRIVATE_QUERY, item == NULL ? IRCTXT_ACTION_PRIVATE : IRCTXT_ACTION_PRIVATE_QUERY,
nick, addr == NULL ? "" : addr, data); nick, addr == NULL ? "" : addr, data);
@ -185,16 +185,19 @@ static void event_notice(const char *data, IRC_SERVER_REC *server, const char *n
op_notice = *target == '@' && ischannel(target[1]); op_notice = *target == '@' && ischannel(target[1]);
if (op_notice) target++; if (op_notice) target++;
if (ignore_check(server, nick, addr, ischannel(*target) ?
target : NULL, msg, MSGLEVEL_NOTICES))
return;
if (ischannel(*target)) { if (ischannel(*target)) {
/* notice in some channel */ /* notice in some channel */
if (!ignore_check(server, nick, addr, target, msg, MSGLEVEL_NOTICES)) printformat(server, target, MSGLEVEL_NOTICES,
printformat(server, target, MSGLEVEL_NOTICES, op_notice ? IRCTXT_NOTICE_PUBLIC_OPS : IRCTXT_NOTICE_PUBLIC,
op_notice ? IRCTXT_NOTICE_PUBLIC_OPS : IRCTXT_NOTICE_PUBLIC, nick, target, msg);
nick, target, msg);
} else { } else {
/* private notice */ /* private notice */
if (!ignore_check(server, nick, addr, NULL, msg, MSGLEVEL_NOTICES)) privmsg_get_query(SERVER(server), nick, FALSE, MSGLEVEL_NOTICES);
printformat(server, nick, MSGLEVEL_NOTICES, IRCTXT_NOTICE_PRIVATE, nick, addr, msg); printformat(server, nick, MSGLEVEL_NOTICES, IRCTXT_NOTICE_PRIVATE, nick, addr, msg);
} }
} }
@ -552,31 +555,6 @@ static void sig_whowas_event_end(const char *data, IRC_SERVER_REC *server, const
g_free(params); g_free(params);
} }
static void sig_server_lag_disconnected(IRC_SERVER_REC *server)
{
g_return_if_fail(server != NULL);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
IRCTXT_LAG_DISCONNECTED, server->connrec->address, time(NULL)-server->lag_sent);
}
static void sig_server_reconnect_removed(RECONNECT_REC *reconnect)
{
g_return_if_fail(reconnect != NULL);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
IRCTXT_RECONNECT_REMOVED, reconnect->conn->address, reconnect->conn->port,
reconnect->conn->chatnet == NULL ? "" : reconnect->conn->chatnet);
}
static void sig_server_reconnect_not_found(const char *tag)
{
g_return_if_fail(tag != NULL);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
IRCTXT_RECONNECT_NOT_FOUND, tag);
}
static void event_received(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr) static void event_received(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr)
{ {
char *params, *cmd, *args, *ptr; char *params, *cmd, *args, *ptr;
@ -625,10 +603,6 @@ void fe_events_init(void)
signal_add("nickfind event whois", (SIGNAL_FUNC) event_nickfind_whois); signal_add("nickfind event whois", (SIGNAL_FUNC) event_nickfind_whois);
signal_add("ban type changed", (SIGNAL_FUNC) event_ban_type_changed); signal_add("ban type changed", (SIGNAL_FUNC) event_ban_type_changed);
signal_add("whowas event end", (SIGNAL_FUNC) sig_whowas_event_end); signal_add("whowas event end", (SIGNAL_FUNC) sig_whowas_event_end);
signal_add("server lag disconnect", (SIGNAL_FUNC) sig_server_lag_disconnected);
signal_add("server reconnect remove", (SIGNAL_FUNC) sig_server_reconnect_removed);
signal_add("server reconnect not found", (SIGNAL_FUNC) sig_server_reconnect_not_found);
} }
void fe_events_deinit(void) void fe_events_deinit(void)
@ -656,8 +630,4 @@ void fe_events_deinit(void)
signal_remove("nickfind event whois", (SIGNAL_FUNC) event_nickfind_whois); signal_remove("nickfind event whois", (SIGNAL_FUNC) event_nickfind_whois);
signal_remove("ban type changed", (SIGNAL_FUNC) event_ban_type_changed); signal_remove("ban type changed", (SIGNAL_FUNC) event_ban_type_changed);
signal_remove("whowas event end", (SIGNAL_FUNC) sig_whowas_event_end); signal_remove("whowas event end", (SIGNAL_FUNC) sig_whowas_event_end);
signal_remove("server lag disconnect", (SIGNAL_FUNC) sig_server_lag_disconnected);
signal_remove("server reconnect remove", (SIGNAL_FUNC) sig_server_reconnect_removed);
signal_remove("server reconnect not found", (SIGNAL_FUNC) sig_server_reconnect_not_found);
} }

View File

@ -118,7 +118,7 @@ static void cmd_msg(gchar *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
else else
{ {
/* private message */ /* private message */
item = (WI_ITEM_REC *) privmsg_get_query(SERVER(server), target, TRUE); item = (WI_ITEM_REC *) privmsg_get_query(SERVER(server), target, TRUE, MSGLEVEL_MSGS);
printformat(server, target, MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT, printformat(server, target, MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
item == NULL ? IRCTXT_OWN_MSG_PRIVATE : IRCTXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick); item == NULL ? IRCTXT_OWN_MSG_PRIVATE : IRCTXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick);
} }

View File

@ -33,132 +33,35 @@
#include "windows.h" #include "windows.h"
static void print_servers(void) static void sig_server_add_create(IRC_SERVER_SETUP_REC **rec,
GHashTable *optlist)
{ {
GSList *tmp; char *ircnet;
for (tmp = servers; tmp != NULL; tmp = tmp->next) { ircnet = g_hash_table_lookup(optlist, "ircnet");
SERVER_REC *rec = tmp->data; if (ircnet == NULL)
printformat(NULL, NULL, MSGLEVEL_CRAP, IRCTXT_SERVER_LIST,
rec->tag, rec->connrec->address, rec->connrec->port,
rec->connrec->chatnet == NULL ? "" : rec->connrec->chatnet, rec->connrec->nick);
}
}
static void print_lookup_servers(void)
{
GSList *tmp;
for (tmp = lookup_servers; tmp != NULL; tmp = tmp->next) {
SERVER_REC *rec = tmp->data;
printformat(NULL, NULL, MSGLEVEL_CRAP, IRCTXT_SERVER_LOOKUP_LIST,
rec->tag, rec->connrec->address, rec->connrec->port,
rec->connrec->chatnet == NULL ? "" : rec->connrec->chatnet, rec->connrec->nick);
}
}
static void print_reconnects(void)
{
GSList *tmp;
char *tag, *next_connect;
int left;
for (tmp = reconnects; tmp != NULL; tmp = tmp->next) {
RECONNECT_REC *rec = tmp->data;
SERVER_CONNECT_REC *conn = rec->conn;
tag = g_strdup_printf("RECON-%d", rec->tag);
left = rec->next_connect-time(NULL);
next_connect = g_strdup_printf("%02d:%02d", left/60, left%60);
printformat(NULL, NULL, MSGLEVEL_CRAP, IRCTXT_SERVER_RECONNECT_LIST,
tag, conn->address, conn->port,
conn->chatnet == NULL ? "" : conn->chatnet,
conn->nick, next_connect);
g_free(next_connect);
g_free(tag);
}
}
/* SYNTAX: SERVER ADD [-auto | -noauto] [-ircnet <ircnet>] [-host <hostname>]
[-cmdspeed <ms>] [-cmdmax <count>] [-port <port>]
<address> [<port> [<password>]] */
static void cmd_server_add(const char *data)
{
GHashTable *optlist;
IRC_SERVER_SETUP_REC *rec;
char *addr, *portstr, *password, *value;
void *free_arg;
int port;
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_OPTIONS,
"server add", &optlist, &addr, &portstr, &password))
return; return;
if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); *rec = g_new0(IRC_SERVER_SETUP_REC, 1);
port = *portstr == '\0' ? 6667 : atoi(portstr); (*rec)->chat_type = chat_protocol_lookup("IRC");
signal_stop();
}
rec = IRC_SERVER_SETUP(server_setup_find_port(addr, port)); static void sig_server_add_fill(IRC_SERVER_SETUP_REC *rec,
if (rec == NULL) { GHashTable *optlist)
rec = g_new0(IRC_SERVER_SETUP_REC, 1); {
rec->address = g_strdup(addr); char *value;
rec->port = port;
} else {
value = g_hash_table_lookup(optlist, "port");
if (value != NULL && *value != '\0') rec->port = atoi(value);
if (g_hash_table_lookup(optlist, "ircnet")) g_free_and_null(rec->chatnet);
if (*password != '\0') g_free_and_null(rec->password);
if (g_hash_table_lookup(optlist, "host")) {
g_free_and_null(rec->own_host);
rec->own_ip = NULL;
}
}
if (g_hash_table_lookup(optlist, "auto")) rec->autoconnect = TRUE;
if (g_hash_table_lookup(optlist, "noauto")) rec->autoconnect = FALSE;
if (*password != '\0' && strcmp(password, "-") != 0) rec->password = g_strdup(password);
value = g_hash_table_lookup(optlist, "ircnet"); value = g_hash_table_lookup(optlist, "ircnet");
if (value != NULL && *value != '\0') rec->chatnet = g_strdup(value); if (value != NULL) {
value = g_hash_table_lookup(optlist, "host"); g_free_and_null(rec->chatnet);
if (value != NULL && *value != '\0') { if (*value != '\0') rec->chatnet = g_strdup(value);
rec->own_host = g_strdup(value);
rec->own_ip = NULL;
} }
value = g_hash_table_lookup(optlist, "cmdspeed"); value = g_hash_table_lookup(optlist, "cmdspeed");
if (value != NULL && *value != '\0') rec->cmd_queue_speed = atoi(value); if (value != NULL && *value != '\0') rec->cmd_queue_speed = atoi(value);
value = g_hash_table_lookup(optlist, "cmdmax"); value = g_hash_table_lookup(optlist, "cmdmax");
if (value != NULL && *value != '\0') rec->max_cmds_at_once = atoi(value); if (value != NULL && *value != '\0') rec->max_cmds_at_once = atoi(value);
server_setup_add(SERVER_SETUP(rec));
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_SETUPSERVER_ADDED, addr, port);
cmd_params_free(free_arg);
}
/* SYNTAX: SERVER REMOVE <address> [<port>] */
static void cmd_server_remove(const char *data)
{
SERVER_SETUP_REC *rec;
char *addr, *portstr;
void *free_arg;
int port;
if (!cmd_get_params(data, &free_arg, 2, &addr, &portstr))
return;
if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
port = *portstr == '\0' ? -1 : atoi(portstr);
rec = server_setup_find_port(addr, port);
if (rec == NULL)
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_SETUPSERVER_NOT_FOUND, addr, port);
else {
server_setup_remove(rec);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_SETUPSERVER_REMOVED, addr, port);
}
cmd_params_free(free_arg);
} }
/* SYNTAX: SERVER LIST */ /* SYNTAX: SERVER LIST */
@ -172,6 +75,9 @@ static void cmd_server_list(const char *data)
for (tmp = setupservers; tmp != NULL; tmp = tmp->next) { for (tmp = setupservers; tmp != NULL; tmp = tmp->next) {
IRC_SERVER_SETUP_REC *rec = tmp->data; IRC_SERVER_SETUP_REC *rec = tmp->data;
if (!IS_IRC_SERVER_SETUP(rec))
continue;
g_string_truncate(str, 0); g_string_truncate(str, 0);
if (rec->password != NULL) if (rec->password != NULL)
g_string_append(str, "(pass), "); g_string_append(str, "(pass), ");
@ -194,55 +100,18 @@ static void cmd_server_list(const char *data)
g_string_free(str, TRUE); g_string_free(str, TRUE);
} }
static void cmd_server(const char *data, IRC_SERVER_REC *server, void *item)
{
GHashTable *optlist;
char *addr;
void *free_arg;
if (*data == '\0') {
print_servers();
print_lookup_servers();
print_reconnects();
signal_stop();
return;
}
if (g_strncasecmp(data, "add ", 4) == 0 ||
g_strncasecmp(data, "remove ", 7) == 0 ||
g_strcasecmp(data, "list") == 0 ||
g_strncasecmp(data, "list ", 5) == 0) {
command_runsub("server", data, server, item);
signal_stop();
return;
}
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS,
"connect", &optlist, &addr))
return;
if (*addr == '\0' || strcmp(addr, "+") == 0)
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
if (*addr == '+') window_create(NULL, FALSE);
cmd_params_free(free_arg);
}
void fe_irc_server_init(void) void fe_irc_server_init(void)
{ {
command_bind("server", NULL, (SIGNAL_FUNC) cmd_server); signal_add("server add create", (SIGNAL_FUNC) sig_server_add_create);
command_bind("server add", NULL, (SIGNAL_FUNC) cmd_server_add); signal_add("server add fill", (SIGNAL_FUNC) sig_server_add_fill);
command_bind("server remove", NULL, (SIGNAL_FUNC) cmd_server_remove);
command_bind("server list", NULL, (SIGNAL_FUNC) cmd_server_list); command_bind("server list", NULL, (SIGNAL_FUNC) cmd_server_list);
command_set_options("server add", "auto noauto -ircnet -host -cmdspeed -cmdmax -port"); command_set_options("server add", "-ircnet");
} }
void fe_irc_server_deinit(void) void fe_irc_server_deinit(void)
{ {
command_unbind("server", (SIGNAL_FUNC) cmd_server); signal_remove("server add create", (SIGNAL_FUNC) sig_server_add_create);
command_unbind("server add", (SIGNAL_FUNC) cmd_server_add); signal_remove("server add fill", (SIGNAL_FUNC) sig_server_add_fill);
command_unbind("server remove", (SIGNAL_FUNC) cmd_server_remove);
command_unbind("server list", (SIGNAL_FUNC) cmd_server_list); command_unbind("server list", (SIGNAL_FUNC) cmd_server_list);
} }

View File

@ -39,6 +39,9 @@ static void cmd_ircnet_list(void)
for (tmp = chatnets; tmp != NULL; tmp = tmp->next) { for (tmp = chatnets; tmp != NULL; tmp = tmp->next) {
IRC_CHATNET_REC *rec = tmp->data; IRC_CHATNET_REC *rec = tmp->data;
if (!IS_IRCNET(rec))
continue;
g_string_truncate(str, 0); g_string_truncate(str, 0);
if (rec->nick != NULL) if (rec->nick != NULL)
g_string_sprintfa(str, "nick: %s, ", rec->nick); g_string_sprintfa(str, "nick: %s, ", rec->nick);
@ -152,7 +155,7 @@ static void cmd_ircnet_remove(const char *data)
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_IRCNET_NOT_FOUND, data); printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_IRCNET_NOT_FOUND, data);
else { else {
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_IRCNET_REMOVED, data); printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_IRCNET_REMOVED, data);
chatnet_destroy(CHATNET(rec)); chatnet_remove(CHATNET(rec));
} }
} }

View File

@ -27,19 +27,6 @@ FORMAT_REC fecommon_irc_formats[] = {
/* ---- */ /* ---- */
{ NULL, "Server", 0 }, { NULL, "Server", 0 },
{ "lag_disconnected", "No PONG reply from server %_$0%_ in $1 seconds, disconnecting", 2, { 0, 1 } },
{ "disconnected", "Disconnected from %_$0%_ %K[%n$1%K]", 2, { 0, 0 } },
{ "server_list", "%_$0%_: $1:$2 ($3)", 5, { 0, 0, 1, 0, 0 } },
{ "server_lookup_list", "%_$0%_: $1:$2 ($3) (connecting...)", 5, { 0, 0, 1, 0, 0 } },
{ "server_reconnect_list", "%_$0%_: $1:$2 ($3) ($5 left before reconnecting)", 6, { 0, 0, 1, 0, 0, 0 } },
{ "server_reconnect_removed", "Removed reconnection to server %_$0%_ port %_$1%_", 3, { 0, 1, 0 } },
{ "server_reconnect_not_found", "Reconnection tag %_$0%_ not found", 1, { 0 } },
{ "setupserver_added", "Server $0 saved", 2, { 0, 1 } },
{ "setupserver_removed", "Server $0 removed", 2, { 0, 1 } },
{ "setupserver_not_found", "Server $0 not found", 2, { 0, 1 } },
{ "setupserver_header", "Server Port IRC Net Settings", 0 },
{ "setupserver_line", "%|$[!20]0 $[5]1 $[10]2 $3", 4, { 0, 1, 0, 0 } },
{ "setupserver_footer", "", 0 },
{ "netsplit", "%RNetsplit%n %_$0%_ %_$1%_ quits: $2", 3, { 0, 0, 0 } }, { "netsplit", "%RNetsplit%n %_$0%_ %_$1%_ quits: $2", 3, { 0, 0, 0 } },
{ "netsplit_more", "%RNetsplit%n %_$0%_ %_$1%_ quits: $2 (+$3 more, use /NETSPLIT to show all of them)", 4, { 0, 0, 0, 1 } }, { "netsplit_more", "%RNetsplit%n %_$0%_ %_$1%_ quits: $2 (+$3 more, use /NETSPLIT to show all of them)", 4, { 0, 0, 0, 1 } },
{ "netsplit_join", "%CNetsplit%n over, joins: $0", 1, { 0 } }, { "netsplit_join", "%CNetsplit%n over, joins: $0", 1, { 0 } },
@ -54,6 +41,9 @@ FORMAT_REC fecommon_irc_formats[] = {
{ "ircnet_header", "Ircnets:", 0 }, { "ircnet_header", "Ircnets:", 0 },
{ "ircnet_line", "$0: $1", 2, { 0, 0 } }, { "ircnet_line", "$0: $1", 2, { 0, 0 } },
{ "ircnet_footer", "", 0 }, { "ircnet_footer", "", 0 },
{ "setupserver_header", "Server Port IRC Net Settings", 0 },
{ "setupserver_line", "%|$[!20]0 $[5]1 $[10]2 $3", 4, { 0, 1, 0, 0 } },
{ "setupserver_footer", "", 0 },
/* ---- */ /* ---- */
{ NULL, "Channels", 0 }, { NULL, "Channels", 0 },

View File

@ -5,19 +5,6 @@ enum {
IRCTXT_FILL_1, IRCTXT_FILL_1,
IRCTXT_LAG_DISCONNECTED,
IRCTXT_DISCONNECTED,
IRCTXT_SERVER_LIST,
IRCTXT_SERVER_LOOKUP_LIST,
IRCTXT_SERVER_RECONNECT_LIST,
IRCTXT_RECONNECT_REMOVED,
IRCTXT_RECONNECT_NOT_FOUND,
IRCTXT_SETUPSERVER_ADDED,
IRCTXT_SETUPSERVER_REMOVED,
IRCTXT_SETUPSERVER_NOT_FOUND,
IRCTXT_SETUPSERVER_HEADER,
IRCTXT_SETUPSERVER_LINE,
IRCTXT_SETUPSERVER_FOOTER,
IRCTXT_NETSPLIT, IRCTXT_NETSPLIT,
IRCTXT_NETSPLIT_MORE, IRCTXT_NETSPLIT_MORE,
IRCTXT_NETSPLIT_JOIN, IRCTXT_NETSPLIT_JOIN,
@ -32,6 +19,9 @@ enum {
IRCTXT_IRCNET_HEADER, IRCTXT_IRCNET_HEADER,
IRCTXT_IRCNET_LINE, IRCTXT_IRCNET_LINE,
IRCTXT_IRCNET_FOOTER, IRCTXT_IRCNET_FOOTER,
IRCTXT_SETUPSERVER_HEADER,
IRCTXT_SETUPSERVER_LINE,
IRCTXT_SETUPSERVER_FOOTER,
IRCTXT_FILL_2, IRCTXT_FILL_2,

View File

@ -14,6 +14,9 @@ irssi_DEPENDENCIES = @COMMON_LIBS@
irssi_LDADD = \ irssi_LDADD = \
@COMMON_LIBS@ \ @COMMON_LIBS@ \
$(top_srcdir)/silc/src/core/.libs/libsilc.a \
$(top_srcdir)/silc/src/fe-common/.libs/libfe_common_silc.a \
$(top_srcdir)/silc/libsilc-client.a \
$(PROG_LIBS) \ $(PROG_LIBS) \
$(PERL_LDFLAGS) \ $(PERL_LDFLAGS) \
$(CURSES_LIBS) $(CURSES_LIBS)

View File

@ -85,8 +85,10 @@ static void textui_init(void)
irssi_gui = IRSSI_GUI_TEXT; irssi_gui = IRSSI_GUI_TEXT;
core_init(); core_init();
irc_init(); irc_init();
silc_core_init();
fe_common_core_init(); fe_common_core_init();
fe_common_irc_init(); fe_common_irc_init();
fe_common_silc_init();
theme_register(gui_text_formats); theme_register(gui_text_formats);
signal_add("gui exit", (SIGNAL_FUNC) sig_exit); signal_add("gui exit", (SIGNAL_FUNC) sig_exit);

View File

@ -515,7 +515,7 @@ static void sig_statusbar_more_check(WINDOW_REC *window)
static void statusbar_lag(SBAR_ITEM_REC *item, int ypos) static void statusbar_lag(SBAR_ITEM_REC *item, int ypos)
{ {
IRC_SERVER_REC *server; SERVER_REC *server;
GString *str; GString *str;
int size_needed, lag_unknown; int size_needed, lag_unknown;
time_t now; time_t now;
@ -523,7 +523,7 @@ static void statusbar_lag(SBAR_ITEM_REC *item, int ypos)
now = time(NULL); now = time(NULL);
str = g_string_new(NULL); str = g_string_new(NULL);
server = IRC_SERVER(active_win == NULL ? NULL : active_win->active_server); server = active_win == NULL ? NULL : active_win->active_server;
if (server == NULL || server->lag_last_check == 0) if (server == NULL || server->lag_last_check == 0)
size_needed = 0; size_needed = 0;
else if (server->lag_sent == 0 || now-server->lag_sent < 5) { else if (server->lag_sent == 0 || now-server->lag_sent < 5) {

View File

@ -53,10 +53,10 @@ static void ircnet_save(IRC_CHATNET_REC *rec)
{ {
CONFIG_NODE *node; CONFIG_NODE *node;
g_return_if_fail(IS_IRC_CHATNET(rec)); g_return_if_fail(rec != NULL);
node = iconfig_node_traverse("ircnets", TRUE); node = iconfig_node_traverse("ircnets", TRUE);
node = chatnet_save(CHATNET(rec), node); node = chatnet_save((CHATNET_REC *) rec, node);
if (rec->max_cmds_at_once > 0) if (rec->max_cmds_at_once > 0)
config_node_set_int(node, "cmdmax", rec->max_cmds_at_once); config_node_set_int(node, "cmdmax", rec->max_cmds_at_once);
@ -90,16 +90,21 @@ void ircnet_create(IRC_CHATNET_REC *rec)
rec->chat_type = IRC_PROTOCOL; rec->chat_type = IRC_PROTOCOL;
ircnet_save(rec); ircnet_save(rec);
chatnet_create(CHATNET(rec)); chatnet_create((CHATNET_REC *) rec);
} }
static void read_ircnets(void) static void read_ircnets(void)
{ {
CONFIG_NODE *node; CONFIG_NODE *node;
GSList *tmp; GSList *tmp, *next;
while (chatnets != NULL) for (tmp = chatnets; tmp != NULL; tmp = next) {
chatnet_destroy(chatnets->data); CHATNET_REC *rec = tmp->data;
next = tmp->next;
if (IS_IRCNET(rec))
chatnet_destroy(rec);
}
/* read ircnets */ /* read ircnets */
node = iconfig_node_traverse("ircnets", FALSE); node = iconfig_node_traverse("ircnets", FALSE);

View File

@ -22,6 +22,7 @@
#include "chat-protocols.h" #include "chat-protocols.h"
#include "irc-servers.h" #include "irc-servers.h"
#include "irc-chatnets.h"
#include "irc-channels.h" #include "irc-channels.h"
#include "irc-queries.h" #include "irc-queries.h"
@ -52,6 +53,7 @@ void irc_core_init(void)
{ {
chat_protocol_register("IRC", "Internet Relay Chat", "ircnet"); chat_protocol_register("IRC", "Internet Relay Chat", "ircnet");
irc_chatnets_init();
irc_servers_init(); irc_servers_init();
irc_channels_init(); irc_channels_init();
irc_queries_init(); irc_queries_init();
@ -84,6 +86,7 @@ void irc_core_deinit(void)
irc_channels_deinit(); irc_channels_deinit();
irc_irc_deinit(); irc_irc_deinit();
irc_servers_deinit(); irc_servers_deinit();
irc_chatnets_deinit();
chat_protocol_unregister("IRC"); chat_protocol_unregister("IRC");
} }

View File

@ -31,7 +31,6 @@
#include "queries.h" #include "queries.h"
#include "irc.h" #include "irc.h"
#include "irc-chatnets.h"
#include "irc-servers-setup.h" #include "irc-servers-setup.h"
#include "irc-servers.h" #include "irc-servers.h"
#include "server-idle.h" #include "server-idle.h"
@ -396,7 +395,6 @@ void irc_servers_init(void)
signal_add("event empty", (SIGNAL_FUNC) event_empty); signal_add("event empty", (SIGNAL_FUNC) event_empty);
irc_servers_setup_init(); irc_servers_setup_init();
irc_chatnets_init();
irc_servers_reconnect_init(); irc_servers_reconnect_init();
servers_idle_init(); servers_idle_init();
} }
@ -422,7 +420,6 @@ void irc_servers_deinit(void)
signal_remove("event empty", (SIGNAL_FUNC) event_empty); signal_remove("event empty", (SIGNAL_FUNC) event_empty);
irc_servers_setup_deinit(); irc_servers_setup_deinit();
irc_chatnets_deinit();
irc_servers_reconnect_deinit(); irc_servers_reconnect_deinit();
servers_idle_deinit(); servers_idle_deinit();
} }

View File

@ -78,10 +78,6 @@ typedef struct {
GHashTable *splits; /* For keeping track of netsplits */ GHashTable *splits; /* For keeping track of netsplits */
GSList *split_servers; /* Servers that are currently in split */ GSList *split_servers; /* Servers that are currently in split */
time_t lag_sent; /* 0 or time when last lag query was sent to server */
time_t lag_last_check; /* last time we checked lag */
int lag; /* server lag in milliseconds */
GSList *rejoin_channels; /* try to join to these channels after a while - GSList *rejoin_channels; /* try to join to these channels after a while -
channels go here if they're "temporarily unavailable" channels go here if they're "temporarily unavailable"
because of netsplits */ because of netsplits */