Index: irc_commands.c
===================================================================
--- irc_commands.c	(revision 449a51de265cb3b4f0f5003e09fbbb030247c972)
+++ irc_commands.c	(revision 3ddb7477f51d3cf1632e2a8b6f7da4c0609a52cb)
@@ -2,5 +2,5 @@
   * BitlBee -- An IRC to other IM-networks gateway                     *
   *                                                                    *
-  * Copyright 2002-2006 Wilmer van der Gaast and others                *
+  * Copyright 2002-2010 Wilmer van der Gaast and others                *
   \********************************************************************/
 
@@ -39,5 +39,5 @@
 		   out we don't require it, which will break this feature.)
 		   Try to identify using the given password. */
-		return root_command( irc, send_cmd );
+		/*return root_command( irc, send_cmd );*/
 	}
 	/* Handling in pre-logged-in state, first see if this server is
@@ -53,10 +53,10 @@
 	else if( global.conf->auth_pass )
 	{
-		irc_reply( irc, 464, ":Incorrect password" );
+		irc_send_num( irc, 464, ":Incorrect password" );
 	}
 	else
 	{
 		/* Remember the password and try to identify after USER/NICK. */
-		irc_setpass( irc, cmd[1] );
+		/*irc_setpass( irc, cmd[1] ); */
 		irc_check_login( irc );
 	}
@@ -65,6 +65,6 @@
 static void irc_cmd_user( irc_t *irc, char **cmd )
 {
-	irc->user = g_strdup( cmd[1] );
-	irc->realname = g_strdup( cmd[4] );
+	irc->user->user = g_strdup( cmd[1] );
+	irc->user->fullname = g_strdup( cmd[4] );
 	
 	irc_check_login( irc );
@@ -73,21 +73,20 @@
 static void irc_cmd_nick( irc_t *irc, char **cmd )
 {
-	if( irc->nick )
-	{
-		irc_reply( irc, 438, ":The hand of the deity is upon thee, thy nick may not change" );
-	}
-	/* This is not clean, but for now it'll have to be like this... */
-	else if( ( nick_cmp( cmd[1], irc->mynick ) == 0 ) || ( nick_cmp( cmd[1], NS_NICK ) == 0 ) )
-	{
-		irc_reply( irc, 433, ":This nick is already in use" );
+	if( irc->user->nick )
+	{
+		irc_send_num( irc, 438, ":The hand of the deity is upon thee, thy nick may not change" );
+	}
+	else if( irc_user_find( irc, cmd[1] ) )
+	{
+		irc_send_num( irc, 433, ":This nick is already in use" );
 	}
 	else if( !nick_ok( cmd[1] ) )
 	{
 		/* [SH] Invalid characters. */
-		irc_reply( irc, 432, ":This nick contains invalid characters" );
-	}
-	else
-	{
-		irc->nick = g_strdup( cmd[1] );
+		irc_send_num( irc, 432, ":This nick contains invalid characters" );
+	}
+	else
+	{
+		irc->user->nick = g_strdup( cmd[1] );
 		
 		irc_check_login( irc );
@@ -95,4 +94,5 @@
 }
 
+#if 0
 static void irc_cmd_quit( irc_t *irc, char **cmd )
 {
@@ -116,9 +116,9 @@
 	{
 		irc_umode_set( irc, "+o", 1 );
-		irc_reply( irc, 381, ":Password accepted" );
-	}
-	else
-	{
-		irc_reply( irc, 432, ":Incorrect password" );
+		irc_send_num( irc, 381, ":Password accepted" );
+	}
+	else
+	{
+		irc_send_num( irc, 432, ":Incorrect password" );
 	}
 }
@@ -131,10 +131,10 @@
 		{
 			if( *cmd[2] == '+' || *cmd[2] == '-' )
-				irc_reply( irc, 477, "%s :Can't change channel modes", cmd[1] );
+				irc_send_num( irc, 477, "%s :Can't change channel modes", cmd[1] );
 			else if( *cmd[2] == 'b' )
-				irc_reply( irc, 368, "%s :No bans possible", cmd[1] );
+				irc_send_num( irc, 368, "%s :No bans possible", cmd[1] );
 		}
 		else
-			irc_reply( irc, 324, "%s +%s", cmd[1], CMODE );
+			irc_send_num( irc, 324, "%s +%s", cmd[1], CMODE );
 	}
 	else
@@ -145,8 +145,8 @@
 				irc_umode_set( irc, cmd[2], 0 );
 			else
-				irc_reply( irc, 221, "+%s", irc->umode );
+				irc_send_num( irc, 221, "+%s", irc->umode );
 		}
 		else
-			irc_reply( irc, 502, ":Don't touch their modes" );
+			irc_send_num( irc, 502, ":Don't touch their modes" );
 	}
 }
@@ -183,5 +183,5 @@
 	else
 	{
-		irc_reply( irc, 403, "%s :No such channel", cmd[1] );
+		irc_send_num( irc, 403, "%s :No such channel", cmd[1] );
 	}
 }
@@ -197,9 +197,9 @@
 		
 		if( strchr( CTYPES, cmd[1][0] ) == NULL || cmd[1][1] == 0 )
-			irc_reply( irc, 479, "%s :Invalid channel name", cmd[1] );
+			irc_send_num( irc, 479, "%s :Invalid channel name", cmd[1] );
 		else if( ( c = chat_bychannel( irc, cmd[1] ) ) && c->acc && c->acc->ic )
 			chat_join( irc, c, cmd[2] );
 		else
-			irc_reply( irc, 403, "%s :No such channel", cmd[1] );
+			irc_send_num( irc, 403, "%s :No such channel", cmd[1] );
 	}
 }
@@ -215,9 +215,9 @@
 		{
 			c->ic->acc->prpl->chat_invite( c, u->handle, NULL );
-			irc_reply( irc, 341, "%s %s", nick, channel );
+			irc_send_num( irc, 341, "%s %s", nick, channel );
 			return;
 		}
 	
-	irc_reply( irc, 482, "%s :Invite impossible; User/Channel non-existent or incompatible", channel );
+	irc_send_num( irc, 482, "%s :Invite impossible; User/Channel non-existent or incompatible", channel );
 }
 
@@ -226,5 +226,5 @@
 	if ( !cmd[2] ) 
 	{
-		irc_reply( irc, 412, ":No text to send" );
+		irc_send_num( irc, 412, ":No text to send" );
 	}
 	else if ( irc->nick && g_strcasecmp( cmd[1], irc->nick ) == 0 ) 
@@ -283,5 +283,5 @@
 		while( u )
 		{
-			irc_reply( irc, 352, "%s %s %s %s %s %c :0 %s", u->online ? irc->channel : "*", u->user, u->host, irc->myhost, u->nick, u->online ? ( u->away ? 'G' : 'H' ) : 'G', u->realname );
+			irc_send_num( irc, 352, "%s %s %s %s %s %c :0 %s", u->online ? irc->channel : "*", u->user, u->host, irc->myhost, u->nick, u->online ? ( u->away ? 'G' : 'H' ) : 'G', u->realname );
 			u = u->next;
 		}
@@ -290,5 +290,5 @@
 		{
 			if( u->online )
-				irc_reply( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->away ? 'G' : 'H', u->realname );
+				irc_send_num( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->away ? 'G' : 'H', u->realname );
 			u = u->next;
 		}
@@ -297,10 +297,10 @@
 		{
 			if( ( u = user_findhandle( c->ic, l->data ) ) )
-				irc_reply( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->away ? 'G' : 'H', u->realname );
+				irc_send_num( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->away ? 'G' : 'H', u->realname );
 		}
 	else if( ( u = user_find( irc, channel ) ) )
-		irc_reply( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->online ? ( u->away ? 'G' : 'H' ) : 'G', u->realname );
-	
-	irc_reply( irc, 315, "%s :End of /WHO list", channel?channel:"**" );
+		irc_send_num( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->online ? ( u->away ? 'G' : 'H' ) : 'G', u->realname );
+	
+	irc_send_num( irc, 315, "%s :End of /WHO list", channel?channel:"**" );
 }
 
@@ -320,7 +320,7 @@
 		{
 			if( u->online && u->away )
-				irc_reply( irc, 302, ":%s=-%s@%s", u->nick, u->user, u->host );
+				irc_send_num( irc, 302, ":%s=-%s@%s", u->nick, u->user, u->host );
 			else
-				irc_reply( irc, 302, ":%s=+%s@%s", u->nick, u->user, u->host );
+				irc_send_num( irc, 302, ":%s=+%s@%s", u->nick, u->user, u->host );
 		}
 }
@@ -377,5 +377,5 @@
 		buff[strlen(buff)-1] = '\0';
 	
-	irc_reply( irc, 303, ":%s", buff );
+	irc_send_num( irc, 303, ":%s", buff );
 }
 
@@ -406,7 +406,7 @@
 			
 			if( u && u->online )
-				irc_reply( irc, 604, "%s %s %s %d :%s", u->nick, u->user, u->host, (int) time( NULL ), "is online" );
+				irc_send_num( irc, 604, "%s %s %s %d :%s", u->nick, u->user, u->host, (int) time( NULL ), "is online" );
 			else
-				irc_reply( irc, 605, "%s %s %s %d :%s", nick, "*", "*", (int) time( NULL ), "is offline" );
+				irc_send_num( irc, 605, "%s %s %s %d :%s", nick, "*", "*", (int) time( NULL ), "is offline" );
 		}
 		else if( cmd[i][0] == '-' )
@@ -419,5 +419,5 @@
 				g_free( okey );
 				
-				irc_reply( irc, 602, "%s %s %s %d :%s", nick, "*", "*", 0, "Stopped watching" );
+				irc_send_num( irc, 602, "%s %s %s %d :%s", nick, "*", "*", 0, "Stopped watching" );
 			}
 		}
@@ -463,5 +463,5 @@
 		u->away[j] = 0;
 		
-		irc_reply( irc, 306, ":You're now away: %s", u->away );
+		irc_send_num( irc, 306, ":You're now away: %s", u->away );
 		/* irc_umode_set( irc, irc->myhost, "+a" ); */
 	}
@@ -471,5 +471,5 @@
 		u->away = NULL;
 		/* irc_umode_set( irc, irc->myhost, "-a" ); */
-		irc_reply( irc, 305, ":Welcome back" );
+		irc_send_num( irc, 305, ":Welcome back" );
 	}
 	
@@ -484,25 +484,25 @@
 	if( u )
 	{
-		irc_reply( irc, 311, "%s %s %s * :%s", u->nick, u->user, u->host, u->realname );
+		irc_send_num( irc, 311, "%s %s %s * :%s", u->nick, u->user, u->host, u->realname );
 		
 		if( u->ic )
-			irc_reply( irc, 312, "%s %s.%s :%s network", u->nick, u->ic->acc->user,
+			irc_send_num( irc, 312, "%s %s.%s :%s network", u->nick, u->ic->acc->user,
 			           u->ic->acc->server && *u->ic->acc->server ? u->ic->acc->server : "",
 			           u->ic->acc->prpl->name );
 		else
-			irc_reply( irc, 312, "%s %s :%s", u->nick, irc->myhost, IRCD_INFO );
+			irc_send_num( irc, 312, "%s %s :%s", u->nick, irc->myhost, IRCD_INFO );
 		
 		if( !u->online )
-			irc_reply( irc, 301, "%s :%s", u->nick, "User is offline" );
+			irc_send_num( irc, 301, "%s :%s", u->nick, "User is offline" );
 		else if( u->away )
-			irc_reply( irc, 301, "%s :%s", u->nick, u->away );
+			irc_send_num( irc, 301, "%s :%s", u->nick, u->away );
 		if( u->status_msg )
-			irc_reply( irc, 333, "%s :Status: %s", u->nick, u->status_msg );
-		
-		irc_reply( irc, 318, "%s :End of /WHOIS list", nick );
-	}
-	else
-	{
-		irc_reply( irc, 401, "%s :Nick does not exist", nick );
+			irc_send_num( irc, 333, "%s :Status: %s", u->nick, u->status_msg );
+		
+		irc_send_num( irc, 318, "%s :End of /WHOIS list", nick );
+	}
+	else
+	{
+		irc_send_num( irc, 401, "%s :Nick does not exist", nick );
 	}
 }
@@ -515,6 +515,6 @@
 	   with not-found and irssi users will get better error messages */
 	
-	irc_reply( irc, 406, "%s :Nick does not exist", cmd[1] );
-	irc_reply( irc, 369, "%s :End of WHOWAS", cmd[1] );
+	irc_send_num( irc, 406, "%s :Nick does not exist", cmd[1] );
+	irc_send_num( irc, 369, "%s :End of WHOWAS", cmd[1] );
 }
 
@@ -541,5 +541,5 @@
 static void irc_cmd_version( irc_t *irc, char **cmd )
 {
-	irc_reply( irc, 351, "bitlbee-%s. %s :%s/%s ", BITLBEE_VERSION, irc->myhost, ARCH, CPU );
+	irc_send_num( irc, 351, "bitlbee-%s. %s :%s/%s ", BITLBEE_VERSION, irc->myhost, ARCH, CPU );
 }
 
@@ -572,6 +572,7 @@
 		ipc_to_master( cmd );
 	
-	irc_reply( irc, 382, "%s :Rehashing", global.conf_file );
-}
+	irc_send_num( irc, 382, "%s :Rehashing", global.conf_file );
+}
+#endif
 
 static const command_t irc_commands[] = {
@@ -579,4 +580,5 @@
 	{ "user",        4, irc_cmd_user,        IRC_CMD_PRE_LOGIN },
 	{ "nick",        1, irc_cmd_nick,        0 },
+#if 0
 	{ "quit",        0, irc_cmd_quit,        0 },
 	{ "ping",        0, irc_cmd_ping,        0 },
@@ -610,4 +612,5 @@
 	{ "restart",     0, NULL,                IRC_CMD_OPER_ONLY | IRC_CMD_TO_MASTER },
 	{ "kill",        2, NULL,                IRC_CMD_OPER_ONLY | IRC_CMD_TO_MASTER },
+#endif
 	{ NULL }
 };
@@ -628,17 +631,17 @@
 			if( irc_commands[i].flags & IRC_CMD_PRE_LOGIN && irc->status & USTATUS_LOGGED_IN )
 			{
-				irc_reply( irc, 462, ":Only allowed before logging in" );
+				irc_send_num( irc, 462, ":Only allowed before logging in" );
 			}
 			else if( irc_commands[i].flags & IRC_CMD_LOGGED_IN && !( irc->status & USTATUS_LOGGED_IN ) )
 			{
-				irc_reply( irc, 451, ":Register first" );
+				irc_send_num( irc, 451, ":Register first" );
 			}
 			else if( irc_commands[i].flags & IRC_CMD_OPER_ONLY && !strchr( irc->umode, 'o' ) )
 			{
-				irc_reply( irc, 481, ":Permission denied - You're not an IRC operator" );
+				irc_send_num( irc, 481, ":Permission denied - You're not an IRC operator" );
 			}
 			else if( n_arg < irc_commands[i].required_parameters )
 			{
-				irc_reply( irc, 461, "%s :Need more parameters", cmd[0] );
+				irc_send_num( irc, 461, "%s :Need more parameters", cmd[0] );
 			}
 			else if( irc_commands[i].flags & IRC_CMD_TO_MASTER )
@@ -657,4 +660,4 @@
 	
 	if( irc->status >= USTATUS_LOGGED_IN )
-		irc_reply( irc, 421, "%s :Unknown command", cmd[0] );
-}
+		irc_send_num( irc, 421, "%s :Unknown command", cmd[0] );
+}
