aboutsummaryrefslogtreecommitdiffstats
path: root/root_commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'root_commands.c')
-rw-r--r--root_commands.c88
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 }
};