=== modified file 'irc_commands.c'
|
|
|
72 | 72 | |
73 | 73 | static void irc_cmd_nick( irc_t *irc, char **cmd ) |
74 | 74 | { |
75 | | if( irc->nick ) |
| 75 | if(irc->status & USTATUS_IDENTIFIED && irc->nick ) |
76 | 76 | { |
77 | 77 | irc_reply( irc, 438, ":The hand of the deity is upon thee, thy nick may not change" ); |
78 | 78 | } |
79 | 79 | /* 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 ) ) |
| 80 | else if( ( nick_cmp( cmd[1], irc->mynick ) == 0 ) || ( nick_cmp( cmd[1], NS_NICK ) == 0 ) || ( user_find( irc, cmd[1] ) != NULL ) ) |
81 | 81 | { |
82 | | irc_reply( irc, 433, ":This nick is already in use" ); |
| 82 | irc_reply( irc, 433, "%s :This nick is already in use", cmd[1] ); |
83 | 83 | } |
84 | 84 | else if( !nick_ok( cmd[1] ) ) |
85 | 85 | { |
86 | 86 | /* [SH] Invalid characters. */ |
87 | 87 | irc_reply( irc, 432, ":This nick contains invalid characters" ); |
88 | 88 | } |
| 89 | else if(irc->nick) |
| 90 | { |
| 91 | if(user_find(irc, irc->nick)) { |
| 92 | user_rename(irc, irc->nick, cmd[1]); |
| 93 | } |
| 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] ); |
| 98 | } |
89 | 99 | else |
90 | 100 | { |
91 | 101 | irc->nick = g_strdup( cmd[1] ); |