Changeset 228fc18


Ignore:
Timestamp:
2010-05-23T14:31:30Z (15 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
3d93aed
Parents:
186bd04
Message:

Allow nick changes. (Based on patch from zibri) This mostly closes #6!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • irc_commands.c

    r186bd04 r228fc18  
    7373static void irc_cmd_nick( irc_t *irc, char **cmd )
    7474{
    75         if( irc->nick )
    76         {
    77                 irc_reply( irc, 438, ":The hand of the deity is upon thee, thy nick may not change" );
     75        if( irc->status & USTATUS_IDENTIFIED && irc->nick )
     76        {
     77                irc_reply( irc, 438, "%s %s :You can only change your nick if you're not "
     78                           "logged in (i.e. pre-identify)", irc->nick, cmd[1] );
    7879        }
    7980        /* This is not clean, but for now it'll have to be like this... */
    80         else if( ( nick_cmp( cmd[1], irc->mynick ) == 0 ) || ( nick_cmp( cmd[1], NS_NICK ) == 0 ) )
    81         {
    82                 irc_reply( irc, 433, ":This nick is already in use" );
     81        else if( ( nick_cmp( cmd[1], irc->mynick ) == 0 ) || ( nick_cmp( cmd[1], NS_NICK ) == 0 ) || ( user_find( irc, cmd[1] ) != NULL ) )
     82        {
     83                irc_reply( irc, 433, "%s :This nick is already in use", cmd[1] );
    8384        }
    8485        else if( !nick_ok( cmd[1] ) )
    8586        {
    8687                /* [SH] Invalid characters. */
    87                 irc_reply( irc, 432, ":This nick contains invalid characters" );
     88                irc_reply( irc, 432, "%s :This nick contains invalid characters", cmd[1] );
     89        }
     90        else if(irc->nick)
     91        {
     92                if( user_find( irc, irc->nick ) )
     93                        user_rename(irc, irc->nick, cmd[1]);
     94
     95                irc_write( irc, ":%s!%s@%s NICK %s", irc->nick, irc->user, irc->host, cmd[1] );
     96                g_free(irc->nick);
     97                irc->nick = g_strdup( cmd[1] );
    8898        }
    8999        else
Note: See TracChangeset for help on using the changeset viewer.