aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2008-04-05 14:03:31 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2008-04-05 14:03:31 +0100
commit1195cecc99315c9c38e05c8dd0981792e7663583 (patch)
treed7c90c89b22b928fa8069e6a966d00821ec731f5
parentf35aee7fdfc66138d0525a0a7b9e02ccb1aaaec7 (diff)
Changed root nicknames are now saved. (Bug #378)
-rw-r--r--bitlbee.h2
-rw-r--r--doc/user-guide/commands.xml10
-rw-r--r--irc.c1
-rw-r--r--root_commands.c17
4 files changed, 30 insertions, 0 deletions
diff --git a/bitlbee.h b/bitlbee.h
index 420ab70a..60694a2a 100644
--- a/bitlbee.h
+++ b/bitlbee.h
@@ -159,6 +159,8 @@ void root_command_string( irc_t *irc, user_t *u, char *command, int flags );
void root_command( irc_t *irc, char *command[] );
gboolean bitlbee_shutdown( gpointer data, gint fd, b_input_condition cond );
+char *set_eval_root_nick( set_t *set, char *new_nick );
+
extern global_t global;
#endif
diff --git a/doc/user-guide/commands.xml b/doc/user-guide/commands.xml
index c45727b9..6d77f8cd 100644
--- a/doc/user-guide/commands.xml
+++ b/doc/user-guide/commands.xml
@@ -588,6 +588,16 @@
</description>
</bitlbee-setting>
+ <bitlbee-setting name="root_nick" type="string" scope="global">
+ <default>root</default>
+
+ <description>
+ <para>
+ Normally the "bot" that takes all your BitlBee commands is called "root". If you don't like this name, you can rename it to anything else using the <emphasis>rename</emphasis> command, or by changing this setting.
+ </para>
+ </description>
+ </bitlbee-setting>
+
<bitlbee-setting name="save_on_quit" type="boolean" scope="global">
<default>true</default>
diff --git a/irc.c b/irc.c
index c929d68b..a6220140 100644
--- a/irc.c
+++ b/irc.c
@@ -150,6 +150,7 @@ irc_t *irc_new( int fd )
set_add( &irc->set, "password", NULL, passchange, irc );
set_add( &irc->set, "private", "true", set_eval_bool, irc );
set_add( &irc->set, "query_order", "lifo", NULL, irc );
+ set_add( &irc->set, "root_nick", irc->mynick, set_eval_root_nick, irc );
set_add( &irc->set, "save_on_quit", "true", set_eval_bool, irc );
set_add( &irc->set, "simulate_netsplit", "true", set_eval_bool, irc );
set_add( &irc->set, "strip_html", "true", NULL, irc );
diff --git a/root_commands.c b/root_commands.c
index aec91455..4b27afe3 100644
--- a/root_commands.c
+++ b/root_commands.c
@@ -602,6 +602,9 @@ static void cmd_rename( irc_t *irc, char **cmd )
{
g_free( irc->mynick );
irc->mynick = g_strdup( cmd[2] );
+
+ if( strcmp( cmd[0], "set_rename" ) != 0 )
+ set_setstr( &irc->set, "root_nick", cmd[2] );
}
else if( u->send_handler == buddy_send_handler )
{
@@ -612,6 +615,20 @@ static void cmd_rename( irc_t *irc, char **cmd )
}
}
+char *set_eval_root_nick( set_t *set, char *new_nick )
+{
+ irc_t *irc = set->data;
+
+ if( strcmp( irc->mynick, new_nick ) != 0 )
+ {
+ char *cmd[] = { "set_rename", irc->mynick, new_nick, NULL };
+
+ cmd_rename( irc, cmd );
+ }
+
+ return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : NULL;
+}
+
static void cmd_remove( irc_t *irc, char **cmd )
{
user_t *u;