mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
Better !channel support - window items now have "visual_name" and channels
and queries also have "name". Normally they're identical but with !channels the visible_name contains the short !channel name, while name contains full !ABCDEchannel name. The visible_name should be used whenever displaying the channel name, or as printtext()'s target. So, this breaks a few scripts in !channels, they need to be modified to use $channel->{visible_name} instead. Also /LAYOUT SAVE should finally work properly with !channels. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2797 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
ee80e7601a
commit
d346fbe1a9
@ -673,14 +673,6 @@ Server::channels_join(channels, automatic)
|
|||||||
was requested by user. If channel join is "automatic", irssi doesn't
|
was requested by user. If channel join is "automatic", irssi doesn't
|
||||||
jump to the window where the channel was joined.
|
jump to the window where the channel was joined.
|
||||||
|
|
||||||
Channel
|
|
||||||
Server::channel_create(name, automatic)
|
|
||||||
Create new channel.
|
|
||||||
|
|
||||||
Channel
|
|
||||||
channel_create(chat_type, name, automatic)
|
|
||||||
Create new channel with specified chat type.
|
|
||||||
FIXME: should this be removed? is this useful for anything?
|
|
||||||
|
|
||||||
Channel::destroy()
|
Channel::destroy()
|
||||||
Destroy channel.
|
Destroy channel.
|
||||||
@ -951,10 +943,6 @@ Ban->{}
|
|||||||
setby - Nick of who set the ban
|
setby - Nick of who set the ban
|
||||||
time - Timestamp when ban was set
|
time - Timestamp when ban was set
|
||||||
|
|
||||||
Channel
|
|
||||||
Server::channel_create(name, automatic)
|
|
||||||
Create new channel.
|
|
||||||
|
|
||||||
Channel::bans()
|
Channel::bans()
|
||||||
Return a list of bans in channel.
|
Return a list of bans in channel.
|
||||||
|
|
||||||
|
27
irssi.conf
27
irssi.conf
@ -10,8 +10,16 @@ servers = (
|
|||||||
{ address = "irc.openprojects.net"; chatnet = "OPN"; port = "6667"; },
|
{ address = "irc.openprojects.net"; chatnet = "OPN"; port = "6667"; },
|
||||||
{ address = "irc.gnome.org"; chatnet = "GIMPNet"; port = "6667"; },
|
{ address = "irc.gnome.org"; chatnet = "GIMPNet"; port = "6667"; },
|
||||||
{ address = "irc.ptlink.net"; chatnet = "PTlink"; port = "6667"; },
|
{ address = "irc.ptlink.net"; chatnet = "PTlink"; port = "6667"; },
|
||||||
{ address = "irc.sorcery.net"; chatnet = "SorceryNet"; port = "6667"; },
|
{
|
||||||
{ address = "irc.hashmark.net"; chatnet = "Hashmark"; port = "6667"; },
|
address = "irc.sorcery.net";
|
||||||
|
chatnet = "SorceryNet";
|
||||||
|
port = "6667";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address = "irc.hashmark.net";
|
||||||
|
chatnet = "Hashmark";
|
||||||
|
port = "6667";
|
||||||
|
},
|
||||||
{ address = "irc.ptnet.org"; chatnet = "PTnet"; port = "6667"; },
|
{ address = "irc.ptnet.org"; chatnet = "PTnet"; port = "6667"; },
|
||||||
{ address = "silc.pspt.fi"; chatnet = "SILC"; port = "706"; }
|
{ address = "silc.pspt.fi"; chatnet = "SILC"; port = "706"; }
|
||||||
);
|
);
|
||||||
@ -25,7 +33,7 @@ chatnets = {
|
|||||||
max_whois = "4";
|
max_whois = "4";
|
||||||
max_query_chans = "5";
|
max_query_chans = "5";
|
||||||
};
|
};
|
||||||
EFNet = {
|
EFNet = {
|
||||||
type = "IRC";
|
type = "IRC";
|
||||||
max_kicks = "4";
|
max_kicks = "4";
|
||||||
max_modes = "4";
|
max_modes = "4";
|
||||||
@ -39,7 +47,7 @@ chatnets = {
|
|||||||
max_msgs = "3";
|
max_msgs = "3";
|
||||||
max_whois = "30";
|
max_whois = "30";
|
||||||
};
|
};
|
||||||
DALnet = {
|
DALnet = {
|
||||||
type = "IRC";
|
type = "IRC";
|
||||||
max_kicks = "4";
|
max_kicks = "4";
|
||||||
max_modes = "6";
|
max_modes = "6";
|
||||||
@ -160,9 +168,9 @@ statusbar = {
|
|||||||
|
|
||||||
# treated specially .. window is printed with non-empty windows,
|
# treated specially .. window is printed with non-empty windows,
|
||||||
# window_empty is printed with empty windows
|
# window_empty is printed with empty windows
|
||||||
window = "{sb $winref:$T{sbmode $M}}";
|
window = "{sb $winref:$itemname{sbmode $M}}";
|
||||||
window_empty = "{sb $winref{sbservertag $tag}}";
|
window_empty = "{sb $winref{sbservertag $tag}}";
|
||||||
prompt = "{prompt $[.15]T}";
|
prompt = "{prompt $[.15]itemname}";
|
||||||
prompt_empty = "{prompt $winname}";
|
prompt_empty = "{prompt $winname}";
|
||||||
topic = " $topic";
|
topic = " $topic";
|
||||||
topic_empty = " Irssi v$J - http://irssi.org/help/";
|
topic_empty = " Irssi v$J - http://irssi.org/help/";
|
||||||
@ -251,3 +259,10 @@ statusbar = {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
settings = {
|
||||||
|
core = {
|
||||||
|
real_name = "Timo Sirainen";
|
||||||
|
user_name = "cras";
|
||||||
|
nick = "cras";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "window-item-rec.h"
|
#include "window-item-rec.h"
|
||||||
|
|
||||||
|
char *name;
|
||||||
char *topic;
|
char *topic;
|
||||||
char *topic_by;
|
char *topic_by;
|
||||||
time_t topic_time;
|
time_t topic_time;
|
||||||
|
@ -35,24 +35,37 @@ static char *get_join_data(CHANNEL_REC *channel)
|
|||||||
return g_strdup(channel->name);
|
return g_strdup(channel->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void channel_init(CHANNEL_REC *channel, int automatic)
|
static const char *channel_get_target(WI_ITEM_REC *item)
|
||||||
|
{
|
||||||
|
return ((CHANNEL_REC *) item)->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void channel_init(CHANNEL_REC *channel, SERVER_REC *server, const char *name,
|
||||||
|
const char *visible_name, int automatic)
|
||||||
{
|
{
|
||||||
g_return_if_fail(channel != NULL);
|
g_return_if_fail(channel != NULL);
|
||||||
g_return_if_fail(channel->name != NULL);
|
g_return_if_fail(name != NULL);
|
||||||
|
g_return_if_fail(server != NULL);
|
||||||
|
|
||||||
channels = g_slist_append(channels, channel);
|
if (visible_name == NULL)
|
||||||
if (channel->server != NULL) {
|
visible_name = name;
|
||||||
channel->server->channels =
|
|
||||||
g_slist_append(channel->server->channels, channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
MODULE_DATA_INIT(channel);
|
MODULE_DATA_INIT(channel);
|
||||||
channel->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "CHANNEL");
|
channel->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "CHANNEL");
|
||||||
channel->destroy = (void (*) (WI_ITEM_REC *)) channel_destroy;
|
channel->destroy = (void (*) (WI_ITEM_REC *)) channel_destroy;
|
||||||
channel->mode = g_strdup("");
|
channel->get_target = channel_get_target;
|
||||||
channel->createtime = time(NULL);
|
|
||||||
channel->get_join_data = get_join_data;
|
channel->get_join_data = get_join_data;
|
||||||
|
|
||||||
|
channel->chat_type = server->chat_type;
|
||||||
|
channel->server = server;
|
||||||
|
channel->name = g_strdup(name);
|
||||||
|
channel->visible_name = g_strdup(visible_name);
|
||||||
|
channel->mode = g_strdup("");
|
||||||
|
channel->createtime = time(NULL);
|
||||||
|
|
||||||
|
channels = g_slist_append(channels, channel);
|
||||||
|
server->channels = g_slist_append(server->channels, channel);
|
||||||
|
|
||||||
signal_emit("channel created", 2, channel, GINT_TO_POINTER(automatic));
|
signal_emit("channel created", 2, channel, GINT_TO_POINTER(automatic));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,8 @@ struct _CHANNEL_REC {
|
|||||||
extern GSList *channels;
|
extern GSList *channels;
|
||||||
|
|
||||||
/* Create new channel record */
|
/* Create new channel record */
|
||||||
void channel_init(CHANNEL_REC *channel, int automatic);
|
void channel_init(CHANNEL_REC *channel, SERVER_REC *server, const char *name,
|
||||||
|
const char *visible_name, int automatic);
|
||||||
void channel_destroy(CHANNEL_REC *channel);
|
void channel_destroy(CHANNEL_REC *channel);
|
||||||
|
|
||||||
/* find channel by name, if `server' is NULL, search from all servers */
|
/* find channel by name, if `server' is NULL, search from all servers */
|
||||||
|
@ -344,9 +344,8 @@ static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
|
|
||||||
target_type = IS_CHANNEL(item) ?
|
target_type = IS_CHANNEL(item) ?
|
||||||
SEND_TARGET_CHANNEL : SEND_TARGET_NICK;
|
SEND_TARGET_CHANNEL : SEND_TARGET_NICK;
|
||||||
target = item->name;
|
target = (char *) window_item_get_target(item);
|
||||||
}
|
} else if (g_hash_table_lookup(optlist, "channel") != NULL)
|
||||||
else if (g_hash_table_lookup(optlist, "channel") != NULL)
|
|
||||||
target_type = SEND_TARGET_CHANNEL;
|
target_type = SEND_TARGET_CHANNEL;
|
||||||
else if (g_hash_table_lookup(optlist, "nick") != NULL)
|
else if (g_hash_table_lookup(optlist, "nick") != NULL)
|
||||||
target_type = SEND_TARGET_NICK;
|
target_type = SEND_TARGET_NICK;
|
||||||
|
@ -18,7 +18,8 @@ struct _CHAT_PROTOCOL_REC {
|
|||||||
void (*destroy_server_connect) (SERVER_CONNECT_REC *);
|
void (*destroy_server_connect) (SERVER_CONNECT_REC *);
|
||||||
|
|
||||||
SERVER_REC *(*server_connect) (SERVER_CONNECT_REC *);
|
SERVER_REC *(*server_connect) (SERVER_CONNECT_REC *);
|
||||||
CHANNEL_REC *(*channel_create) (SERVER_REC *, const char *, int);
|
CHANNEL_REC *(*channel_create) (SERVER_REC *, const char *,
|
||||||
|
const char *, int);
|
||||||
QUERY_REC *(*query_create) (const char *, const char *, int);
|
QUERY_REC *(*query_create) (const char *, const char *, int);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -653,11 +653,12 @@ typedef struct {
|
|||||||
GHashTable *options;
|
GHashTable *options;
|
||||||
} CMD_TEMP_REC;
|
} CMD_TEMP_REC;
|
||||||
|
|
||||||
static char *get_optional_channel(WI_ITEM_REC *active_item, char **data,
|
static const char *
|
||||||
int require_name)
|
get_optional_channel(WI_ITEM_REC *active_item, char **data, int require_name)
|
||||||
{
|
{
|
||||||
CHANNEL_REC *chanrec;
|
CHANNEL_REC *chanrec;
|
||||||
char *tmp, *origtmp, *channel, *ret;
|
const char *ret;
|
||||||
|
char *tmp, *origtmp, *channel;
|
||||||
|
|
||||||
if (active_item == NULL) {
|
if (active_item == NULL) {
|
||||||
/* no active channel in window, channel required */
|
/* no active channel in window, channel required */
|
||||||
@ -670,10 +671,10 @@ static char *get_optional_channel(WI_ITEM_REC *active_item, char **data,
|
|||||||
if (strcmp(channel, "*") == 0 && !require_name) {
|
if (strcmp(channel, "*") == 0 && !require_name) {
|
||||||
/* "*" means active channel */
|
/* "*" means active channel */
|
||||||
cmd_get_param(data);
|
cmd_get_param(data);
|
||||||
ret = active_item->name;
|
ret = window_item_get_target(active_item);
|
||||||
} else if (!server_ischannel(active_item->server, channel)) {
|
} else if (!server_ischannel(active_item->server, channel)) {
|
||||||
/* we don't have channel parameter - use active channel */
|
/* we don't have channel parameter - use active channel */
|
||||||
ret = active_item->name;
|
ret = window_item_get_target(active_item);
|
||||||
} else {
|
} else {
|
||||||
/* Find the channel first and use it's name if found.
|
/* Find the channel first and use it's name if found.
|
||||||
This allows automatic !channel -> !XXXXXchannel replaces. */
|
This allows automatic !channel -> !XXXXXchannel replaces. */
|
||||||
@ -730,7 +731,7 @@ int cmd_get_params(const char *data, gpointer *free_me, int count, ...)
|
|||||||
/* optional channel as first parameter */
|
/* optional channel as first parameter */
|
||||||
require_name = (count & PARAM_FLAG_OPTCHAN_NAME) ==
|
require_name = (count & PARAM_FLAG_OPTCHAN_NAME) ==
|
||||||
PARAM_FLAG_OPTCHAN_NAME;
|
PARAM_FLAG_OPTCHAN_NAME;
|
||||||
arg = get_optional_channel(item, &datad, require_name);
|
arg = (char *) get_optional_channel(item, &datad, require_name);
|
||||||
|
|
||||||
str = (char **) va_arg(args, char **);
|
str = (char **) va_arg(args, char **);
|
||||||
if (str != NULL) *str = arg;
|
if (str != NULL) *str = arg;
|
||||||
|
@ -358,7 +358,8 @@ static char *expando_serverversion(SERVER_REC *server, void *item, int *free_ret
|
|||||||
/* target of current input (channel or QUERY nickname) */
|
/* target of current input (channel or QUERY nickname) */
|
||||||
static char *expando_target(SERVER_REC *server, void *item, int *free_ret)
|
static char *expando_target(SERVER_REC *server, void *item, int *free_ret)
|
||||||
{
|
{
|
||||||
return item == NULL ? "" : ((WI_ITEM_REC *) item)->name;
|
return item == NULL ? "" :
|
||||||
|
(char *) window_item_get_target((WI_ITEM_REC *) item);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* client release date (in YYYYMMDD format) */
|
/* client release date (in YYYYMMDD format) */
|
||||||
@ -461,6 +462,12 @@ static char *expando_chatnet(SERVER_REC *server, void *item, int *free_ret)
|
|||||||
return server == NULL ? "" : server->connrec->chatnet;
|
return server == NULL ? "" : server->connrec->chatnet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* visible_name of current window item */
|
||||||
|
static char *expando_itemname(SERVER_REC *server, void *item, int *free_ret)
|
||||||
|
{
|
||||||
|
return item == NULL ? "" : ((WI_ITEM_REC *) item)->visible_name;
|
||||||
|
}
|
||||||
|
|
||||||
static void sig_message_public(SERVER_REC *server, const char *msg,
|
static void sig_message_public(SERVER_REC *server, const char *msg,
|
||||||
const char *nick, const char *address,
|
const char *nick, const char *address,
|
||||||
const char *target)
|
const char *target)
|
||||||
@ -634,6 +641,9 @@ void expandos_init(void)
|
|||||||
expando_create("chatnet", expando_chatnet,
|
expando_create("chatnet", expando_chatnet,
|
||||||
"window changed", EXPANDO_ARG_NONE,
|
"window changed", EXPANDO_ARG_NONE,
|
||||||
"window server changed", EXPANDO_ARG_WINDOW, NULL);
|
"window server changed", EXPANDO_ARG_WINDOW, NULL);
|
||||||
|
expando_create("itemname", expando_itemname,
|
||||||
|
"window changed", EXPANDO_ARG_NONE,
|
||||||
|
"window item changed", EXPANDO_ARG_WINDOW, NULL);
|
||||||
|
|
||||||
read_settings();
|
read_settings();
|
||||||
|
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
|
|
||||||
GSList *queries;
|
GSList *queries;
|
||||||
|
|
||||||
|
static const char *query_get_target(WI_ITEM_REC *item)
|
||||||
|
{
|
||||||
|
return ((QUERY_REC *) item)->name;
|
||||||
|
}
|
||||||
|
|
||||||
void query_init(QUERY_REC *query, int automatic)
|
void query_init(QUERY_REC *query, int automatic)
|
||||||
{
|
{
|
||||||
g_return_if_fail(query != NULL);
|
g_return_if_fail(query != NULL);
|
||||||
@ -37,8 +42,10 @@ void query_init(QUERY_REC *query, int automatic)
|
|||||||
MODULE_DATA_INIT(query);
|
MODULE_DATA_INIT(query);
|
||||||
query->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "QUERY");
|
query->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "QUERY");
|
||||||
query->destroy = (void (*) (WI_ITEM_REC *)) query_destroy;
|
query->destroy = (void (*) (WI_ITEM_REC *)) query_destroy;
|
||||||
|
query->get_target = query_get_target;
|
||||||
query->createtime = time(NULL);
|
query->createtime = time(NULL);
|
||||||
query->last_unread_msg = time(NULL);
|
query->last_unread_msg = time(NULL);
|
||||||
|
query->visible_name = g_strdup(query->name);
|
||||||
|
|
||||||
if (query->server_tag != NULL) {
|
if (query->server_tag != NULL) {
|
||||||
query->server = server_find_tag(query->server_tag);
|
query->server = server_find_tag(query->server_tag);
|
||||||
@ -69,6 +76,7 @@ void query_destroy(QUERY_REC *query)
|
|||||||
g_free_not_null(query->hilight_color);
|
g_free_not_null(query->hilight_color);
|
||||||
g_free_not_null(query->server_tag);
|
g_free_not_null(query->server_tag);
|
||||||
g_free_not_null(query->address);
|
g_free_not_null(query->address);
|
||||||
|
g_free(query->visible_name);
|
||||||
g_free(query->name);
|
g_free(query->name);
|
||||||
|
|
||||||
query->type = 0;
|
query->type = 0;
|
||||||
@ -124,6 +132,10 @@ void query_change_nick(QUERY_REC *query, const char *nick)
|
|||||||
|
|
||||||
oldnick = query->name;
|
oldnick = query->name;
|
||||||
query->name = g_strdup(nick);
|
query->name = g_strdup(nick);
|
||||||
|
|
||||||
|
g_free(query->visible_name);
|
||||||
|
query->visible_name = g_strdup(nick);
|
||||||
|
|
||||||
signal_emit("query nick changed", 2, query, oldnick);
|
signal_emit("query nick changed", 2, query, oldnick);
|
||||||
signal_emit("window item name changed", 1, query);
|
signal_emit("window item name changed", 1, query);
|
||||||
g_free(oldnick);
|
g_free(oldnick);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "window-item-rec.h"
|
#include "window-item-rec.h"
|
||||||
|
|
||||||
|
char *name;
|
||||||
char *address;
|
char *address;
|
||||||
char *server_tag;
|
char *server_tag;
|
||||||
time_t last_unread_msg;
|
time_t last_unread_msg;
|
||||||
|
@ -146,6 +146,7 @@ static void session_save_channel(CHANNEL_REC *channel, CONFIG_REC *config,
|
|||||||
node = config_node_section(node, NULL, NODE_TYPE_BLOCK);
|
node = config_node_section(node, NULL, NODE_TYPE_BLOCK);
|
||||||
|
|
||||||
config_node_set_str(config, node, "name", channel->name);
|
config_node_set_str(config, node, "name", channel->name);
|
||||||
|
config_node_set_str(config, node, "visible_name", channel->visible_name);
|
||||||
config_node_set_str(config, node, "topic", channel->topic);
|
config_node_set_str(config, node, "topic", channel->topic);
|
||||||
config_node_set_str(config, node, "topic_by", channel->topic_by);
|
config_node_set_str(config, node, "topic_by", channel->topic_by);
|
||||||
config_node_set_int(config, node, "topic_time", channel->topic_time);
|
config_node_set_int(config, node, "topic_time", channel->topic_time);
|
||||||
@ -215,13 +216,14 @@ static void session_restore_channel_nicks(CHANNEL_REC *channel,
|
|||||||
static void session_restore_channel(SERVER_REC *server, CONFIG_NODE *node)
|
static void session_restore_channel(SERVER_REC *server, CONFIG_NODE *node)
|
||||||
{
|
{
|
||||||
CHANNEL_REC *channel;
|
CHANNEL_REC *channel;
|
||||||
const char *name;
|
const char *name, *visible_name;
|
||||||
|
|
||||||
name = config_node_get_str(node, "name", NULL);
|
name = config_node_get_str(node, "name", NULL);
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
channel = CHAT_PROTOCOL(server)->channel_create(server, name, TRUE);
|
visible_name = config_node_get_str(node, "visible_name", NULL);
|
||||||
|
channel = CHAT_PROTOCOL(server)->channel_create(server, name, visible_name, TRUE);
|
||||||
channel->topic = g_strdup(config_node_get_str(node, "topic", NULL));
|
channel->topic = g_strdup(config_node_get_str(node, "topic", NULL));
|
||||||
channel->topic_by = g_strdup(config_node_get_str(node, "topic_by", NULL));
|
channel->topic_by = g_strdup(config_node_get_str(node, "topic_by", NULL));
|
||||||
channel->topic_time = config_node_get_int(node, "topic_time", 0);
|
channel->topic_time = config_node_get_int(node, "topic_time", 0);
|
||||||
|
@ -6,7 +6,7 @@ GHashTable *module_data;
|
|||||||
|
|
||||||
void *window;
|
void *window;
|
||||||
STRUCT_SERVER_REC *server;
|
STRUCT_SERVER_REC *server;
|
||||||
char *name;
|
char *visible_name;
|
||||||
|
|
||||||
time_t createtime;
|
time_t createtime;
|
||||||
int data_level;
|
int data_level;
|
||||||
@ -14,4 +14,8 @@ char *hilight_color;
|
|||||||
|
|
||||||
void (*destroy)(WI_ITEM_REC *item);
|
void (*destroy)(WI_ITEM_REC *item);
|
||||||
|
|
||||||
|
const char *(*get_target)(WI_ITEM_REC *item);
|
||||||
|
#define window_item_get_target(item) \
|
||||||
|
((item)->get_target(item))
|
||||||
|
|
||||||
#undef STRUCT_SERVER_REC
|
#undef STRUCT_SERVER_REC
|
||||||
|
@ -501,7 +501,9 @@ GList *completion_get_channels(SERVER_REC *server, const char *word)
|
|||||||
for (; tmp != NULL; tmp = tmp->next) {
|
for (; tmp != NULL; tmp = tmp->next) {
|
||||||
CHANNEL_REC *rec = tmp->data;
|
CHANNEL_REC *rec = tmp->data;
|
||||||
|
|
||||||
if (g_strncasecmp(rec->name, word, len) == 0)
|
if (g_strncasecmp(rec->visible_name, word, len) == 0)
|
||||||
|
list = g_list_append(list, g_strdup(rec->visible_name));
|
||||||
|
else if (g_strncasecmp(rec->name, word, len) == 0)
|
||||||
list = g_list_append(list, g_strdup(rec->name));
|
list = g_list_append(list, g_strdup(rec->name));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -861,7 +863,7 @@ static void event_text(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
|
|
||||||
str = g_strdup_printf(IS_CHANNEL(item) ? "-channel %s %s" :
|
str = g_strdup_printf(IS_CHANNEL(item) ? "-channel %s %s" :
|
||||||
IS_QUERY(item) ? "-nick %s %s" : "%s %s",
|
IS_QUERY(item) ? "-nick %s %s" : "%s %s",
|
||||||
item->name, line);
|
window_item_get_target(item), line);
|
||||||
|
|
||||||
signal_emit("command msg", 3, str, server, item);
|
signal_emit("command msg", 3, str, server, item);
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ static void signal_channel_destroyed(CHANNEL_REC *channel)
|
|||||||
!channel->server->disconnected) {
|
!channel->server->disconnected) {
|
||||||
/* kicked out from channel */
|
/* kicked out from channel */
|
||||||
window_bind_add(window, channel->server->tag,
|
window_bind_add(window, channel->server->tag,
|
||||||
channel->name);
|
channel->visible_name);
|
||||||
} else if (!channel->joined || channel->left)
|
} else if (!channel->joined || channel->left)
|
||||||
window_auto_destroy(window);
|
window_auto_destroy(window);
|
||||||
}
|
}
|
||||||
@ -86,7 +86,7 @@ static void sig_disconnected(SERVER_REC *server)
|
|||||||
CHANNEL_REC *channel = tmp->data;
|
CHANNEL_REC *channel = tmp->data;
|
||||||
|
|
||||||
window = window_item_window((WI_ITEM_REC *) channel);
|
window = window_item_window((WI_ITEM_REC *) channel);
|
||||||
window_bind_add(window, server->tag, channel->name);
|
window_bind_add(window, server->tag, channel->visible_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,8 +96,9 @@ static void signal_window_item_changed(WINDOW_REC *window, WI_ITEM_REC *item)
|
|||||||
if (item == NULL) return;
|
if (item == NULL) return;
|
||||||
|
|
||||||
if (g_slist_length(window->items) > 1 && IS_CHANNEL(item)) {
|
if (g_slist_length(window->items) > 1 && IS_CHANNEL(item)) {
|
||||||
printformat(item->server, item->name, MSGLEVEL_CLIENTNOTICE,
|
printformat(item->server, item->visible_name,
|
||||||
TXT_TALKING_IN, item->name);
|
MSGLEVEL_CLIENTNOTICE,
|
||||||
|
TXT_TALKING_IN, item->visible_name);
|
||||||
signal_stop();
|
signal_stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,7 +173,8 @@ static void cmd_channel_list_joined(void)
|
|||||||
/* print active channel */
|
/* print active channel */
|
||||||
channel = CHANNEL(active_win->active);
|
channel = CHANNEL(active_win->active);
|
||||||
if (channel != NULL)
|
if (channel != NULL)
|
||||||
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_CURRENT_CHANNEL, channel->name);
|
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
|
||||||
|
TXT_CURRENT_CHANNEL, channel->visible_name);
|
||||||
|
|
||||||
/* print list of all channels, their modes, server tags and nicks */
|
/* print list of all channels, their modes, server tags and nicks */
|
||||||
printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_CHANLIST_HEADER);
|
printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_CHANLIST_HEADER);
|
||||||
@ -189,7 +191,8 @@ static void cmd_channel_list_joined(void)
|
|||||||
|
|
||||||
if (nicks->len > 1) g_string_truncate(nicks, nicks->len-1);
|
if (nicks->len > 1) g_string_truncate(nicks, nicks->len-1);
|
||||||
printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_CHANLIST_LINE,
|
printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_CHANLIST_LINE,
|
||||||
channel->name, channel->mode, channel->server->tag, nicks->str);
|
channel->visible_name, channel->mode,
|
||||||
|
channel->server->tag, nicks->str);
|
||||||
|
|
||||||
g_slist_free(nicklist);
|
g_slist_free(nicklist);
|
||||||
g_string_free(nicks, TRUE);
|
g_string_free(nicks, TRUE);
|
||||||
@ -326,13 +329,13 @@ static void display_sorted_nicks(CHANNEL_REC *channel, GSList *nicklist)
|
|||||||
int *columns, cols, rows, last_col_rows, col, row, max_width;
|
int *columns, cols, rows, last_col_rows, col, row, max_width;
|
||||||
int item_extra, linebuf_size, formatnum;
|
int item_extra, linebuf_size, formatnum;
|
||||||
|
|
||||||
window = window_find_closest(channel->server, channel->name,
|
window = window_find_closest(channel->server, channel->visible_name,
|
||||||
MSGLEVEL_CLIENTCRAP);
|
MSGLEVEL_CLIENTCRAP);
|
||||||
max_width = window->width;
|
max_width = window->width;
|
||||||
|
|
||||||
/* get the length of item extra stuff ("[ ] ") */
|
/* get the length of item extra stuff ("[ ] ") */
|
||||||
format = format_get_text(MODULE_NAME, NULL,
|
format = format_get_text(MODULE_NAME, NULL,
|
||||||
channel->server, channel->name,
|
channel->server, channel->visible_name,
|
||||||
TXT_NAMES_NICK, " ", "");
|
TXT_NAMES_NICK, " ", "");
|
||||||
stripped = strip_codes(format);
|
stripped = strip_codes(format);
|
||||||
item_extra = strlen(stripped);
|
item_extra = strlen(stripped);
|
||||||
@ -344,7 +347,7 @@ static void display_sorted_nicks(CHANNEL_REC *channel, GSList *nicklist)
|
|||||||
max_width = settings_get_int("names_max_width");
|
max_width = settings_get_int("names_max_width");
|
||||||
|
|
||||||
/* remove width of the timestamp from max_width */
|
/* remove width of the timestamp from max_width */
|
||||||
format_create_dest(&dest, channel->server, channel->name,
|
format_create_dest(&dest, channel->server, channel->visible_name,
|
||||||
MSGLEVEL_CLIENTCRAP, NULL);
|
MSGLEVEL_CLIENTCRAP, NULL);
|
||||||
format = format_get_line_start(current_theme, &dest, time(NULL));
|
format = format_get_line_start(current_theme, &dest, time(NULL));
|
||||||
if (format != NULL) {
|
if (format != NULL) {
|
||||||
@ -356,8 +359,9 @@ static void display_sorted_nicks(CHANNEL_REC *channel, GSList *nicklist)
|
|||||||
|
|
||||||
/* remove width of the prefix from max_width */
|
/* remove width of the prefix from max_width */
|
||||||
prefix_format = format_get_text(MODULE_NAME, NULL,
|
prefix_format = format_get_text(MODULE_NAME, NULL,
|
||||||
channel->server, channel->name,
|
channel->server, channel->visible_name,
|
||||||
TXT_NAMES_PREFIX, channel->name);
|
TXT_NAMES_PREFIX,
|
||||||
|
channel->visible_name);
|
||||||
if (prefix_format != NULL) {
|
if (prefix_format != NULL) {
|
||||||
stripped = strip_codes(prefix_format);
|
stripped = strip_codes(prefix_format);
|
||||||
max_width -= strlen(stripped);
|
max_width -= strlen(stripped);
|
||||||
@ -410,13 +414,14 @@ static void display_sorted_nicks(CHANNEL_REC *channel, GSList *nicklist)
|
|||||||
rec->voice ? TXT_NAMES_NICK_VOICE :
|
rec->voice ? TXT_NAMES_NICK_VOICE :
|
||||||
TXT_NAMES_NICK;
|
TXT_NAMES_NICK;
|
||||||
format = format_get_text(MODULE_NAME, NULL,
|
format = format_get_text(MODULE_NAME, NULL,
|
||||||
channel->server, channel->name,
|
channel->server,
|
||||||
|
channel->visible_name,
|
||||||
formatnum, nickmode, linebuf);
|
formatnum, nickmode, linebuf);
|
||||||
g_string_append(str, format);
|
g_string_append(str, format);
|
||||||
g_free(format);
|
g_free(format);
|
||||||
|
|
||||||
if (++col == cols) {
|
if (++col == cols) {
|
||||||
printtext(channel->server, channel->name,
|
printtext(channel->server, channel->visible_name,
|
||||||
MSGLEVEL_CLIENTCRAP, "%s", str->str);
|
MSGLEVEL_CLIENTCRAP, "%s", str->str);
|
||||||
g_string_truncate(str, 0);
|
g_string_truncate(str, 0);
|
||||||
if (prefix_format != NULL)
|
if (prefix_format != NULL)
|
||||||
@ -429,7 +434,7 @@ static void display_sorted_nicks(CHANNEL_REC *channel, GSList *nicklist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (str->len > strlen(prefix_format)) {
|
if (str->len > strlen(prefix_format)) {
|
||||||
printtext(channel->server, channel->name,
|
printtext(channel->server, channel->visible_name,
|
||||||
MSGLEVEL_CLIENTCRAP, "%s", str->str);
|
MSGLEVEL_CLIENTCRAP, "%s", str->str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,15 +485,17 @@ void fe_channels_nicklist(CHANNEL_REC *channel, int flags)
|
|||||||
|
|
||||||
/* display the nicks */
|
/* display the nicks */
|
||||||
if ((flags & CHANNEL_NICKLIST_FLAG_COUNT) == 0) {
|
if ((flags & CHANNEL_NICKLIST_FLAG_COUNT) == 0) {
|
||||||
printformat(channel->server, channel->name,
|
printformat(channel->server, channel->visible_name,
|
||||||
MSGLEVEL_CLIENTCRAP, TXT_NAMES, channel->name, nicks, ops, halfops, voices, normal);
|
MSGLEVEL_CLIENTCRAP, TXT_NAMES,
|
||||||
|
channel->visible_name,
|
||||||
|
nicks, ops, halfops, voices, normal);
|
||||||
display_sorted_nicks(channel, sorted);
|
display_sorted_nicks(channel, sorted);
|
||||||
}
|
}
|
||||||
g_slist_free(sorted);
|
g_slist_free(sorted);
|
||||||
|
|
||||||
printformat(channel->server, channel->name,
|
printformat(channel->server, channel->visible_name,
|
||||||
MSGLEVEL_CLIENTNOTICE, TXT_ENDOFNAMES,
|
MSGLEVEL_CLIENTNOTICE, TXT_ENDOFNAMES,
|
||||||
channel->name, nicks, ops, halfops, voices, normal);
|
channel->visible_name, nicks, ops, halfops, voices, normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SYNTAX: NAMES [-count | -ops -halfops -voices -normal] [<channels> | **] */
|
/* SYNTAX: NAMES [-count | -ops -halfops -voices -normal] [<channels> | **] */
|
||||||
@ -513,7 +520,7 @@ static void cmd_names(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
if (!IS_CHANNEL(item))
|
if (!IS_CHANNEL(item))
|
||||||
cmd_param_error(CMDERR_NOT_JOINED);
|
cmd_param_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
channel = item->name;
|
channel = CHANNEL(item)->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
flags = 0;
|
flags = 0;
|
||||||
@ -575,7 +582,7 @@ static void cmd_cycle(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
|
|
||||||
joindata = chanrec->get_join_data(chanrec);
|
joindata = chanrec->get_join_data(chanrec);
|
||||||
window_bind_add(window_item_window(chanrec),
|
window_bind_add(window_item_window(chanrec),
|
||||||
chanrec->server->tag, chanrec->name);
|
chanrec->server->tag, chanrec->visible_name);
|
||||||
|
|
||||||
/* FIXME: kludgy kludgy... */
|
/* FIXME: kludgy kludgy... */
|
||||||
signal_emit("command part", 3, data, server, item);
|
signal_emit("command part", 3, data, server, item);
|
||||||
|
@ -54,7 +54,7 @@ static void exec_wi_destroy(EXEC_WI_REC *rec)
|
|||||||
window_item_destroy((WI_ITEM_REC *) rec);
|
window_item_destroy((WI_ITEM_REC *) rec);
|
||||||
|
|
||||||
MODULE_DATA_DEINIT(rec);
|
MODULE_DATA_DEINIT(rec);
|
||||||
g_free(rec->name);
|
g_free(rec->visible_name);
|
||||||
g_free(rec);
|
g_free(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ static EXEC_WI_REC *exec_wi_create(WINDOW_REC *window, PROCESS_REC *rec)
|
|||||||
item = g_new0(EXEC_WI_REC, 1);
|
item = g_new0(EXEC_WI_REC, 1);
|
||||||
item->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "EXEC");
|
item->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "EXEC");
|
||||||
item->destroy = (void (*) (WI_ITEM_REC *)) exec_wi_destroy;
|
item->destroy = (void (*) (WI_ITEM_REC *)) exec_wi_destroy;
|
||||||
item->name = rec->name != NULL ? g_strdup(rec->name) :
|
item->visible_name = rec->name != NULL ? g_strdup(rec->name) :
|
||||||
g_strdup_printf("%%%d", rec->id);
|
g_strdup_printf("%%%d", rec->id);
|
||||||
|
|
||||||
item->createtime = time(NULL);
|
item->createtime = time(NULL);
|
||||||
@ -411,7 +411,7 @@ static void handle_exec(const char *args, GHashTable *optlist,
|
|||||||
/* redirect output to active channel/query */
|
/* redirect output to active channel/query */
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
cmd_return_error(CMDERR_NOT_JOINED);
|
cmd_return_error(CMDERR_NOT_JOINED);
|
||||||
target = item->name;
|
target = (char *) window_item_get_target(item);
|
||||||
target_channel = IS_CHANNEL(item);
|
target_channel = IS_CHANNEL(item);
|
||||||
target_nick = IS_QUERY(item);
|
target_nick = IS_QUERY(item);
|
||||||
} else if (g_hash_table_lookup(optlist, "msg") != NULL) {
|
} else if (g_hash_table_lookup(optlist, "msg") != NULL) {
|
||||||
@ -589,7 +589,7 @@ static void sig_exec_input(PROCESS_REC *rec, const char *text)
|
|||||||
3, str, server, item);
|
3, str, server, item);
|
||||||
g_free(str);
|
g_free(str);
|
||||||
} else if (rec->target_item != NULL) {
|
} else if (rec->target_item != NULL) {
|
||||||
printtext(NULL, rec->target_item->name,
|
printtext(NULL, rec->target_item->visible_name,
|
||||||
rec->level, "%s", text);
|
rec->level, "%s", text);
|
||||||
} else {
|
} else {
|
||||||
printtext_window(rec->target_win, rec->level, "%s", text);
|
printtext_window(rec->target_win, rec->level, "%s", text);
|
||||||
|
@ -595,7 +595,7 @@ static void sig_window_item_destroy(WINDOW_REC *window, WI_ITEM_REC *item)
|
|||||||
{
|
{
|
||||||
LOG_REC *log;
|
LOG_REC *log;
|
||||||
|
|
||||||
log = logs_find_item(LOG_ITEM_TARGET, item->name,
|
log = logs_find_item(LOG_ITEM_TARGET, item->visible_name,
|
||||||
item->server == NULL ? NULL :
|
item->server == NULL ? NULL :
|
||||||
item->server->tag, NULL);
|
item->server->tag, NULL);
|
||||||
if (log != NULL && log->temp)
|
if (log != NULL && log->temp)
|
||||||
|
@ -347,7 +347,7 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
if (!nicklist_find(rec, nick))
|
if (!nicklist_find(rec, nick))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, rec->name,
|
if (ignore_check(server, nick, address, rec->visible_name,
|
||||||
reason, MSGLEVEL_QUITS)) {
|
reason, MSGLEVEL_QUITS)) {
|
||||||
count++;
|
count++;
|
||||||
continue;
|
continue;
|
||||||
@ -355,17 +355,18 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
|
|
||||||
if (print_channel == NULL ||
|
if (print_channel == NULL ||
|
||||||
active_win->active == (WI_ITEM_REC *) rec)
|
active_win->active == (WI_ITEM_REC *) rec)
|
||||||
print_channel = rec->name;
|
print_channel = rec->visible_name;
|
||||||
|
|
||||||
if (once)
|
if (once)
|
||||||
g_string_sprintfa(chans, "%s,", rec->name);
|
g_string_sprintfa(chans, "%s,", rec->visible_name);
|
||||||
else {
|
else {
|
||||||
window = window_item_window((WI_ITEM_REC *) rec);
|
window = window_item_window((WI_ITEM_REC *) rec);
|
||||||
if (g_slist_find(windows, window) == NULL) {
|
if (g_slist_find(windows, window) == NULL) {
|
||||||
windows = g_slist_append(windows, window);
|
windows = g_slist_append(windows, window);
|
||||||
printformat(server, rec->name, MSGLEVEL_QUITS,
|
printformat(server, rec->visible_name,
|
||||||
|
MSGLEVEL_QUITS,
|
||||||
TXT_QUIT, nick, address, reason,
|
TXT_QUIT, nick, address, reason,
|
||||||
rec->name);
|
rec->visible_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
@ -441,8 +442,8 @@ static void print_nick_change(SERVER_REC *server, const char *newnick,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
windows = g_slist_append(windows, window);
|
windows = g_slist_append(windows, window);
|
||||||
print_nick_change_channel(server, channel->name, newnick,
|
print_nick_change_channel(server, channel->visible_name,
|
||||||
oldnick, address, ownnick);
|
newnick, oldnick, address, ownnick);
|
||||||
msgprint = TRUE;
|
msgprint = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,12 +232,12 @@ void window_set_immortal(WINDOW_REC *window, int immortal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* return active item's name, or if none is active, window's name */
|
/* return active item's name, or if none is active, window's name */
|
||||||
char *window_get_active_name(WINDOW_REC *window)
|
const char *window_get_active_name(WINDOW_REC *window)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail(window != NULL, NULL);
|
g_return_val_if_fail(window != NULL, NULL);
|
||||||
|
|
||||||
if (window->active != NULL)
|
if (window->active != NULL)
|
||||||
return window->active->name;
|
return window->active->visible_name;
|
||||||
|
|
||||||
return window->name;
|
return window->name;
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ void window_set_level(WINDOW_REC *window, int level);
|
|||||||
void window_set_immortal(WINDOW_REC *window, int immortal);
|
void window_set_immortal(WINDOW_REC *window, int immortal);
|
||||||
|
|
||||||
/* return active item's name, or if none is active, window's name */
|
/* return active item's name, or if none is active, window's name */
|
||||||
char *window_get_active_name(WINDOW_REC *window);
|
const char *window_get_active_name(WINDOW_REC *window);
|
||||||
|
|
||||||
WINDOW_REC *window_find_level(void *server, int level);
|
WINDOW_REC *window_find_level(void *server, int level);
|
||||||
WINDOW_REC *window_find_closest(void *server, const char *name, int level);
|
WINDOW_REC *window_find_closest(void *server, const char *name, int level);
|
||||||
|
@ -64,7 +64,8 @@ static void window_print_items(WINDOW_REC *win)
|
|||||||
type = module_find_id_str("WINDOW ITEM TYPE", item->type);
|
type = module_find_id_str("WINDOW ITEM TYPE", item->type);
|
||||||
printformat_window(win, MSGLEVEL_CLIENTCRAP,
|
printformat_window(win, MSGLEVEL_CLIENTCRAP,
|
||||||
TXT_WINDOW_INFO_ITEM,
|
TXT_WINDOW_INFO_ITEM,
|
||||||
type == NULL ? "??" : type, item->name,
|
type == NULL ? "??" : type,
|
||||||
|
item->visible_name,
|
||||||
item->server == NULL ? "" :
|
item->server == NULL ? "" :
|
||||||
item->server->tag);
|
item->server->tag);
|
||||||
}
|
}
|
||||||
@ -660,7 +661,7 @@ static void cmd_window_list(void)
|
|||||||
levelstr = bits2level(rec->level);
|
levelstr = bits2level(rec->level);
|
||||||
printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_WINDOWLIST_LINE,
|
printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_WINDOWLIST_LINE,
|
||||||
rec->refnum, rec->name == NULL ? "" : rec->name,
|
rec->refnum, rec->name == NULL ? "" : rec->name,
|
||||||
rec->active == NULL ? "" : rec->active->name,
|
rec->active == NULL ? "" : rec->active->visible_name,
|
||||||
rec->active_server == NULL ? "" : ((SERVER_REC *) rec->active_server)->tag,
|
rec->active_server == NULL ? "" : ((SERVER_REC *) rec->active_server)->tag,
|
||||||
levelstr);
|
levelstr);
|
||||||
g_free(levelstr);
|
g_free(levelstr);
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "modules.h"
|
#include "modules.h"
|
||||||
#include "signals.h"
|
#include "signals.h"
|
||||||
#include "servers.h"
|
#include "servers.h"
|
||||||
|
#include "channels.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
#include "levels.h"
|
#include "levels.h"
|
||||||
@ -195,15 +196,23 @@ void window_item_next(WINDOW_REC *window)
|
|||||||
WI_ITEM_REC *window_item_find_window(WINDOW_REC *window,
|
WI_ITEM_REC *window_item_find_window(WINDOW_REC *window,
|
||||||
void *server, const char *name)
|
void *server, const char *name)
|
||||||
{
|
{
|
||||||
|
CHANNEL_REC *channel;
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
|
|
||||||
for (tmp = window->items; tmp != NULL; tmp = tmp->next) {
|
for (tmp = window->items; tmp != NULL; tmp = tmp->next) {
|
||||||
WI_ITEM_REC *rec = tmp->data;
|
WI_ITEM_REC *rec = tmp->data;
|
||||||
|
|
||||||
if ((server == NULL || rec->server == server) &&
|
if ((server == NULL || rec->server == server) &&
|
||||||
g_strcasecmp(name, rec->name) == 0) return rec;
|
g_strcasecmp(name, rec->visible_name) == 0)
|
||||||
|
return rec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* try with channel name too, it's not necessarily
|
||||||
|
same as visible_name (!channels) */
|
||||||
|
channel = channel_find(server, name);
|
||||||
|
if (channel != NULL && window_item_window(channel) == window)
|
||||||
|
return (WI_ITEM_REC *) channel;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,7 +268,7 @@ void window_item_create(WI_ITEM_REC *item, int automatic)
|
|||||||
/* is item bound to this window? */
|
/* is item bound to this window? */
|
||||||
if (item->server != NULL) {
|
if (item->server != NULL) {
|
||||||
bind = window_bind_find(rec, item->server->tag,
|
bind = window_bind_find(rec, item->server->tag,
|
||||||
item->name);
|
item->visible_name);
|
||||||
if (bind != NULL) {
|
if (bind != NULL) {
|
||||||
if (!bind->sticky)
|
if (!bind->sticky)
|
||||||
window_bind_destroy(rec, bind);
|
window_bind_destroy(rec, bind);
|
||||||
@ -316,8 +325,9 @@ static void signal_window_item_changed(WINDOW_REC *window, WI_ITEM_REC *item)
|
|||||||
if (g_slist_length(window->items) > 1) {
|
if (g_slist_length(window->items) > 1) {
|
||||||
/* default to printing "talking with ...",
|
/* default to printing "talking with ...",
|
||||||
you can override it it you wish */
|
you can override it it you wish */
|
||||||
printformat(item->server, item->name, MSGLEVEL_CLIENTNOTICE,
|
printformat(item->server, item->visible_name,
|
||||||
TXT_TALKING_WITH, item->name);
|
MSGLEVEL_CLIENTNOTICE,
|
||||||
|
TXT_TALKING_WITH, item->visible_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ static void sig_layout_save_item(WINDOW_REC *window, WI_ITEM_REC *item,
|
|||||||
iconfig_node_set_str(subnode, "type", type);
|
iconfig_node_set_str(subnode, "type", type);
|
||||||
type = chat_protocol_find_id(item->chat_type)->name;
|
type = chat_protocol_find_id(item->chat_type)->name;
|
||||||
iconfig_node_set_str(subnode, "chat_type", type);
|
iconfig_node_set_str(subnode, "chat_type", type);
|
||||||
iconfig_node_set_str(subnode, "name", item->name);
|
iconfig_node_set_str(subnode, "name", item->visible_name);
|
||||||
|
|
||||||
if (item->server != NULL)
|
if (item->server != NULL)
|
||||||
iconfig_node_set_str(subnode, "tag", item->server->tag);
|
iconfig_node_set_str(subnode, "tag", item->server->tag);
|
||||||
|
@ -14,7 +14,6 @@ INCLUDES = \
|
|||||||
real_sources = \
|
real_sources = \
|
||||||
fe-irc-channels.c \
|
fe-irc-channels.c \
|
||||||
fe-irc-commands.c \
|
fe-irc-commands.c \
|
||||||
fe-irc-layout.c \
|
|
||||||
fe-irc-messages.c \
|
fe-irc-messages.c \
|
||||||
fe-irc-queries.c \
|
fe-irc-queries.c \
|
||||||
fe-irc-server.c \
|
fe-irc-server.c \
|
||||||
@ -33,6 +32,7 @@ libfe_common_irc_a_SOURCES = \
|
|||||||
irc-modules.c
|
irc-modules.c
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
|
fe-irc-server.h \
|
||||||
module.h \
|
module.h \
|
||||||
module-formats.h
|
module-formats.h
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
#include "themes.h"
|
#include "themes.h"
|
||||||
|
#include "fe-irc-server.h"
|
||||||
|
|
||||||
void fe_irc_modules_init(void);
|
void fe_irc_modules_init(void);
|
||||||
void fe_irc_modules_deinit(void);
|
void fe_irc_modules_deinit(void);
|
||||||
@ -49,9 +50,6 @@ void fe_irc_commands_deinit(void);
|
|||||||
void fe_ircnet_init(void);
|
void fe_ircnet_init(void);
|
||||||
void fe_ircnet_deinit(void);
|
void fe_ircnet_deinit(void);
|
||||||
|
|
||||||
void fe_irc_server_init(void);
|
|
||||||
void fe_irc_server_deinit(void);
|
|
||||||
|
|
||||||
void fe_ctcp_init(void);
|
void fe_ctcp_init(void);
|
||||||
void fe_ctcp_deinit(void);
|
void fe_ctcp_deinit(void);
|
||||||
|
|
||||||
@ -78,7 +76,6 @@ void fe_common_irc_init(void)
|
|||||||
|
|
||||||
fe_irc_channels_init();
|
fe_irc_channels_init();
|
||||||
fe_irc_queries_init();
|
fe_irc_queries_init();
|
||||||
fe_irc_layout_init();
|
|
||||||
fe_irc_messages_init();
|
fe_irc_messages_init();
|
||||||
fe_irc_commands_init();
|
fe_irc_commands_init();
|
||||||
fe_ircnet_init();
|
fe_ircnet_init();
|
||||||
@ -102,7 +99,6 @@ void fe_common_irc_deinit(void)
|
|||||||
|
|
||||||
fe_irc_channels_deinit();
|
fe_irc_channels_deinit();
|
||||||
fe_irc_queries_deinit();
|
fe_irc_queries_deinit();
|
||||||
fe_irc_layout_deinit();
|
|
||||||
fe_irc_messages_deinit();
|
fe_irc_messages_deinit();
|
||||||
fe_irc_commands_deinit();
|
fe_irc_commands_deinit();
|
||||||
fe_ircnet_deinit();
|
fe_ircnet_deinit();
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "../core/module-formats.h"
|
#include "../core/module-formats.h"
|
||||||
#include "printtext.h"
|
#include "printtext.h"
|
||||||
#include "fe-channels.h"
|
#include "fe-channels.h"
|
||||||
|
#include "fe-irc-server.h"
|
||||||
|
|
||||||
static void print_event_received(IRC_SERVER_REC *server, const char *data,
|
static void print_event_received(IRC_SERVER_REC *server, const char *data,
|
||||||
const char *nick, int target_param);
|
const char *nick, int target_param);
|
||||||
@ -132,7 +133,8 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_ban_list(IRC_SERVER_REC *server, const char *data)
|
static void event_ban_list(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *ban, *setby, *tims;
|
const char *channel;
|
||||||
|
char *params, *ban, *setby, *tims;
|
||||||
long secs;
|
long secs;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
@ -142,6 +144,7 @@ static void event_ban_list(IRC_SERVER_REC *server, const char *data)
|
|||||||
secs = *tims == '\0' ? 0 :
|
secs = *tims == '\0' ? 0 :
|
||||||
(long) (time(NULL) - atol(tims));
|
(long) (time(NULL) - atol(tims));
|
||||||
|
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
*setby == '\0' ? IRCTXT_BANLIST : IRCTXT_BANLIST_LONG,
|
*setby == '\0' ? IRCTXT_BANLIST : IRCTXT_BANLIST_LONG,
|
||||||
0, channel, ban, setby, secs);
|
0, channel, ban, setby, secs);
|
||||||
@ -151,7 +154,8 @@ static void event_ban_list(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_eban_list(IRC_SERVER_REC *server, const char *data)
|
static void event_eban_list(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *ban, *setby, *tims;
|
const char *channel;
|
||||||
|
char *params, *ban, *setby, *tims;
|
||||||
long secs;
|
long secs;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
@ -161,6 +165,7 @@ static void event_eban_list(IRC_SERVER_REC *server, const char *data)
|
|||||||
secs = *tims == '\0' ? 0 :
|
secs = *tims == '\0' ? 0 :
|
||||||
(long) (time(NULL) - atol(tims));
|
(long) (time(NULL) - atol(tims));
|
||||||
|
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
*setby == '\0' ? IRCTXT_EBANLIST : IRCTXT_EBANLIST_LONG,
|
*setby == '\0' ? IRCTXT_EBANLIST : IRCTXT_EBANLIST_LONG,
|
||||||
channel, ban, setby, secs);
|
channel, ban, setby, secs);
|
||||||
@ -183,11 +188,13 @@ static void event_silence_list(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_invite_list(IRC_SERVER_REC *server, const char *data)
|
static void event_invite_list(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *invite;
|
const char *channel;
|
||||||
|
char *params, *invite;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &channel, &invite);
|
params = event_get_params(data, 3, NULL, &channel, &invite);
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
IRCTXT_INVITELIST, channel, invite);
|
IRCTXT_INVITELIST, channel, invite);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -210,11 +217,13 @@ static void event_nick_in_use(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_topic_get(IRC_SERVER_REC *server, const char *data)
|
static void event_topic_get(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *topic;
|
const char *channel;
|
||||||
|
char *params, *topic;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &channel, &topic);
|
params = event_get_params(data, 3, NULL, &channel, &topic);
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
IRCTXT_TOPIC, channel, topic);
|
IRCTXT_TOPIC, channel, topic);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -222,7 +231,8 @@ static void event_topic_get(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_topic_info(IRC_SERVER_REC *server, const char *data)
|
static void event_topic_info(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *timestr, *channel, *bynick, *byhost, *topictime;
|
const char *channel;
|
||||||
|
char *params, *timestr, *bynick, *byhost, *topictime;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
@ -235,6 +245,7 @@ static void event_topic_info(IRC_SERVER_REC *server, const char *data)
|
|||||||
if (byhost != NULL)
|
if (byhost != NULL)
|
||||||
*byhost++ = '\0';
|
*byhost++ = '\0';
|
||||||
|
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP, IRCTXT_TOPIC_INFO,
|
printformat(server, channel, MSGLEVEL_CRAP, IRCTXT_TOPIC_INFO,
|
||||||
bynick, timestr, byhost == NULL ? "" : byhost);
|
bynick, timestr, byhost == NULL ? "" : byhost);
|
||||||
g_free(timestr);
|
g_free(timestr);
|
||||||
@ -243,12 +254,14 @@ static void event_topic_info(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_channel_mode(IRC_SERVER_REC *server, const char *data)
|
static void event_channel_mode(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *mode;
|
const char *channel;
|
||||||
|
char *params, *mode;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
|
||||||
NULL, &channel, &mode);
|
NULL, &channel, &mode);
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
IRCTXT_CHANNEL_MODE, channel, g_strchomp(mode));
|
IRCTXT_CHANNEL_MODE, channel, g_strchomp(mode));
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -256,13 +269,15 @@ static void event_channel_mode(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_channel_created(IRC_SERVER_REC *server, const char *data)
|
static void event_channel_created(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *createtime, *timestr;
|
const char *channel;
|
||||||
|
char *params, *createtime, *timestr;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &channel, &createtime);
|
params = event_get_params(data, 3, NULL, &channel, &createtime);
|
||||||
|
|
||||||
timestr = my_asctime((time_t) atol(createtime));
|
timestr = my_asctime((time_t) atol(createtime));
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
IRCTXT_CHANNEL_CREATED, channel, timestr);
|
IRCTXT_CHANNEL_CREATED, channel, timestr);
|
||||||
g_free(timestr);
|
g_free(timestr);
|
||||||
@ -604,11 +619,13 @@ static void event_end_of_whois(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
static void event_chanserv_url(IRC_SERVER_REC *server, const char *data)
|
static void event_chanserv_url(IRC_SERVER_REC *server, const char *data)
|
||||||
{
|
{
|
||||||
char *params, *channel, *url;
|
const char *channel;
|
||||||
|
char *params, *url;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &channel, &url);
|
params = event_get_params(data, 3, NULL, &channel, &url);
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
IRCTXT_CHANNEL_URL, channel, url);
|
IRCTXT_CHANNEL_URL, channel, url);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
|
@ -39,8 +39,8 @@
|
|||||||
#include "printtext.h"
|
#include "printtext.h"
|
||||||
#include "fe-queries.h"
|
#include "fe-queries.h"
|
||||||
#include "fe-windows.h"
|
#include "fe-windows.h"
|
||||||
|
#include "fe-irc-server.h"
|
||||||
#include "completion.h"
|
//#include "completion.h"
|
||||||
|
|
||||||
static void event_privmsg(IRC_SERVER_REC *server, const char *data,
|
static void event_privmsg(IRC_SERVER_REC *server, const char *data,
|
||||||
const char *nick, const char *addr)
|
const char *nick, const char *addr)
|
||||||
@ -56,11 +56,13 @@ static void event_privmsg(IRC_SERVER_REC *server, const char *data,
|
|||||||
if (*target == '@' && ischannel(target[1])) {
|
if (*target == '@' && ischannel(target[1])) {
|
||||||
/* Hybrid 6 feature, send msg to all ops in channel */
|
/* Hybrid 6 feature, send msg to all ops in channel */
|
||||||
signal_emit("message irc op_public", 5,
|
signal_emit("message irc op_public", 5,
|
||||||
server, msg, nick, addr, target+1);
|
server, msg, nick, addr,
|
||||||
|
get_visible_target(server, target+1));
|
||||||
} else {
|
} else {
|
||||||
signal_emit(ischannel(*target) ?
|
signal_emit(ischannel(*target) ?
|
||||||
"message public" : "message private", 5,
|
"message public" : "message private", 5,
|
||||||
server, msg, nick, addr, target);
|
server, msg, nick, addr,
|
||||||
|
get_visible_target(server, target));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -73,7 +75,8 @@ static void ctcp_action(IRC_SERVER_REC *server, const char *data,
|
|||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
signal_emit("message irc action", 5,
|
signal_emit("message irc action", 5,
|
||||||
server, data, nick, addr, target);
|
server, data, nick, addr,
|
||||||
|
get_visible_target(server, target));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_notice(IRC_SERVER_REC *server, const char *data,
|
static void event_notice(IRC_SERVER_REC *server, const char *data,
|
||||||
@ -90,15 +93,16 @@ static void event_notice(IRC_SERVER_REC *server, const char *data,
|
|||||||
server->real_address;
|
server->real_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
signal_emit("message irc notice", 5,
|
signal_emit("message irc notice", 5, server, msg, nick, addr,
|
||||||
server, msg, nick, addr, target);
|
get_visible_target(server, target));
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_join(IRC_SERVER_REC *server, const char *data,
|
static void event_join(IRC_SERVER_REC *server, const char *data,
|
||||||
const char *nick, const char *addr)
|
const char *nick, const char *addr)
|
||||||
{
|
{
|
||||||
char *params, *channel, *tmp;
|
const char *channel;
|
||||||
|
char *params, *tmp;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
@ -106,6 +110,9 @@ static void event_join(IRC_SERVER_REC *server, const char *data,
|
|||||||
tmp = strchr(channel, 7); /* ^G does something weird.. */
|
tmp = strchr(channel, 7); /* ^G does something weird.. */
|
||||||
if (tmp != NULL) *tmp = '\0';
|
if (tmp != NULL) *tmp = '\0';
|
||||||
|
|
||||||
|
if (g_strcasecmp(server->nick, nick) != 0)
|
||||||
|
channel = get_visible_target(server, channel);
|
||||||
|
|
||||||
signal_emit("message join", 4, server, channel, nick, addr);
|
signal_emit("message join", 4, server, channel, nick, addr);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
@ -119,7 +126,8 @@ static void event_part(IRC_SERVER_REC *server, const char *data,
|
|||||||
|
|
||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
||||||
&channel, &reason);
|
&channel, &reason);
|
||||||
signal_emit("message part", 5, server, channel, nick, addr, reason);
|
signal_emit("message part", 5, server,
|
||||||
|
get_visible_target(server, channel), nick, addr, reason);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,8 +149,9 @@ static void event_kick(IRC_SERVER_REC *server, const char *data,
|
|||||||
|
|
||||||
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
|
||||||
&channel, &nick, &reason);
|
&channel, &nick, &reason);
|
||||||
signal_emit("message kick", 6, server, channel, nick,
|
signal_emit("message kick", 6,
|
||||||
kicker, addr, reason);
|
server, get_visible_target(server, channel),
|
||||||
|
nick, kicker, addr, reason);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,8 +214,9 @@ static void event_mode(IRC_SERVER_REC *server, const char *data,
|
|||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
||||||
&channel, &mode);
|
&channel, &mode);
|
||||||
|
|
||||||
signal_emit("message irc mode", 5, server, channel, nick, addr,
|
signal_emit("message irc mode", 5,
|
||||||
g_strchomp(mode));
|
server, get_visible_target(server, channel),
|
||||||
|
nick, addr, g_strchomp(mode));
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +240,8 @@ static void event_invite(IRC_SERVER_REC *server, const char *data,
|
|||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 2, NULL, &channel);
|
params = event_get_params(data, 2, NULL, &channel);
|
||||||
signal_emit("message invite", 4, server, channel, nick, addr);
|
signal_emit("message invite", 4,
|
||||||
|
server, get_visible_target(server, channel), nick, addr);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +254,8 @@ static void event_topic(IRC_SERVER_REC *server, const char *data,
|
|||||||
|
|
||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
||||||
&channel, &topic);
|
&channel, &topic);
|
||||||
signal_emit("message topic", 5, server, channel, topic, nick, addr);
|
signal_emit("message topic", 5, server,
|
||||||
|
get_visible_target(server, channel), topic, nick, addr);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,8 +303,10 @@ static void channel_sync(CHANNEL_REC *channel)
|
|||||||
{
|
{
|
||||||
g_return_if_fail(channel != NULL);
|
g_return_if_fail(channel != NULL);
|
||||||
|
|
||||||
printformat(channel->server, channel->name, MSGLEVEL_CLIENTNOTICE|MSGLEVEL_NO_ACT,
|
printformat(channel->server, channel->visible_name,
|
||||||
IRCTXT_CHANNEL_SYNCED, channel->name, (long) (time(NULL)-channel->createtime));
|
MSGLEVEL_CLIENTNOTICE|MSGLEVEL_NO_ACT,
|
||||||
|
IRCTXT_CHANNEL_SYNCED, channel->visible_name,
|
||||||
|
(long) (time(NULL)-channel->createtime));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_connected(IRC_SERVER_REC *server)
|
static void event_connected(IRC_SERVER_REC *server)
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
#include "printtext.h"
|
#include "printtext.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
|
|
||||||
static char *skip_target(char *target)
|
static const char *skip_target(const char *target)
|
||||||
{
|
{
|
||||||
if (*target == '@') {
|
if (*target == '@') {
|
||||||
/* @#channel, @+#channel - Hybrid6 / Bahamut features */
|
/* @#channel, @+#channel - Hybrid6 / Bahamut features */
|
||||||
@ -63,17 +63,18 @@ static void cmd_me(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
if (server == NULL || !server->connected)
|
if (server == NULL || !server->connected)
|
||||||
cmd_return_error(CMDERR_NOT_CONNECTED);
|
cmd_return_error(CMDERR_NOT_CONNECTED);
|
||||||
|
|
||||||
signal_emit("message irc own_action", 3, server, data, item->name);
|
signal_emit("message irc own_action", 3, server, data,
|
||||||
|
item->visible_name);
|
||||||
|
|
||||||
irc_send_cmdv(server, "PRIVMSG %s :\001ACTION %s\001",
|
irc_send_cmdv(server, "PRIVMSG %s :\001ACTION %s\001",
|
||||||
item->name, data);
|
window_item_get_target(item), data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SYNTAX: ACTION [-<server tag>] <target> <message> */
|
/* SYNTAX: ACTION [-<server tag>] <target> <message> */
|
||||||
static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
||||||
{
|
{
|
||||||
GHashTable *optlist;
|
GHashTable *optlist;
|
||||||
char *target, *text;
|
const char *target, *text;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -99,7 +100,7 @@ static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
|||||||
static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
char *target, *msg;
|
const char *target, *msg;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -108,7 +109,7 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
|||||||
&target, &msg))
|
&target, &msg))
|
||||||
return;
|
return;
|
||||||
if (strcmp(target, "*") == 0)
|
if (strcmp(target, "*") == 0)
|
||||||
target = item == NULL ? "" : item->name;
|
target = item == NULL ? "" : window_item_get_target(item);
|
||||||
|
|
||||||
if (*target == '\0' || *msg == '\0')
|
if (*target == '\0' || *msg == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
@ -121,7 +122,8 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
|||||||
static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
char *target, *ctcpcmd, *ctcpdata;
|
const char *target;
|
||||||
|
char *ctcpcmd, *ctcpdata;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -130,7 +132,7 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
&target, &ctcpcmd, &ctcpdata))
|
&target, &ctcpcmd, &ctcpdata))
|
||||||
return;
|
return;
|
||||||
if (strcmp(target, "*") == 0)
|
if (strcmp(target, "*") == 0)
|
||||||
target = item == NULL ? "" : item->name;
|
target = item == NULL ? "" : window_item_get_target(item);
|
||||||
if (*target == '\0' || *ctcpcmd == '\0')
|
if (*target == '\0' || *ctcpcmd == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
@ -152,7 +154,7 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
char *target, *text;
|
const char *target, *text;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -161,7 +163,7 @@ static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
&target, &text))
|
&target, &text))
|
||||||
return;
|
return;
|
||||||
if (strcmp(target, "*") == 0)
|
if (strcmp(target, "*") == 0)
|
||||||
target = item == NULL ? "" : item->name;
|
target = item == NULL ? "" : window_item_get_target(item);
|
||||||
if (*target == '\0' || *text == '\0')
|
if (*target == '\0' || *text == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
@ -174,7 +176,7 @@ static void cmd_wall(const char *data, IRC_SERVER_REC *server,
|
|||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
IRC_CHANNEL_REC *chanrec;
|
IRC_CHANNEL_REC *chanrec;
|
||||||
char *channame, *msg;
|
const char *channame, *msg;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -187,7 +189,8 @@ static void cmd_wall(const char *data, IRC_SERVER_REC *server,
|
|||||||
chanrec = irc_channel_find(server, channame);
|
chanrec = irc_channel_find(server, channame);
|
||||||
if (chanrec == NULL) cmd_param_error(CMDERR_CHAN_NOT_FOUND);
|
if (chanrec == NULL) cmd_param_error(CMDERR_CHAN_NOT_FOUND);
|
||||||
|
|
||||||
signal_emit("message irc own_wall", 3, server, msg, chanrec->name);
|
signal_emit("message irc own_wall", 3, server, msg,
|
||||||
|
chanrec->visible_name);
|
||||||
|
|
||||||
cmd_params_free(free_arg);
|
cmd_params_free(free_arg);
|
||||||
}
|
}
|
||||||
@ -234,8 +237,9 @@ static void bans_show_channel(IRC_CHANNEL_REC *channel, IRC_SERVER_REC *server)
|
|||||||
cmd_return_error(CMDERR_CHAN_NOT_SYNCED);
|
cmd_return_error(CMDERR_CHAN_NOT_SYNCED);
|
||||||
|
|
||||||
if (channel->banlist == NULL) {
|
if (channel->banlist == NULL) {
|
||||||
printformat(server, channel->name, MSGLEVEL_CLIENTNOTICE,
|
printformat(server, channel->visible_name,
|
||||||
IRCTXT_NO_BANS, channel->name);
|
MSGLEVEL_CLIENTNOTICE,
|
||||||
|
IRCTXT_NO_BANS, channel->visible_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,10 +248,11 @@ static void bans_show_channel(IRC_CHANNEL_REC *channel, IRC_SERVER_REC *server)
|
|||||||
for (tmp = channel->banlist; tmp != NULL; tmp = tmp->next) {
|
for (tmp = channel->banlist; tmp != NULL; tmp = tmp->next) {
|
||||||
BAN_REC *rec = tmp->data;
|
BAN_REC *rec = tmp->data;
|
||||||
|
|
||||||
printformat(server, channel->name, MSGLEVEL_CRAP,
|
printformat(server, channel->visible_name, MSGLEVEL_CRAP,
|
||||||
(rec->setby == NULL || *rec->setby == '\0') ?
|
(rec->setby == NULL || *rec->setby == '\0') ?
|
||||||
IRCTXT_BANLIST : IRCTXT_BANLIST_LONG,
|
IRCTXT_BANLIST : IRCTXT_BANLIST_LONG,
|
||||||
counter, channel->name, rec->ban, rec->setby,
|
counter, channel->visible_name,
|
||||||
|
rec->ban, rec->setby,
|
||||||
(int) (time(NULL)-rec->time));
|
(int) (time(NULL)-rec->time));
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
@ -306,7 +311,8 @@ static void cmd_ver(gchar *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
if (*data == '\0' && !IS_IRC_ITEM(item))
|
if (*data == '\0' && !IS_IRC_ITEM(item))
|
||||||
cmd_return_error(CMDERR_NOT_JOINED);
|
cmd_return_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
str = g_strdup_printf("%s VERSION", *data == '\0' ? item->name : data);
|
str = g_strdup_printf("%s VERSION", *data == '\0' ?
|
||||||
|
window_item_get_target(item) : data);
|
||||||
signal_emit("command ctcp", 3, str, server, item);
|
signal_emit("command ctcp", 3, str, server, item);
|
||||||
g_free(str);
|
g_free(str);
|
||||||
}
|
}
|
||||||
@ -321,9 +327,9 @@ static void cmd_topic(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
channel = *data != '\0' ? channel_find(server, data) : CHANNEL(item);
|
channel = *data != '\0' ? channel_find(server, data) : CHANNEL(item);
|
||||||
if (channel == NULL) return;
|
if (channel == NULL) return;
|
||||||
|
|
||||||
printformat(server, channel->name, MSGLEVEL_CRAP,
|
printformat(server, channel->visible_name, MSGLEVEL_CRAP,
|
||||||
channel->topic == NULL ? IRCTXT_NO_TOPIC : IRCTXT_TOPIC,
|
channel->topic == NULL ? IRCTXT_NO_TOPIC : IRCTXT_TOPIC,
|
||||||
channel->name, channel->topic);
|
channel->visible_name, channel->topic);
|
||||||
|
|
||||||
if (channel->topic_time > 0) {
|
if (channel->topic_time > 0) {
|
||||||
byhost = strchr(channel->topic_by, '!');
|
byhost = strchr(channel->topic_by, '!');
|
||||||
@ -337,7 +343,7 @@ static void cmd_topic(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
}
|
}
|
||||||
|
|
||||||
timestr = my_asctime(channel->topic_time);
|
timestr = my_asctime(channel->topic_time);
|
||||||
printformat(server, channel->name, MSGLEVEL_CRAP,
|
printformat(server, channel->visible_name, MSGLEVEL_CRAP,
|
||||||
IRCTXT_TOPIC_INFO, bynick, timestr, byhost);
|
IRCTXT_TOPIC_INFO, bynick, timestr, byhost);
|
||||||
g_free(timestr);
|
g_free(timestr);
|
||||||
g_free(bynick);
|
g_free(bynick);
|
||||||
@ -356,7 +362,8 @@ static void cmd_ts(const char *data)
|
|||||||
CHANNEL_REC *rec = tmp->data;
|
CHANNEL_REC *rec = tmp->data;
|
||||||
|
|
||||||
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_TOPIC,
|
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_TOPIC,
|
||||||
rec->name, rec->topic == NULL ? "" : rec->topic);
|
rec->visible_name,
|
||||||
|
rec->topic == NULL ? "" : rec->topic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,7 +430,7 @@ static void cmd_sethost(const char *data, IRC_SERVER_REC *server)
|
|||||||
CHANNEL_REC *channel = tmp->data;
|
CHANNEL_REC *channel = tmp->data;
|
||||||
|
|
||||||
window_bind_add(window_item_window(channel),
|
window_bind_add(window_item_window(channel),
|
||||||
server->tag, channel->name);
|
server->tag, channel->visible_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
irc_send_cmdv(server, "SETHOST %s", data);
|
irc_send_cmdv(server, "SETHOST %s", data);
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
/*
|
|
||||||
fe-irc-layout.c : irssi
|
|
||||||
|
|
||||||
Copyright (C) 2000-2002 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 "signals.h"
|
|
||||||
#include "settings.h"
|
|
||||||
#include "lib-config/iconfig.h"
|
|
||||||
|
|
||||||
#include "irc-servers.h"
|
|
||||||
#include "irc-channels.h"
|
|
||||||
|
|
||||||
#include "fe-windows.h"
|
|
||||||
|
|
||||||
static void sig_layout_save_item(WINDOW_REC *window, WI_ITEM_REC *item,
|
|
||||||
CONFIG_NODE *node)
|
|
||||||
{
|
|
||||||
CONFIG_NODE *subnode;
|
|
||||||
IRC_CHANNEL_REC *channel;
|
|
||||||
char *name;
|
|
||||||
|
|
||||||
channel = IRC_CHANNEL(item);
|
|
||||||
if (channel == NULL || *channel->name != '!')
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* save !ABCDEchannels using just short name */
|
|
||||||
subnode = config_node_section(node, NULL, NODE_TYPE_BLOCK);
|
|
||||||
|
|
||||||
name = g_strconcat("!", channel->name+6, NULL);
|
|
||||||
iconfig_node_set_str(subnode, "type", "CHANNEL");
|
|
||||||
iconfig_node_set_str(subnode, "chat_type", "IRC");
|
|
||||||
iconfig_node_set_str(subnode, "name", name);
|
|
||||||
iconfig_node_set_str(subnode, "tag", channel->server->tag);
|
|
||||||
g_free(name);
|
|
||||||
|
|
||||||
signal_stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
void fe_irc_layout_init(void)
|
|
||||||
{
|
|
||||||
signal_add("layout save item", (SIGNAL_FUNC) sig_layout_save_item);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fe_irc_layout_deinit(void)
|
|
||||||
{
|
|
||||||
signal_remove("layout save item", (SIGNAL_FUNC) sig_layout_save_item);
|
|
||||||
}
|
|
@ -29,12 +29,27 @@
|
|||||||
#include "levels.h"
|
#include "levels.h"
|
||||||
#include "irc-chatnets.h"
|
#include "irc-chatnets.h"
|
||||||
#include "irc-servers.h"
|
#include "irc-servers.h"
|
||||||
|
#include "irc-channels.h"
|
||||||
#include "servers-reconnect.h"
|
#include "servers-reconnect.h"
|
||||||
#include "irc-servers-setup.h"
|
#include "irc-servers-setup.h"
|
||||||
|
|
||||||
#include "fe-windows.h"
|
#include "fe-windows.h"
|
||||||
#include "printtext.h"
|
#include "printtext.h"
|
||||||
|
|
||||||
|
const char *get_visible_target(IRC_SERVER_REC *server, const char *target)
|
||||||
|
{
|
||||||
|
IRC_CHANNEL_REC *channel;
|
||||||
|
|
||||||
|
if (*target == '!') {
|
||||||
|
/* visible_name of !channels is different - don't bother
|
||||||
|
checking other types for now, they'll just slow up */
|
||||||
|
channel = irc_channel_find(server, target);
|
||||||
|
if (channel != NULL)
|
||||||
|
return channel->visible_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return target;
|
||||||
|
}
|
||||||
/* SYNTAX: SERVER ADD [-4 | -6] [-auto | -noauto] [-ircnet <ircnet>]
|
/* SYNTAX: SERVER ADD [-4 | -6] [-auto | -noauto] [-ircnet <ircnet>]
|
||||||
[-host <hostname>] [-cmdspeed <ms>] [-cmdmax <count>]
|
[-host <hostname>] [-cmdspeed <ms>] [-cmdmax <count>]
|
||||||
[-port <port>] <address> [<port> [<password>]] */
|
[-port <port>] <address> [<port> [<password>]] */
|
||||||
|
9
src/fe-common/irc/fe-irc-server.h
Normal file
9
src/fe-common/irc/fe-irc-server.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __FE_IRC_SERVER_H
|
||||||
|
#define __FE_IRC_SERVER_H
|
||||||
|
|
||||||
|
const char *get_visible_target(IRC_SERVER_REC *server, const char *target);
|
||||||
|
|
||||||
|
void fe_irc_server_init(void);
|
||||||
|
void fe_irc_server_deinit(void);
|
||||||
|
|
||||||
|
#endif
|
@ -84,9 +84,9 @@ static void print_mode(MODE_REC *rec)
|
|||||||
tmp = modes; modes = NULL;
|
tmp = modes; modes = NULL;
|
||||||
|
|
||||||
nicks = gslist_to_string(rec->nicks, ", ");
|
nicks = gslist_to_string(rec->nicks, ", ");
|
||||||
printformat(rec->channel->server, rec->channel->name, MSGLEVEL_MODES,
|
printformat(rec->channel->server, rec->channel->visible_name,
|
||||||
IRCTXT_CHANMODE_CHANGE,
|
MSGLEVEL_MODES, IRCTXT_CHANMODE_CHANGE,
|
||||||
rec->channel->name, rec->mode, nicks, "");
|
rec->channel->visible_name, rec->mode, nicks, "");
|
||||||
g_free(nicks);
|
g_free(nicks);
|
||||||
|
|
||||||
modes = tmp;
|
modes = tmp;
|
||||||
|
@ -254,7 +254,7 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic
|
|||||||
chanrec = channel_find_unjoined(server, channel);
|
chanrec = channel_find_unjoined(server, channel);
|
||||||
if (chanrec == NULL) {
|
if (chanrec == NULL) {
|
||||||
/* didn't get here with /join command.. */
|
/* didn't get here with /join command.. */
|
||||||
chanrec = irc_channel_create(server, channel, TRUE);
|
chanrec = irc_channel_create(server, channel, NULL, TRUE);
|
||||||
}
|
}
|
||||||
chanrec->joined = TRUE;
|
chanrec->joined = TRUE;
|
||||||
if (strcmp(chanrec->name, channel) != 0) {
|
if (strcmp(chanrec->name, channel) != 0) {
|
||||||
|
@ -44,21 +44,37 @@ void irc_channels_setup_deinit(void);
|
|||||||
void massjoin_init(void);
|
void massjoin_init(void);
|
||||||
void massjoin_deinit(void);
|
void massjoin_deinit(void);
|
||||||
|
|
||||||
IRC_CHANNEL_REC *irc_channel_create(IRC_SERVER_REC *server,
|
IRC_CHANNEL_REC *irc_channel_create(IRC_SERVER_REC *server, const char *name,
|
||||||
const char *name, int automatic)
|
const char *visible_name, int automatic)
|
||||||
{
|
{
|
||||||
IRC_CHANNEL_REC *rec;
|
IRC_CHANNEL_REC *rec;
|
||||||
|
char *new_name;
|
||||||
|
|
||||||
g_return_val_if_fail(server == NULL || IS_IRC_SERVER(server), NULL);
|
g_return_val_if_fail(server == NULL || IS_IRC_SERVER(server), NULL);
|
||||||
g_return_val_if_fail(name != NULL, NULL);
|
g_return_val_if_fail(name != NULL, NULL);
|
||||||
|
|
||||||
rec = g_new0(IRC_CHANNEL_REC, 1);
|
rec = g_new0(IRC_CHANNEL_REC, 1);
|
||||||
rec->chat_type = IRC_PROTOCOL;
|
|
||||||
rec->name = g_strdup(name);
|
|
||||||
rec->server = server;
|
|
||||||
if (*name == '+') rec->no_modes = TRUE;
|
if (*name == '+') rec->no_modes = TRUE;
|
||||||
|
|
||||||
channel_init((CHANNEL_REC *) rec, automatic);
|
new_name = NULL;
|
||||||
|
if (visible_name == NULL) {
|
||||||
|
/* !?????channel -> !channel */
|
||||||
|
new_name = *name == '!' && strlen(name) >= 1+5 ?
|
||||||
|
g_strconcat("!", name+1+5, NULL) :
|
||||||
|
g_strdup(name);
|
||||||
|
|
||||||
|
if (irc_channel_find(server, new_name) != NULL) {
|
||||||
|
/* this was second !channel with same name,
|
||||||
|
show the channel id after all */
|
||||||
|
g_free_and_null(new_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
visible_name = new_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
channel_init((CHANNEL_REC *) rec, (SERVER_REC *) server,
|
||||||
|
name, visible_name, automatic);
|
||||||
|
g_free(new_name);
|
||||||
return rec;
|
return rec;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +128,7 @@ static void irc_channels_join(IRC_SERVER_REC *server, const char *data,
|
|||||||
g_string_sprintfa(outkeys, "%s,", get_join_key(key));
|
g_string_sprintfa(outkeys, "%s,", get_join_key(key));
|
||||||
channame = channel + (channel[0] == '!' &&
|
channame = channel + (channel[0] == '!' &&
|
||||||
channel[1] == '!');
|
channel[1] == '!');
|
||||||
chanrec = irc_channel_create(server, channame,
|
chanrec = irc_channel_create(server, channame, NULL,
|
||||||
automatic);
|
automatic);
|
||||||
if (key != NULL) chanrec->key = g_strdup(key);
|
if (key != NULL) chanrec->key = g_strdup(key);
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,8 @@ void irc_channels_init(void);
|
|||||||
void irc_channels_deinit(void);
|
void irc_channels_deinit(void);
|
||||||
|
|
||||||
/* Create new IRC channel record */
|
/* Create new IRC channel record */
|
||||||
IRC_CHANNEL_REC *irc_channel_create(IRC_SERVER_REC *server,
|
IRC_CHANNEL_REC *irc_channel_create(IRC_SERVER_REC *server, const char *name,
|
||||||
const char *name, int automatic);
|
const char *visible_name, int automatic);
|
||||||
|
|
||||||
#define irc_channel_find(server, name) \
|
#define irc_channel_find(server, name) \
|
||||||
IRC_CHANNEL(channel_find(SERVER(server), name))
|
IRC_CHANNEL(channel_find(SERVER(server), name))
|
||||||
|
@ -62,7 +62,7 @@ static int knockout_tag;
|
|||||||
static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
char *target, *msg;
|
const char *target, *msg;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -71,7 +71,7 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
|||||||
&target, &msg))
|
&target, &msg))
|
||||||
return;
|
return;
|
||||||
if (strcmp(target, "*") == 0)
|
if (strcmp(target, "*") == 0)
|
||||||
target = item == NULL ? NULL : item->name;
|
target = item == NULL ? NULL : window_item_get_target(item);
|
||||||
if (*target == '\0' || *msg == '\0')
|
if (*target == '\0' || *msg == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
@ -85,7 +85,8 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
|||||||
static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
char *target, *ctcpcmd, *ctcpdata;
|
const char *target;
|
||||||
|
char *ctcpcmd, *ctcpdata;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -94,7 +95,7 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
&target, &ctcpcmd, &ctcpdata))
|
&target, &ctcpcmd, &ctcpdata))
|
||||||
return;
|
return;
|
||||||
if (strcmp(target, "*") == 0)
|
if (strcmp(target, "*") == 0)
|
||||||
target = item == NULL ? NULL : item->name;
|
target = item == NULL ? NULL : window_item_get_target(item);
|
||||||
if (*target == '\0' || *ctcpcmd == '\0')
|
if (*target == '\0' || *ctcpcmd == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
@ -112,7 +113,8 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
||||||
WI_ITEM_REC *item)
|
WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
char *target, *ctcpcmd, *ctcpdata;
|
const char *target;
|
||||||
|
char *ctcpcmd, *ctcpdata;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
CMD_IRC_SERVER(server);
|
CMD_IRC_SERVER(server);
|
||||||
@ -121,7 +123,7 @@ static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
&target, &ctcpcmd, &ctcpdata))
|
&target, &ctcpcmd, &ctcpdata))
|
||||||
return;
|
return;
|
||||||
if (strcmp(target, "*") == 0)
|
if (strcmp(target, "*") == 0)
|
||||||
target = item == NULL ? NULL : item->name;
|
target = item == NULL ? NULL : window_item_get_target(item);
|
||||||
if (*target == '\0' || *ctcpcmd == '\0')
|
if (*target == '\0' || *ctcpcmd == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
@ -216,7 +218,7 @@ static void cmd_invite(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *it
|
|||||||
if (!IS_IRC_CHANNEL(item))
|
if (!IS_IRC_CHANNEL(item))
|
||||||
cmd_param_error(CMDERR_NOT_JOINED);
|
cmd_param_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
channame = item->name;
|
channame = IRC_CHANNEL(item)->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
irc_send_cmdv(server, "INVITE %s %s", nick, channame);
|
irc_send_cmdv(server, "INVITE %s %s", nick, channame);
|
||||||
@ -262,7 +264,7 @@ static void cmd_who(const char *data, IRC_SERVER_REC *server,
|
|||||||
if (!IS_IRC_CHANNEL(item))
|
if (!IS_IRC_CHANNEL(item))
|
||||||
cmd_param_error(CMDERR_NOT_JOINED);
|
cmd_param_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
channel = item->name;
|
channel = IRC_CHANNEL(item)->name;
|
||||||
}
|
}
|
||||||
if (strcmp(channel, "**") == 0) {
|
if (strcmp(channel, "**") == 0) {
|
||||||
/* ** displays all nicks.. */
|
/* ** displays all nicks.. */
|
||||||
@ -291,7 +293,7 @@ static void cmd_names(const char *data, IRC_SERVER_REC *server,
|
|||||||
if (!IS_IRC_CHANNEL(item))
|
if (!IS_IRC_CHANNEL(item))
|
||||||
cmd_param_error(CMDERR_NOT_JOINED);
|
cmd_param_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
channel = item->name;
|
channel = IRC_CHANNEL(item)->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(channel, "**") == 0) {
|
if (strcmp(channel, "**") == 0) {
|
||||||
@ -480,7 +482,7 @@ static void cmd_ping(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
|
|||||||
if (!IS_IRC_ITEM(item))
|
if (!IS_IRC_ITEM(item))
|
||||||
cmd_return_error(CMDERR_NOT_JOINED);
|
cmd_return_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
data = item->name;
|
data = window_item_get_target(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_get_current_time(&tv);
|
g_get_current_time(&tv);
|
||||||
|
@ -94,7 +94,8 @@ void irc_core_init(void)
|
|||||||
rec->server_connect = (SERVER_REC *(*) (SERVER_CONNECT_REC *))
|
rec->server_connect = (SERVER_REC *(*) (SERVER_CONNECT_REC *))
|
||||||
irc_server_connect;
|
irc_server_connect;
|
||||||
rec->channel_create =
|
rec->channel_create =
|
||||||
(CHANNEL_REC *(*) (SERVER_REC *, const char *, int))
|
(CHANNEL_REC *(*) (SERVER_REC *, const char *,
|
||||||
|
const char *, int))
|
||||||
irc_channel_create;
|
irc_channel_create;
|
||||||
rec->query_create =
|
rec->query_create =
|
||||||
(QUERY_REC *(*) (const char *, const char *, int))
|
(QUERY_REC *(*) (const char *, const char *, int))
|
||||||
|
@ -490,8 +490,9 @@ void channel_set_singlemode(IRC_CHANNEL_REC *channel, const char *nicks,
|
|||||||
void channel_set_mode(IRC_SERVER_REC *server, const char *channel,
|
void channel_set_mode(IRC_SERVER_REC *server, const char *channel,
|
||||||
const char *mode)
|
const char *mode)
|
||||||
{
|
{
|
||||||
char *modestr, *curmode, *orig, type, prevtype;
|
IRC_CHANNEL_REC *chanrec;
|
||||||
GString *tmode, *targs;
|
GString *tmode, *targs;
|
||||||
|
char *modestr, *curmode, *orig, type, prevtype;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
g_return_if_fail(IS_IRC_SERVER(server));
|
g_return_if_fail(IS_IRC_SERVER(server));
|
||||||
@ -501,6 +502,10 @@ void channel_set_mode(IRC_SERVER_REC *server, const char *channel,
|
|||||||
targs = g_string_new(NULL);
|
targs = g_string_new(NULL);
|
||||||
count = 0;
|
count = 0;
|
||||||
|
|
||||||
|
chanrec = irc_channel_find(server, channel);
|
||||||
|
if (chanrec != NULL)
|
||||||
|
channel = chanrec->name;
|
||||||
|
|
||||||
orig = modestr = g_strdup(mode);
|
orig = modestr = g_strdup(mode);
|
||||||
|
|
||||||
type = '+'; prevtype = '\0';
|
type = '+'; prevtype = '\0';
|
||||||
|
@ -131,7 +131,7 @@ static NETSPLIT_REC *netsplit_add(IRC_SERVER_REC *server, const char *nick,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
splitchan = g_new0(NETSPLIT_CHAN_REC, 1);
|
splitchan = g_new0(NETSPLIT_CHAN_REC, 1);
|
||||||
splitchan->name = g_strdup(channel->name);
|
splitchan->name = g_strdup(channel->visible_name);
|
||||||
splitchan->op = nickrec->op;
|
splitchan->op = nickrec->op;
|
||||||
splitchan->halfop = nickrec->halfop;
|
splitchan->halfop = nickrec->halfop;
|
||||||
splitchan->voice = nickrec->voice;
|
splitchan->voice = nickrec->voice;
|
||||||
|
@ -42,14 +42,6 @@ channels_join(server, channels, automatic)
|
|||||||
CODE:
|
CODE:
|
||||||
server->channels_join(server, channels, automatic);
|
server->channels_join(server, channels, automatic);
|
||||||
|
|
||||||
Irssi::Channel
|
|
||||||
channel_create(server, name, automatic)
|
|
||||||
Irssi::Server server
|
|
||||||
char *name
|
|
||||||
int automatic
|
|
||||||
CODE:
|
|
||||||
CHAT_PROTOCOL(server)->channel_create(server, name, automatic);
|
|
||||||
|
|
||||||
Irssi::Channel
|
Irssi::Channel
|
||||||
channel_find(server, name)
|
channel_find(server, name)
|
||||||
Irssi::Server server
|
Irssi::Server server
|
||||||
|
@ -61,11 +61,3 @@ CODE:
|
|||||||
RETVAL = irc_nicklist_insert(channel, nick, op, halfop, voice, send_massjoin);
|
RETVAL = irc_nicklist_insert(channel, nick, op, halfop, voice, send_massjoin);
|
||||||
OUTPUT:
|
OUTPUT:
|
||||||
RETVAL
|
RETVAL
|
||||||
|
|
||||||
MODULE = Irssi::Irc::Channel PACKAGE = Irssi::Irc::Server PREFIX = irc_
|
|
||||||
|
|
||||||
Irssi::Irc::Channel
|
|
||||||
irc_channel_create(server, name, automatic)
|
|
||||||
Irssi::Irc::Server server
|
|
||||||
char *name
|
|
||||||
int automatic
|
|
||||||
|
@ -326,7 +326,7 @@ void perl_window_item_fill_hash(HV *hv, WI_ITEM_REC *item)
|
|||||||
if (item->server != NULL) {
|
if (item->server != NULL) {
|
||||||
hv_store(hv, "server", 6, iobject_bless(item->server), 0);
|
hv_store(hv, "server", 6, iobject_bless(item->server), 0);
|
||||||
}
|
}
|
||||||
hv_store(hv, "name", 4, new_pv(item->name), 0);
|
hv_store(hv, "visible_name", 12, new_pv(item->visible_name), 0);
|
||||||
|
|
||||||
hv_store(hv, "createtime", 10, newSViv(item->createtime), 0);
|
hv_store(hv, "createtime", 10, newSViv(item->createtime), 0);
|
||||||
hv_store(hv, "data_level", 10, newSViv(item->data_level), 0);
|
hv_store(hv, "data_level", 10, newSViv(item->data_level), 0);
|
||||||
@ -343,6 +343,7 @@ void perl_channel_fill_hash(HV *hv, CHANNEL_REC *channel)
|
|||||||
if (channel->ownnick != NULL)
|
if (channel->ownnick != NULL)
|
||||||
hv_store(hv, "ownnick", 7, iobject_bless(channel->ownnick), 0);
|
hv_store(hv, "ownnick", 7, iobject_bless(channel->ownnick), 0);
|
||||||
|
|
||||||
|
hv_store(hv, "name", 4, new_pv(channel->name), 0);
|
||||||
hv_store(hv, "topic", 5, new_pv(channel->topic), 0);
|
hv_store(hv, "topic", 5, new_pv(channel->topic), 0);
|
||||||
hv_store(hv, "topic_by", 8, new_pv(channel->topic_by), 0);
|
hv_store(hv, "topic_by", 8, new_pv(channel->topic_by), 0);
|
||||||
hv_store(hv, "topic_time", 10, newSViv(channel->topic_time), 0);
|
hv_store(hv, "topic_time", 10, newSViv(channel->topic_time), 0);
|
||||||
@ -369,6 +370,7 @@ void perl_query_fill_hash(HV *hv, QUERY_REC *query)
|
|||||||
|
|
||||||
perl_window_item_fill_hash(hv, (WI_ITEM_REC *) query);
|
perl_window_item_fill_hash(hv, (WI_ITEM_REC *) query);
|
||||||
|
|
||||||
|
hv_store(hv, "name", 4, new_pv(query->name), 0);
|
||||||
hv_store(hv, "last_unread_msg", 15, newSViv(query->last_unread_msg), 0);
|
hv_store(hv, "last_unread_msg", 15, newSViv(query->last_unread_msg), 0);
|
||||||
hv_store(hv, "address", 7, new_pv(query->address), 0);
|
hv_store(hv, "address", 7, new_pv(query->address), 0);
|
||||||
hv_store(hv, "server_tag", 10, new_pv(query->server_tag), 0);
|
hv_store(hv, "server_tag", 10, new_pv(query->server_tag), 0);
|
||||||
|
@ -195,7 +195,7 @@ PREINIT:
|
|||||||
char *arglist[MAX_FORMAT_PARAMS+1];
|
char *arglist[MAX_FORMAT_PARAMS+1];
|
||||||
int n;
|
int n;
|
||||||
CODE:
|
CODE:
|
||||||
format_create_dest(&dest, item->server, item->name, level, NULL);
|
format_create_dest(&dest, item->server, item->visible_name, level, NULL);
|
||||||
memset(arglist, 0, sizeof(arglist));
|
memset(arglist, 0, sizeof(arglist));
|
||||||
for (n = 3; n < items && n < MAX_FORMAT_PARAMS+3; n++) {
|
for (n = 3; n < items && n < MAX_FORMAT_PARAMS+3; n++) {
|
||||||
arglist[n-3] = SvPV(ST(n), PL_na);
|
arglist[n-3] = SvPV(ST(n), PL_na);
|
||||||
|
@ -225,6 +225,10 @@ window_activity(window, data_level, hilight_color=NULL)
|
|||||||
char *
|
char *
|
||||||
window_get_active_name(window)
|
window_get_active_name(window)
|
||||||
Irssi::UI::Window window
|
Irssi::UI::Window window
|
||||||
|
CODE:
|
||||||
|
RETVAL = (char *) window_get_active_name(window);
|
||||||
|
OUTPUT:
|
||||||
|
RETVAL
|
||||||
|
|
||||||
Irssi::Windowitem
|
Irssi::Windowitem
|
||||||
window_item_find(window, server, name)
|
window_item_find(window, server, name)
|
||||||
@ -246,7 +250,7 @@ print(item, str, level=MSGLEVEL_CLIENTNOTICE)
|
|||||||
int level
|
int level
|
||||||
char *str
|
char *str
|
||||||
CODE:
|
CODE:
|
||||||
printtext_string(item->server, item->name, level, str);
|
printtext_string(item->server, item->visible_name, level, str);
|
||||||
|
|
||||||
Irssi::UI::Window
|
Irssi::UI::Window
|
||||||
window_create(item, automatic)
|
window_create(item, automatic)
|
||||||
|
Loading…
Reference in New Issue
Block a user