summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLemonBoy <LemonBoy@users.noreply.github.com>2017-10-18 12:00:56 +0200
committerGitHub <noreply@github.com>2017-10-18 12:00:56 +0200
commit28d0b8c74602db0474c78ccbe17ae1ba03fcf665 (patch)
treef906691e6a29d39760cb6005c67272194f097da6
parent7b97edf9d1de8c270e4482c85d142303e07525c9 (diff)
parent7b94015f8f3a7f9f9348a57243632a98cb5e2a56 (diff)
downloadirssi-28d0b8c74602db0474c78ccbe17ae1ba03fcf665.zip
Merge pull request #771 from paultownsend/issue-120
Add alternate_nick as a network-specific property
-rw-r--r--docs/help/in/network.in1
-rw-r--r--src/fe-common/irc/fe-ircnet.c11
-rw-r--r--src/irc/core/irc-chatnets.c7
-rw-r--r--src/irc/core/irc-chatnets.h1
-rw-r--r--src/irc/core/irc-servers-setup.c5
5 files changed, 21 insertions, 4 deletions
diff --git a/docs/help/in/network.in b/docs/help/in/network.in
index 4c2eeed4..fbdaa0b4 100644
--- a/docs/help/in/network.in
+++ b/docs/help/in/network.in
@@ -11,6 +11,7 @@
REMOVE: Removes a network from your configuration.
-nick: Specifies the nickname to use.
+ -alternate_nick Specifies the alternate nickname to use.
-user: Specifies the user identity to use.
-realname: Specifies the real name to use.
-host: Specifies the hostname to use.
diff --git a/src/fe-common/irc/fe-ircnet.c b/src/fe-common/irc/fe-ircnet.c
index 24dad63f..8f1d2efd 100644
--- a/src/fe-common/irc/fe-ircnet.c
+++ b/src/fe-common/irc/fe-ircnet.c
@@ -48,6 +48,8 @@ static void cmd_network_list(void)
g_string_truncate(str, 0);
if (rec->nick != NULL)
g_string_append_printf(str, "nick: %s, ", rec->nick);
+ if (rec->alternate_nick != NULL)
+ g_string_append_printf(str, "alternate_nick: %s, ", rec->alternate_nick);
if (rec->username != NULL)
g_string_append_printf(str, "username: %s, ", rec->username);
if (rec->realname != NULL)
@@ -114,6 +116,7 @@ static void cmd_network_add_modify(const char *data, gboolean add)
rec->name = g_strdup(name);
} else {
if (g_hash_table_lookup(optlist, "nick")) g_free_and_null(rec->nick);
+ if (g_hash_table_lookup(optlist, "alternate_nick")) g_free_and_null(rec->alternate_nick);
if (g_hash_table_lookup(optlist, "user")) g_free_and_null(rec->username);
if (g_hash_table_lookup(optlist, "realname")) g_free_and_null(rec->realname);
if (g_hash_table_lookup(optlist, "host")) {
@@ -145,6 +148,8 @@ static void cmd_network_add_modify(const char *data, gboolean add)
value = g_hash_table_lookup(optlist, "nick");
if (value != NULL && *value != '\0') rec->nick = g_strdup(value);
+ value = g_hash_table_lookup(optlist, "alternate_nick");
+ if (value != NULL && *value != '\0') rec->alternate_nick = g_strdup(value);
value = g_hash_table_lookup(optlist, "user");
if (value != NULL && *value != '\0') rec->username = g_strdup(value);
value = g_hash_table_lookup(optlist, "realname");
@@ -175,7 +180,7 @@ static void cmd_network_add_modify(const char *data, gboolean add)
cmd_params_free(free_arg);
}
-/* SYNTAX: NETWORK ADD|MODIFY [-nick <nick>] [-user <user>] [-realname <name>]
+/* SYNTAX: NETWORK ADD|MODIFY [-nick <nick>] [-alternate_nick <nick>] [-user <user>] [-realname <name>]
[-host <host>] [-usermode <mode>] [-autosendcmd <cmd>]
[-querychans <count>] [-whois <count>] [-msgs <count>]
[-kicks <count>] [-modes <count>] [-cmdspeed <ms>]
@@ -228,9 +233,9 @@ void fe_ircnet_init(void)
command_bind("network remove", NULL, (SIGNAL_FUNC) cmd_network_remove);
command_set_options("network add", "-kicks -msgs -modes -whois -cmdspeed "
- "-cmdmax -nick -user -realname -host -autosendcmd -querychans -usermode -sasl_mechanism -sasl_username -sasl_password");
+ "-cmdmax -nick -alternate_nick -user -realname -host -autosendcmd -querychans -usermode -sasl_mechanism -sasl_username -sasl_password");
command_set_options("network modify", "-kicks -msgs -modes -whois -cmdspeed "
- "-cmdmax -nick -user -realname -host -autosendcmd -querychans -usermode -sasl_mechanism -sasl_username -sasl_password");
+ "-cmdmax -nick -alternate_nick -user -realname -host -autosendcmd -querychans -usermode -sasl_mechanism -sasl_username -sasl_password");
}
void fe_ircnet_deinit(void)
diff --git a/src/irc/core/irc-chatnets.c b/src/irc/core/irc-chatnets.c
index 0796e0cb..98ce89c3 100644
--- a/src/irc/core/irc-chatnets.c
+++ b/src/irc/core/irc-chatnets.c
@@ -43,6 +43,9 @@ static void sig_chatnet_read(IRC_CHATNET_REC *rec, CONFIG_NODE *node)
value = config_node_get_str(node, "usermode", NULL);
rec->usermode = (value != NULL && *value != '\0') ? g_strdup(value) : NULL;
+ value = config_node_get_str(node, "alternate_nick", NULL);
+ rec->alternate_nick = (value != NULL && *value != '\0') ? g_strdup(value) : NULL;
+
rec->max_cmds_at_once = config_node_get_int(node, "cmdmax", 0);
rec->cmd_queue_speed = config_node_get_int(node, "cmdspeed", 0);
rec->max_query_chans = config_node_get_int(node, "max_query_chans", 0);
@@ -65,6 +68,9 @@ static void sig_chatnet_saved(IRC_CHATNET_REC *rec, CONFIG_NODE *node)
if (rec->usermode != NULL)
iconfig_node_set_str(node, "usermode", rec->usermode);
+ if (rec->alternate_nick != NULL)
+ iconfig_node_set_str(node, "alternate_nick", rec->alternate_nick);
+
if (rec->max_cmds_at_once > 0)
iconfig_node_set_int(node, "cmdmax", rec->max_cmds_at_once);
if (rec->cmd_queue_speed > 0)
@@ -93,6 +99,7 @@ static void sig_chatnet_destroyed(IRC_CHATNET_REC *rec)
{
if (IS_IRC_CHATNET(rec)) {
g_free(rec->usermode);
+ g_free(rec->alternate_nick);
g_free(rec->sasl_mechanism);
g_free(rec->sasl_username);
g_free(rec->sasl_password);
diff --git a/src/irc/core/irc-chatnets.h b/src/irc/core/irc-chatnets.h
index 2bb10fa9..3fd44472 100644
--- a/src/irc/core/irc-chatnets.h
+++ b/src/irc/core/irc-chatnets.h
@@ -18,6 +18,7 @@ struct _IRC_CHATNET_REC {
#include "chatnet-rec.h"
char *usermode;
+ char *alternate_nick;
char *sasl_mechanism;
char *sasl_username;
diff --git a/src/irc/core/irc-servers-setup.c b/src/irc/core/irc-servers-setup.c
index 6040d3a5..bae7d3b4 100644
--- a/src/irc/core/irc-servers-setup.c
+++ b/src/irc/core/irc-servers-setup.c
@@ -69,7 +69,10 @@ static void sig_server_setup_fill_chatnet(IRC_SERVER_CONNECT_REC *conn,
return;
g_return_if_fail(IS_IRCNET(ircnet));
- if (ircnet->nick != NULL) g_free_and_null(conn->alternate_nick);
+ if (ircnet->alternate_nick != NULL) {
+ g_free_and_null(conn->alternate_nick);
+ conn->alternate_nick = g_strdup(ircnet->alternate_nick);
+ }
if (ircnet->usermode != NULL) {
g_free_and_null(conn->usermode);
conn->usermode = g_strdup(ircnet->usermode);