aboutsummaryrefslogtreecommitdiffstats
path: root/root_commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'root_commands.c')
-rw-r--r--root_commands.c159
1 files changed, 61 insertions, 98 deletions
diff --git a/root_commands.c b/root_commands.c
index d3b0c7d3..73670d3a 100644
--- a/root_commands.c
+++ b/root_commands.c
@@ -31,7 +31,7 @@
#include <string.h>
-void root_command_string( irc_t *irc, user_t *u, char *command, int flags )
+void root_command_string( irc_t *irc, char *command )
{
char *cmd[IRC_MAX_ARGS];
char *s;
@@ -160,7 +160,7 @@ static void cmd_identify( irc_t *irc, char **cmd )
irc_setpass( irc, cmd[1] );
irc->status |= USTATUS_IDENTIFIED;
irc_umode_set( irc, "+R", 1 );
- if( set_getbool( &irc->set, "auto_connect" ) )
+ if( set_getbool( &irc->b->set, "auto_connect" ) )
cmd_account( irc, account_on );
break;
case STORAGE_OTHER_ERROR:
@@ -200,7 +200,7 @@ static void cmd_drop( irc_t *irc, char **cmd )
{
storage_status_t status;
- status = storage_remove (irc->nick, cmd[1]);
+ status = storage_remove (irc->user->nick, cmd[1]);
switch (status) {
case STORAGE_NO_SUCH_USER:
irc_usermsg( irc, "That account does not exist" );
@@ -212,7 +212,7 @@ static void cmd_drop( irc_t *irc, char **cmd )
irc_setpass( irc, NULL );
irc->status &= ~USTATUS_IDENTIFIED;
irc_umode_set( irc, "-R", 1 );
- irc_usermsg( irc, "Account `%s' removed", irc->nick );
+ irc_usermsg( irc, "Account `%s' removed", irc->user->nick );
break;
default:
irc_usermsg( irc, "Error: `%d'", status );
@@ -220,6 +220,16 @@ static void cmd_drop( irc_t *irc, char **cmd )
}
}
+static void cmd_save( irc_t *irc, char **cmd )
+{
+ if( ( irc->status & USTATUS_IDENTIFIED ) == 0 )
+ irc_usermsg( irc, "Please create an account first" );
+ else if( storage_save( irc, NULL, TRUE ) == STORAGE_OK )
+ irc_usermsg( irc, "Configuration saved" );
+ else
+ irc_usermsg( irc, "Configuration could not be saved!" );
+}
+
struct cmd_account_del_data
{
account_t *a;
@@ -231,7 +241,7 @@ void cmd_account_del_yes( void *data )
struct cmd_account_del_data *cad = data;
account_t *a;
- for( a = cad->irc->accounts; a && a != cad->a; a = a->next );
+ for( a = cad->irc->b->accounts; a && a != cad->a; a = a->next );
if( a == NULL )
{
@@ -243,7 +253,7 @@ void cmd_account_del_yes( void *data )
}
else
{
- account_del( cad->irc, a );
+ account_del( cad->irc->b, a );
irc_usermsg( cad->irc, "Account deleted" );
}
g_free( data );
@@ -284,7 +294,7 @@ static int cmd_set_real( irc_t *irc, char **cmd, cmd_set_findhead findhead, cmd_
{
set_name = set_full;
- head = &irc->set;
+ head = &irc->b->set;
}
else
{
@@ -355,7 +365,7 @@ static set_t **cmd_account_set_findhead( irc_t *irc, char *id )
{
account_t *a;
- if( ( a = account_get( irc, id ) ) )
+ if( ( a = account_get( irc->b, id ) ) )
return &a->set;
else
return NULL;
@@ -403,7 +413,7 @@ static void cmd_account( irc_t *irc, char **cmd )
return;
}
- a = account_add( irc, prpl, cmd[3], cmd[4] );
+ a = account_add( irc->b, prpl, cmd[3], cmd[4] );
if( cmd[5] )
{
irc_usermsg( irc, "Warning: Passing a servername/other flags to `account add' "
@@ -417,7 +427,7 @@ static void cmd_account( irc_t *irc, char **cmd )
{
MIN_ARGS( 2 );
- if( !( a = account_get( irc, cmd[2] ) ) )
+ if( !( a = account_get( irc->b, cmd[2] ) ) )
{
irc_usermsg( irc, "Invalid account" );
}
@@ -439,7 +449,7 @@ static void cmd_account( irc_t *irc, char **cmd )
"to change your username/password, use the `account "
"set' command. Are you sure you want to delete this "
"account?", a->prpl->name, a->user );
- query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, cad );
+ //query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, cad );
g_free( msg );
}
}
@@ -450,7 +460,7 @@ static void cmd_account( irc_t *irc, char **cmd )
if( strchr( irc->umode, 'b' ) )
irc_usermsg( irc, "Account list:" );
- for( a = irc->accounts; a; a = a->next )
+ for( a = irc->b->accounts; a; a = a->next )
{
char *con;
@@ -473,7 +483,7 @@ static void cmd_account( irc_t *irc, char **cmd )
{
if( cmd[2] )
{
- if( ( a = account_get( irc, cmd[2] ) ) )
+ if( ( a = account_get( irc->b, cmd[2] ) ) )
{
if( a->ic )
{
@@ -482,7 +492,7 @@ static void cmd_account( irc_t *irc, char **cmd )
}
else
{
- account_on( irc, a );
+ account_on( irc->b, a );
}
}
else
@@ -493,12 +503,13 @@ static void cmd_account( irc_t *irc, char **cmd )
}
else
{
- if ( irc->accounts ) {
+ if ( irc->b->accounts )
+ {
irc_usermsg( irc, "Trying to get all accounts connected..." );
- for( a = irc->accounts; a; a = a->next )
+ for( a = irc->b->accounts; a; a = a->next )
if( !a->ic && a->auto_connect )
- account_on( irc, a );
+ account_on( irc->b, a );
}
else
{
@@ -512,19 +523,19 @@ static void cmd_account( irc_t *irc, char **cmd )
{
irc_usermsg( irc, "Deactivating all active (re)connections..." );
- for( a = irc->accounts; a; a = a->next )
+ for( a = irc->b->accounts; a; a = a->next )
{
if( a->ic )
- account_off( irc, a );
+ account_off( irc->b, a );
else if( a->reconnect )
cancel_auto_reconnect( a );
}
}
- else if( ( a = account_get( irc, cmd[2] ) ) )
+ else if( ( a = account_get( irc->b, cmd[2] ) ) )
{
if( a->ic )
{
- account_off( irc, a );
+ account_off( irc->b, a );
}
else if( a->reconnect )
{
@@ -555,6 +566,7 @@ static void cmd_account( irc_t *irc, char **cmd )
}
}
+#if 0
static void cmd_add( irc_t *irc, char **cmd )
{
account_t *a;
@@ -643,65 +655,55 @@ static void cmd_info( irc_t *irc, char **cmd )
ic->acc->prpl->get_info( ic, cmd[2] );
}
}
+#endif
static void cmd_rename( irc_t *irc, char **cmd )
{
- user_t *u;
+ irc_user_t *iu;
- if( g_strcasecmp( cmd[1], irc->nick ) == 0 )
- {
- irc_usermsg( irc, "Nick `%s' can't be changed", cmd[1] );
- }
- else if( g_strcasecmp( cmd[1], irc->channel ) == 0 )
+ iu = irc_user_by_name( irc, cmd[1] );
+
+ if( iu == NULL )
{
- if( strchr( CTYPES, cmd[2][0] ) && nick_ok( cmd[2] + 1 ) )
- {
- u = user_find( irc, irc->nick );
-
- irc_part( irc, u, irc->channel );
- g_free( irc->channel );
- irc->channel = g_strdup( cmd[2] );
- irc_join( irc, u, irc->channel );
-
- if( strcmp( cmd[0], "set_rename" ) != 0 )
- set_setstr( &irc->set, "control_channel", cmd[2] );
- }
+ irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] );
}
- else if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) )
+ else if( iu == irc->user )
{
- irc_usermsg( irc, "Nick `%s' already exists", cmd[2] );
+ irc_usermsg( irc, "Nick `%s' can't be changed", cmd[1] );
}
else if( !nick_ok( cmd[2] ) )
{
irc_usermsg( irc, "Nick `%s' is invalid", cmd[2] );
}
- else if( !( u = user_find( irc, cmd[1] ) ) )
+ else if( irc_user_by_name( irc, cmd[2] ) )
{
- irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] );
+ irc_usermsg( irc, "Nick `%s' already exists", cmd[2] );
}
else
{
- user_rename( irc, cmd[1], cmd[2] );
- irc_write( irc, ":%s!%s@%s NICK %s", cmd[1], u->user, u->host, cmd[2] );
- if( g_strcasecmp( cmd[1], irc->mynick ) == 0 )
+ if( !irc_user_set_nick( iu, cmd[2] ) )
+ {
+ irc_usermsg( irc, "Error while changing nick" );
+ return;
+ }
+
+ if( iu == irc->root )
{
- g_free( irc->mynick );
- irc->mynick = g_strdup( cmd[2] );
-
/* If we're called internally (user did "set root_nick"),
let's not go O(INF). :-) */
if( strcmp( cmd[0], "set_rename" ) != 0 )
- set_setstr( &irc->set, "root_nick", cmd[2] );
+ set_setstr( &irc->b->set, "root_nick", cmd[2] );
}
- else if( u->send_handler == buddy_send_handler )
+ else if( iu->bu )
{
- nick_set( u->ic->acc, u->handle, cmd[2] );
+ nick_set( iu->bu->ic->acc, iu->bu->handle, cmd[2] );
}
irc_usermsg( irc, "Nick successfully changed" );
}
}
+#if 0
char *set_eval_root_nick( set_t *set, char *new_nick )
{
irc_t *irc = set->data;
@@ -914,16 +916,6 @@ static void cmd_set( irc_t *irc, char **cmd )
cmd_set_real( irc, cmd, NULL, NULL );
}
-static void cmd_save( irc_t *irc, char **cmd )
-{
- if( ( irc->status & USTATUS_IDENTIFIED ) == 0 )
- irc_usermsg( irc, "Please create an account first" );
- else if( storage_save( irc, NULL, TRUE ) == STORAGE_OK )
- irc_usermsg( irc, "Configuration saved" );
- else
- irc_usermsg( irc, "Configuration could not be saved!" );
-}
-
static void cmd_blist( irc_t *irc, char **cmd )
{
int online = 0, away = 0, offline = 0;
@@ -989,34 +981,6 @@ static void cmd_blist( irc_t *irc, char **cmd )
irc_usermsg( irc, "%d buddies (%d available, %d away, %d offline)", n_online + n_away + n_offline, n_online, n_away, n_offline );
}
-static void cmd_nick( irc_t *irc, char **cmd )
-{
- account_t *a;
-
- if( !cmd[1] || !( a = account_get( irc, cmd[1] ) ) )
- {
- irc_usermsg( irc, "Invalid account");
- }
- else if( !( a->ic && ( a->ic->flags & OPT_LOGGED_IN ) ) )
- {
- irc_usermsg( irc, "That account is not on-line" );
- }
- else if ( !cmd[2] )
- {
- irc_usermsg( irc, "Your name is `%s'" , a->ic->displayname ? a->ic->displayname : "NULL" );
- }
- else if ( !a->prpl->set_my_name )
- {
- irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] );
- }
- else
- {
- irc_usermsg( irc, "Setting your name to `%s'", cmd[2] );
-
- a->prpl->set_my_name( a->ic, cmd[2] );
- }
-}
-
static void cmd_qlist( irc_t *irc, char **cmd )
{
query_t *q = irc->queries;
@@ -1037,12 +1001,6 @@ static void cmd_qlist( irc_t *irc, char **cmd )
irc_usermsg( irc, "%d, BitlBee: %s", num, q->question );
}
-static void cmd_join_chat( irc_t *irc, char **cmd )
-{
- irc_usermsg( irc, "This command is now obsolete. "
- "Please try the `chat' command instead." );
-}
-
static set_t **cmd_chat_set_findhead( irc_t *irc, char *id )
{
struct chat *c;
@@ -1216,20 +1174,24 @@ static void cmd_transfer( irc_t *irc, char **cmd )
}
}
}
+#endif
const command_t commands[] = {
{ "help", 0, cmd_help, 0 },
+ { "account", 1, cmd_account, 0 },
{ "identify", 1, cmd_identify, 0 },
{ "register", 1, cmd_register, 0 },
{ "drop", 1, cmd_drop, 0 },
- { "account", 1, cmd_account, 0 },
+ { "save", 0, cmd_save, 0 },
+#if 0
{ "add", 2, cmd_add, 0 },
{ "info", 1, cmd_info, 0 },
+#endif
{ "rename", 2, cmd_rename, 0 },
+#if 0
{ "remove", 1, cmd_remove, 0 },
{ "block", 1, cmd_block, 0 },
{ "allow", 1, cmd_allow, 0 },
- { "save", 0, cmd_save, 0 },
{ "set", 0, cmd_set, 0 },
{ "yes", 0, cmd_yesno, 0 },
{ "no", 0, cmd_yesno, 0 },
@@ -1239,5 +1201,6 @@ const command_t commands[] = {
{ "join_chat", 2, cmd_join_chat, 0 },
{ "chat", 1, cmd_chat, 0 },
{ "transfer", 0, cmd_transfer, 0 },
+#endif
{ NULL }
};