-GLOBAL VOID Client_Init( VOID );
-GLOBAL VOID Client_Exit( VOID );
-
-GLOBAL CLIENT *Client_NewLocal( CONN_ID Idx, CHAR *Hostname, INT Type, BOOLEAN Idented );
-GLOBAL CLIENT *Client_NewRemoteServer( CLIENT *Introducer, CHAR *Hostname, CLIENT *TopServer, INT Hops, INT Token, CHAR *Info, BOOLEAN Idented );
-GLOBAL CLIENT *Client_NewRemoteUser( CLIENT *Introducer, CHAR *Nick, INT Hops, CHAR *User, CHAR *Hostname, INT Token, CHAR *Modes, CHAR *Info, BOOLEAN Idented );
-GLOBAL CLIENT *Client_New( CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, INT Type, CHAR *ID, CHAR *User, CHAR *Hostname, CHAR *Info, INT Hops, INT Token, CHAR *Modes, BOOLEAN Idented );
-
-GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg );
-
-GLOBAL CLIENT *Client_ThisServer( VOID );
-
-GLOBAL CLIENT *Client_GetFromConn( CONN_ID Idx );
-GLOBAL CLIENT *Client_GetFromID( CHAR *Nick );
-GLOBAL CLIENT *Client_GetFromToken( CLIENT *Client, INT Token );
-
-GLOBAL CLIENT *Client_Search( CHAR *ID );
-GLOBAL CLIENT *Client_First( VOID );
-GLOBAL CLIENT *Client_Next( CLIENT *c );
-
-GLOBAL INT Client_Type( CLIENT *Client );
-GLOBAL CONN_ID Client_Conn( CLIENT *Client );
-GLOBAL CHAR *Client_ID( CLIENT *Client );
-GLOBAL CHAR *Client_Mask( CLIENT *Client );
-GLOBAL CHAR *Client_Info( CLIENT *Client );
-GLOBAL CHAR *Client_User( CLIENT *Client );
-GLOBAL CHAR *Client_Hostname( CLIENT *Client );
-GLOBAL CHAR *Client_Password( CLIENT *Client );
-GLOBAL CHAR *Client_Modes( CLIENT *Client );
-GLOBAL CLIENT *Client_Introducer( CLIENT *Client );
-GLOBAL BOOLEAN Client_OperByMe( CLIENT *Client );
-GLOBAL INT Client_Hops( CLIENT *Client );
-GLOBAL INT Client_Token( CLIENT *Client );
-GLOBAL INT Client_MyToken( CLIENT *Client );
-GLOBAL CLIENT *Client_TopServer( CLIENT *Client );
-GLOBAL CLIENT *Client_NextHop( CLIENT *Client );
-
-GLOBAL BOOLEAN Client_HasMode( CLIENT *Client, CHAR Mode );
-
-GLOBAL VOID Client_SetHostname( CLIENT *Client, CHAR *Hostname );
-GLOBAL VOID Client_SetID( CLIENT *Client, CHAR *Nick );
-GLOBAL VOID Client_SetUser( CLIENT *Client, CHAR *User, BOOLEAN Idented );
-GLOBAL VOID Client_SetInfo( CLIENT *Client, CHAR *Info );
-GLOBAL VOID Client_SetPassword( CLIENT *Client, CHAR *Pwd );
-GLOBAL VOID Client_SetType( CLIENT *Client, INT Type );
-GLOBAL VOID Client_SetHops( CLIENT *Client, INT Hops );
-GLOBAL VOID Client_SetToken( CLIENT *Client, INT Token );
-GLOBAL VOID Client_SetOperByMe( CLIENT *Client, BOOLEAN OperByMe );
-GLOBAL VOID Client_SetModes( CLIENT *Client, CHAR *Modes );
-GLOBAL VOID Client_SetIntroducer( CLIENT *Client, CLIENT *Introducer );
-
-GLOBAL BOOLEAN Client_ModeAdd( CLIENT *Client, CHAR Mode );
-GLOBAL BOOLEAN Client_ModeDel( CLIENT *Client, CHAR Mode );
-
-GLOBAL BOOLEAN Client_CheckNick( CLIENT *Client, CHAR *Nick );
-GLOBAL BOOLEAN Client_CheckID( CLIENT *Client, CHAR *ID );
-
-GLOBAL INT Client_UserCount( VOID );
-GLOBAL INT Client_ServiceCount( VOID );
-GLOBAL INT Client_ServerCount( VOID );
-GLOBAL INT Client_OperCount( VOID );
-GLOBAL INT Client_UnknownCount( VOID );
-GLOBAL INT Client_MyUserCount( VOID );
-GLOBAL INT Client_MyServiceCount( VOID );
-GLOBAL INT Client_MyServerCount( VOID );
+typedef struct _WHOWAS
+{
+ time_t time; /* time stamp of entry or 0 if unused */
+ char id[CLIENT_NICK_LEN]; /* client nick name */
+ char host[CLIENT_HOST_LEN]; /* hostname of the client */
+ char user[CLIENT_USER_LEN]; /* user name ("login") */
+ char info[CLIENT_INFO_LEN]; /* long user name */
+ char server[CLIENT_HOST_LEN]; /* server name */
+} WHOWAS;
+
+
+GLOBAL void Client_Init PARAMS(( void ));
+GLOBAL void Client_Exit PARAMS(( void ));
+
+GLOBAL CLIENT *Client_NewLocal PARAMS(( CONN_ID Idx, const char *Hostname, int Type, bool Idented ));
+GLOBAL CLIENT *Client_NewRemoteServer PARAMS(( CLIENT *Introducer, const char *Hostname, CLIENT *TopServer, int Hops, int Token, const char *Info, bool Idented ));
+GLOBAL CLIENT *Client_NewRemoteUser PARAMS(( CLIENT *Introducer, const char *Nick, int Hops, const char *User, const char *Hostname, int Token, const char *Modes, const char *Info, bool Idented ));