diff options
Diffstat (limited to 'root_commands.c')
| -rw-r--r-- | root_commands.c | 159 | 
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 }  }; | 
