-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, BOOLEAN SendQuit );
-
-GLOBAL CLIENT *Client_ThisServer( VOID );
-
-GLOBAL CLIENT *Client_GetFromConn( CONN_ID Idx );
-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 CHAR *Client_Away( 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 VOID Client_SetAway( CLIENT *Client, CHAR *Txt );
-
-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 );
-
-GLOBAL BOOLEAN Client_IsValidNick( CHAR *Nick );
+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 ));
+
+GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit ));
+
+GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
+
+GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
+
+GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
+GLOBAL CLIENT *Client_First PARAMS(( void ));
+GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c ));
+
+GLOBAL int Client_Type PARAMS(( CLIENT *Client ));
+GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_ID PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_Mask PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_MaskCloaked PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_Info PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_User PARAMS(( CLIENT *Client ));
+#ifdef PAM
+GLOBAL char *Client_OrigUser PARAMS(( CLIENT *Client ));
+#endif
+GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_HostnameCloaked PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_Password PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_Modes PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_Flags PARAMS(( CLIENT *Client ));
+GLOBAL CLIENT *Client_Introducer PARAMS(( CLIENT *Client ));
+GLOBAL bool Client_OperByMe PARAMS(( CLIENT *Client ));
+GLOBAL int Client_Hops PARAMS(( CLIENT *Client ));
+GLOBAL int Client_Token PARAMS(( CLIENT *Client ));
+GLOBAL int Client_MyToken PARAMS(( CLIENT *Client ));
+GLOBAL CLIENT *Client_TopServer PARAMS(( CLIENT *Client ));
+GLOBAL CLIENT *Client_NextHop PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_Away PARAMS(( CLIENT *Client ));
+GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client ));
+
+GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
+
+GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, const char *Hostname ));
+GLOBAL void Client_SetID PARAMS(( CLIENT *Client, const char *Nick ));
+GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, const char *User, bool Idented ));
+GLOBAL void Client_SetOrigUser PARAMS(( CLIENT *Client, const char *User ));
+GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, const char *Info ));
+GLOBAL void Client_SetPassword PARAMS(( CLIENT *Client, const char *Pwd ));
+GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type ));
+GLOBAL void Client_SetHops PARAMS(( CLIENT *Client, int Hops ));
+GLOBAL void Client_SetToken PARAMS(( CLIENT *Client, int Token ));
+GLOBAL void Client_SetOperByMe PARAMS(( CLIENT *Client, bool OperByMe ));
+GLOBAL void Client_SetModes PARAMS(( CLIENT *Client, const char *Modes ));
+GLOBAL void Client_SetFlags PARAMS(( CLIENT *Client, const char *Flags ));
+GLOBAL void Client_SetIntroducer PARAMS(( CLIENT *Client, CLIENT *Introducer ));
+GLOBAL void Client_SetAway PARAMS(( CLIENT *Client, const char *Txt ));
+
+GLOBAL bool Client_ModeAdd PARAMS(( CLIENT *Client, char Mode ));
+GLOBAL bool Client_ModeDel PARAMS(( CLIENT *Client, char Mode ));
+
+GLOBAL bool Client_CheckNick PARAMS(( CLIENT *Client, char *Nick ));
+GLOBAL bool Client_CheckID PARAMS(( CLIENT *Client, char *ID ));
+
+GLOBAL long Client_UserCount PARAMS(( void ));
+GLOBAL long Client_ServiceCount PARAMS(( void ));
+GLOBAL long Client_ServerCount PARAMS(( void ));
+GLOBAL unsigned long Client_OperCount PARAMS(( void ));
+GLOBAL unsigned long Client_UnknownCount PARAMS(( void ));
+GLOBAL long Client_MyUserCount PARAMS(( void ));
+GLOBAL long Client_MyServiceCount PARAMS(( void ));
+GLOBAL unsigned long Client_MyServerCount PARAMS(( void ));
+GLOBAL long Client_MaxUserCount PARAMS(( void ));
+GLOBAL long Client_MyMaxUserCount PARAMS(( void ));
+
+GLOBAL bool Client_IsValidNick PARAMS(( const char *Nick ));
+
+GLOBAL WHOWAS *Client_GetWhowas PARAMS(( void ));
+GLOBAL int Client_GetLastWhowasIndex PARAMS(( void ));
+
+GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client ));
+
+GLOBAL const char *Client_TypeText PARAMS((CLIENT *Client));
+
+#ifdef DEBUG
+GLOBAL void Client_DebugDump PARAMS((void));
+#endif