Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • root_commands.c

    rb8a491d r0baed0d  
    22  * BitlBee -- An IRC to other IM-networks gateway                     *
    33  *                                                                    *
    4   * Copyright 2002-2004 Wilmer van der Gaast and others                *
     4  * Copyright 2002-2010 Wilmer van der Gaast and others                *
    55  \********************************************************************/
    66
     
    654654                irc_usermsg( irc, "Nick `%s' can't be changed", cmd[1] );
    655655        }
     656        else if( g_strcasecmp( cmd[1], irc->channel ) == 0 )
     657        {
     658                if( strchr( CTYPES, cmd[2][0] ) && nick_ok( cmd[2] + 1 ) )
     659                {
     660                        u = user_find( irc, irc->nick );
     661                       
     662                        irc_part( irc, u, irc->channel );
     663                        g_free( irc->channel );
     664                        irc->channel = g_strdup( cmd[2] );
     665                        irc_join( irc, u, irc->channel );
     666                       
     667                        if( strcmp( cmd[0], "set_rename" ) != 0 )
     668                                set_setstr( &irc->set, "control_channel", cmd[2] );
     669                }
     670        }
    656671        else if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) )
    657672        {
     
    701716       
    702717        return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : SET_INVALID;
     718}
     719
     720char *set_eval_control_channel( set_t *set, char *new_name )
     721{
     722        irc_t *irc = set->data;
     723       
     724        if( strcmp( irc->channel, new_name ) != 0 )
     725        {
     726                char *cmd[] = { "set_rename", irc->channel, new_name, NULL };
     727               
     728                cmd_rename( irc, cmd );
     729        }
     730       
     731        return strcmp( irc->channel, new_name ) == 0 ? new_name : SET_INVALID;
    703732}
    704733
     
    11251154        {
    11261155                irc_usermsg( irc, "Unknown command: %s %s. Please use \x02help commands\x02 to get a list of available commands.", "chat", cmd[1] );
    1127         }
    1128 }
    1129 
    1130 static void cmd_transfer( irc_t *irc, char **cmd )
    1131 {
    1132         GSList *files = irc->file_transfers;
    1133         enum { LIST, REJECT, CANCEL };
    1134         int subcmd = LIST;
    1135         int fid;
    1136 
    1137         if( !files )
    1138         {
    1139                 irc_usermsg( irc, "No pending transfers" );
    1140                 return;
    1141         }
    1142 
    1143         if( cmd[1] && ( strcmp( cmd[1], "reject" ) == 0 ) )
    1144         {
    1145                 subcmd = REJECT;
    1146         }
    1147         else if( cmd[1] && ( strcmp( cmd[1], "cancel" ) == 0 ) &&
    1148                  cmd[2] && ( sscanf( cmd[2], "%d", &fid ) == 1 ) )
    1149         {
    1150                 subcmd = CANCEL;
    1151         }
    1152 
    1153         for( ; files; files = g_slist_next( files ) )
    1154         {
    1155                 file_transfer_t *file = files->data;
    1156                
    1157                 switch( subcmd ) {
    1158                 case LIST:
    1159                         if ( file->status == FT_STATUS_LISTENING )
    1160                                 irc_usermsg( irc,
    1161                                         "Pending file(id %d): %s (Listening...)", file->local_id, file->file_name);
    1162                         else
    1163                         {
    1164                                 int kb_per_s = 0;
    1165                                 time_t diff = time( NULL ) - file->started ? : 1;
    1166                                 if ( ( file->started > 0 ) && ( file->bytes_transferred > 0 ) )
    1167                                         kb_per_s = file->bytes_transferred / 1024 / diff;
    1168                                        
    1169                                 irc_usermsg( irc,
    1170                                         "Pending file(id %d): %s (%10zd/%zd kb, %d kb/s)", file->local_id, file->file_name,
    1171                                         file->bytes_transferred/1024, file->file_size/1024, kb_per_s);
    1172                         }
    1173                         break;
    1174                 case REJECT:
    1175                         if( file->status == FT_STATUS_LISTENING )
    1176                         {
    1177                                 irc_usermsg( irc, "Rejecting file transfer for %s", file->file_name );
    1178                                 imcb_file_canceled( file, "Denied by user" );
    1179                         }
    1180                         break;
    1181                 case CANCEL:
    1182                         if( file->local_id == fid )
    1183                         {
    1184                                 irc_usermsg( irc, "Canceling file transfer for %s", file->file_name );
    1185                                 imcb_file_canceled( file, "Canceled by user" );
    1186                         }
    1187                         break;
    1188                 }
    11891156        }
    11901157}
     
    12111178        { "join_chat",      2, cmd_join_chat,      0 },
    12121179        { "chat",           1, cmd_chat,           0 },
    1213         { "transfer",       0, cmd_transfer,       0 },
    12141180        { NULL }
    12151181};
Note: See TracChangeset for help on using the changeset viewer.