diff options
Diffstat (limited to 'root_commands.c')
| -rw-r--r-- | root_commands.c | 88 | 
1 files changed, 75 insertions, 13 deletions
| diff --git a/root_commands.c b/root_commands.c index 642f5374..eea16178 100644 --- a/root_commands.c +++ b/root_commands.c @@ -198,7 +198,7 @@ static void cmd_drop( irc_t *irc, char **cmd )  		irc_usermsg( irc, "Account `%s' removed", irc->nick );  		break;  	default: -		irc_usermsg( irc, "Error: '%d'", status ); +		irc_usermsg( irc, "Error: `%d'", status );  		break;  	}  } @@ -233,7 +233,11 @@ static void cmd_account( irc_t *irc, char **cmd )  		a = account_add( irc, prpl, cmd[3], cmd[4] );  		if( cmd[5] ) +		{ +			irc_usermsg( irc, "Warning: Passing a servername/other flags to `account add' " +			                  "is now deprecated. Use `account set' instead." );  			set_setstr( &a->set, "server", cmd[5] ); +		}  		irc_usermsg( irc, "Account successfully added" );  	} @@ -316,7 +320,7 @@ static void cmd_account( irc_t *irc, char **cmd )  			}   			else  			{ -				irc_usermsg( irc, "No accounts known. Use 'account add' to add one." ); +				irc_usermsg( irc, "No accounts known. Use `account add' to add one." );  			}  		}  	} @@ -402,9 +406,7 @@ static void cmd_account( irc_t *irc, char **cmd )  				return;  			} -			if( ( strcmp( cmd[3], "=" ) ) == 0 && cmd[4] ) -				irc_usermsg( irc, "Warning: Correct syntax: \002account set <variable> <value>\002 (without =)" ); -			else if( g_strncasecmp( cmd[2], "-del", 4 ) == 0 ) +			if( g_strncasecmp( cmd[2], "-del", 4 ) == 0 )  				set_reset( &a->set, set_name );  			else  				set_setstr( &a->set, set_name, cmd[3] ); @@ -744,16 +746,11 @@ static void cmd_yesno( irc_t *irc, char **cmd )  static void cmd_set( irc_t *irc, char **cmd )  { -	char *set_name = NULL; +	char *set_name = cmd[1];  	if( cmd[1] && cmd[2] )  	{ -		if( ( strcmp( cmd[2], "=" ) ) == 0 && cmd[3] ) -		{ -			irc_usermsg( irc, "Warning: Correct syntax: \002set <variable> <value>\002 (without =)" ); -			return; -		} -		else if( g_strncasecmp( cmd[1], "-del", 4 ) == 0 ) +		if( g_strncasecmp( cmd[1], "-del", 4 ) == 0 )  		{  			set_reset( &irc->set, cmd[2] );  			set_name = cmd[2]; @@ -761,7 +758,6 @@ static void cmd_set( irc_t *irc, char **cmd )  		else  		{  			set_setstr( &irc->set, cmd[1], cmd[2] ); -			set_name = cmd[1];  		}  	}  	if( set_name ) /* else 'forgotten' on purpose.. Must show new value after changing */ @@ -974,6 +970,71 @@ static void cmd_join_chat( irc_t *irc, char **cmd )  	}  } +static void cmd_transfers( irc_t *irc, char **cmd ) +{ +	GSList *files = irc->file_transfers; +	enum { LIST, REJECT, CANCEL }; +	int subcmd = LIST; +	int fid; + +	if( !files ) +	{ +		irc_usermsg( irc, "No pending transfers" ); +		return; +	} + +	if( cmd[1] &&  +	    ( strcmp( cmd[1], "reject" ) == 0 ) ) +	{ +		subcmd = REJECT; +	} +	else if( cmd[1] &&  +		 ( strcmp( cmd[1], "cancel" ) == 0 ) &&  +		 cmd[2] && +		 ( fid = atoi( cmd[2] ) ) ) +	{ +		subcmd = CANCEL; +	} + +	for( ; files; files = g_slist_next( files ) ) +	{ +		file_transfer_t *file = files->data; +		 +		switch( subcmd ) { +		case LIST: +			if ( file->status == FT_STATUS_LISTENING ) +				irc_usermsg( irc,  +					"Pending file(id %d): %s (Listening...)", file->local_id, file->file_name); +			else  +			{ +				int kb_per_s = 0; +				time_t diff = time( NULL ) - file->started; +				if ( ( file->started > 0 ) && ( file->bytes_transferred > 0 ) ) +					kb_per_s = file->bytes_transferred / 1024 / diff; +					 +				irc_usermsg( irc,  +					"Pending file(id %d): %s (%10zd/%zd kb, %d kb/s)", file->local_id, file->file_name,  +					file->bytes_transferred/1024, file->file_size/1024, kb_per_s); +			} +			break; +		case REJECT: +			if( file->status == FT_STATUS_LISTENING ) +			{ +				irc_usermsg( irc, "Rejecting file transfer for %s", file->file_name ); +				imcb_file_canceled( file, "Denied by user" ); +			} +			break; +		case CANCEL: +			if( file->local_id == fid ) +			{ +				irc_usermsg( irc, "Canceling file transfer for %s", file->file_name ); +				imcb_file_canceled( file, "Canceled by user" ); +			} +			break; +		} +	} +} +  const command_t commands[] = {  	{ "help",           0, cmd_help,           0 },   	{ "identify",       1, cmd_identify,       0 }, @@ -994,5 +1055,6 @@ const command_t commands[] = {  	{ "nick",           1, cmd_nick,           0 },  	{ "qlist",          0, cmd_qlist,          0 },  	{ "join_chat",      2, cmd_join_chat,      0 }, +	{ "transfers",      0, cmd_transfers,      0 },  	{ NULL }  }; | 
