- IRC_WriteStrServers( NULL, "NICK %s 1 %s %s 1 +%s :%s", Client_ID( Client ), Client_User( Client ), Client_Hostname( Client ), Client_Modes( Client ), Client_Info( Client ));
-
- /* Welcome :-) */
- if( ! IRC_WriteStrClient( Client, RPL_WELCOME_MSG, Client_ID( Client ), Client_Mask( Client ))) return false;
-
- /* Version and system type */
-#ifdef CVSDATE
- strlcpy( ver, CVSDATE, sizeof( ver ));
- strncpy( ver + 4, ver + 5, 2 );
- strncpy( ver + 6, ver + 8, 3 );
- snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
- if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return false;
-#else
- if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return false;
-#endif
-
- if( ! IRC_WriteStrClient( Client, RPL_CREATED_MSG, Client_ID( Client ), NGIRCd_StartStr )) return false;
-#ifdef CVSDATE
- if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, USERMODES, CHANMODES )) return false;
-#else
- if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, USERMODES, CHANMODES )) return false;
-#endif
-
- /* Features */
- if( ! IRC_WriteStrClient( Client, RPL_ISUPPORT_MSG, Client_ID( Client ), CLIENT_NICK_LEN - 1,
- COMMAND_LEN - 23, CLIENT_AWAY_LEN - 1, Conf_MaxJoins )) return DISCONNECTED;
+ strlcat(modes, Client_Modes(Client), sizeof(modes));
+ Introduce_Client(NULL, Client_ID(Client), 1, Client_User(Client),
+ Client_Hostname(Client), 1, modes, Client_Info(Client));
+
+ if (!IRC_WriteStrClient
+ (Client, RPL_WELCOME_MSG, Client_ID(Client), Client_Mask(Client)))
+ return false;
+ if (!IRC_WriteStrClient
+ (Client, RPL_YOURHOST_MSG, Client_ID(Client),
+ Client_ID(Client_ThisServer()), PACKAGE_VERSION, TARGET_CPU,
+ TARGET_VENDOR, TARGET_OS))
+ return false;
+ if (!IRC_WriteStrClient
+ (Client, RPL_CREATED_MSG, Client_ID(Client), NGIRCd_StartStr))
+ return false;
+ if (!IRC_WriteStrClient
+ (Client, RPL_MYINFO_MSG, Client_ID(Client),
+ Client_ID(Client_ThisServer()), PACKAGE_VERSION, USERMODES,
+ CHANMODES))
+ return false;
+
+ /* Features supported by this server (005 numeric, ISUPPORT),
+ * see <http://www.irc.org/tech_docs/005.html> for details. */
+ if (!IRC_Send_ISUPPORT(Client))
+ return DISCONNECTED;