[NeoStats-Devel] [Commits] r2753 - in trunk: . include modules/statserv src

[email protected] Sat, 20 Aug 2005 06:38:14 +1000
Newsgroups gmane.comp.neostats.devel
Message-ID <[email protected]>
Author: Mark
Date: Sat Aug 20 04:38:11 2005
New Revision: 2753

Modified:
   trunk/ChangeLog
   trunk/include/neostats.h
   trunk/modules/statserv/channel.c
   trunk/modules/statserv/channel.h
   trunk/modules/statserv/htmlstats.c
   trunk/modules/statserv/htmlstats.h
   trunk/modules/statserv/network.c
   trunk/modules/statserv/network.h
   trunk/modules/statserv/server.c
   trunk/modules/statserv/server.h
   trunk/modules/statserv/ss_help.c
   trunk/modules/statserv/stats.h
   trunk/modules/statserv/statserv.c
   trunk/modules/statserv/statserv.h
   trunk/modules/statserv/tld.c
   trunk/modules/statserv/tld.h
   trunk/modules/statserv/user.c
   trunk/modules/statserv/user.h
   trunk/modules/statserv/version.c
   trunk/modules/statserv/version.h
   trunk/src/bots.c
   trunk/src/channels.c
   trunk/src/servers.c
   trunk/src/users.c
Log:
StatServ: boottime sanity checks for lists and hashes, comments, const correctness and other tidy ups

Modified: trunk/ChangeLog
==============================================================================
--- trunk/ChangeLog	(original)
+++ trunk/ChangeLog	Sat Aug 20 04:38:11 2005
@@ -4,6 +4,7 @@
 Fish (F), Mark (M), DeadNotBuried (D)
 ===============================================================================
 * NeoStats * Version 3.0.a3-dev
+ - StatServ: boot time sanity checks for list and hash creation. (M)
  - StatServ: port version stats to DBA API. (M)
  - QuoteServ: add sanity checks to db loads. (M)
  - QuoteServ: fix win32 crash - strdup cannot be used in modules. (M)

Modified: trunk/include/neostats.h
==============================================================================
--- trunk/include/neostats.h	(original)
+++ trunk/include/neostats.h	Sat Aug 20 04:38:11 2005
@@ -1592,36 +1592,36 @@
 /* Module data pointer interface channel */
 EXPORTFUNC void *AllocChannelModPtr( Channel *c, int size );
 EXPORTFUNC void FreeChannelModPtr( Channel *c );
-EXPORTFUNC void *GetChannelModPtr( Channel *c );
+EXPORTFUNC void *GetChannelModPtr( const Channel *c );
 /* Module data pointer interface user */
 EXPORTFUNC void *AllocUserModPtr( Client *u, int size );
 EXPORTFUNC void FreeUserModPtr( Client *u );
-EXPORTFUNC void *GetUserModPtr( Client *u );
+EXPORTFUNC void *GetUserModPtr( const Client *u );
 /* Module data pointer interface server */
 EXPORTFUNC void *AllocServerModPtr( Client *s, int size );
 EXPORTFUNC void FreeServerModPtr( Client *s );
-EXPORTFUNC void *GetServerModPtr( Client *s );
+EXPORTFUNC void *GetServerModPtr( const Client *s );
 /* Module data pointer interface bot */
 EXPORTFUNC void *AllocBotModPtr( Bot *pBot, int size );
 EXPORTFUNC void FreeBotModPtr( Bot *pBot );
-EXPORTFUNC void* GetBotModPtr( Bot *pBot );
+EXPORTFUNC void* GetBotModPtr( const Bot *pBot );
 /* Module data value interface */
 /* Module data value interface channel */
 EXPORTFUNC void ClearChannelModValue( Channel *c );
 EXPORTFUNC void SetChannelModValue( Channel *c, void *data );
-EXPORTFUNC void *GetChannelModValue( Channel *c );
+EXPORTFUNC void *GetChannelModValue( const Channel *c );
 /* Module data value interface user */
 EXPORTFUNC void ClearUserModValue( Client *u );
 EXPORTFUNC void SetUserModValue( Client *u, void *data );
-EXPORTFUNC void *GetUserModValue( Client *u );
+EXPORTFUNC void *GetUserModValue( const Client *u );
 /* Module data value interface server */
 EXPORTFUNC void ClearServerModValue( Client *s );
 EXPORTFUNC void SetServerModValue( Client *s, void *data );
-EXPORTFUNC void *GetServerModValue( Client *s );
+EXPORTFUNC void *GetServerModValue( const Client *s );
 /* Module data value interface bot */
 EXPORTFUNC void ClearBotModValue( Bot *pBot );
 EXPORTFUNC void SetBotModValue( Bot *pBot, void *data );
-EXPORTFUNC void *GetBotModValue( Bot *pBot );
+EXPORTFUNC void *GetBotModValue( const Bot *pBot );
 
 //#define ClearBotModValue( b ) b->moddata = 0
 //#define SetBotModValue( b, data ) b->moddata = data

Modified: trunk/modules/statserv/channel.c
==============================================================================
--- trunk/modules/statserv/channel.c	(original)
+++ trunk/modules/statserv/channel.c	Sat Aug 20 04:38:11 2005
@@ -29,7 +29,16 @@
 
 #define CHANNEL_TABLE	"Channel"
 
-list_t *channelstatlist;
+static list_t *channelstatlist;
+
+/** @brief AverageChannelStatistics
+ *
+ *  Average channel statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
 
 void AverageChannelStatistics( void )
 {
@@ -47,6 +56,15 @@
 	}
 }
 
+/** @brief ResetChannelStatistics
+ *
+ *  Reset channel statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
+
 void ResetChannelStatistics( void )
 {
 	lnode_t *cn;
@@ -168,13 +186,13 @@
 	return NS_FALSE;
 }
 
-int ss_event_newchan( CmdParams *cmdparams )
+int ss_event_newchan( const CmdParams *cmdparams )
 {
 	AddChannel( cmdparams->channel, NULL );
 	return NS_SUCCESS;
 }
 
-int ss_event_delchan( CmdParams *cmdparams )
+int ss_event_delchan( const CmdParams *cmdparams )
 {
 	channelstat *cs;
 	lnode_t *ln;
@@ -194,7 +212,7 @@
 	return NS_SUCCESS;
 }
 
-int ss_event_join( CmdParams *cmdparams )
+int ss_event_join( const CmdParams *cmdparams )
 {										   
 	channelstat *cs;
 
@@ -209,7 +227,7 @@
 	return NS_SUCCESS;
 }
 
-int ss_event_part( CmdParams *cmdparams )
+int ss_event_part( const CmdParams *cmdparams )
 {
 	channelstat *cs;
 
@@ -224,7 +242,7 @@
 	return NS_SUCCESS;
 }
 
-int ss_event_topic( CmdParams *cmdparams )
+int ss_event_topic( const CmdParams *cmdparams )
 {
 	channelstat *cs;
 
@@ -238,7 +256,7 @@
 	return NS_SUCCESS;
 }
 
-int ss_event_kick( CmdParams *cmdparams )
+int ss_event_kick( const CmdParams *cmdparams )
 {
 	channelstat *cs;
 
@@ -253,7 +271,7 @@
 	return NS_SUCCESS;
 }
 
-static void top10membershandler( channelstat *cs, void *v )
+static void top10membershandler( const channelstat *cs, const void *v )
 {
 	CmdParams *cmdparams = ( CmdParams * ) v;
 
@@ -261,7 +279,7 @@
 		cs->name, cs->c->users );
 }
 
-static void top10joinshandler( channelstat *cs, void *v )
+static void top10joinshandler( const channelstat *cs, const void *v )
 {
 	CmdParams *cmdparams = ( CmdParams * ) v;
 
@@ -269,7 +287,7 @@
 		cs->name, cs->users.alltime.runningtotal );
 }
 
-static void top10kickshandler( channelstat *cs, void *v )
+static void top10kickshandler( const channelstat *cs, const void *v )
 {
 	CmdParams *cmdparams = ( CmdParams * ) v;
 
@@ -277,7 +295,7 @@
 		cs->name, cs->kicks.alltime.runningtotal );
 }
 
-static void top10topicshandler( channelstat *cs, void *v )
+static void top10topicshandler( const channelstat *cs, const void *v )
 {
 	CmdParams *cmdparams = ( CmdParams * ) v;
 
@@ -285,7 +303,7 @@
 		cs->name, cs->topics.alltime.runningtotal );
 }
 
-int ss_cmd_channel( CmdParams *cmdparams )
+int ss_cmd_channel( const CmdParams *cmdparams )
 {
 	channelstat *cs;
 
@@ -400,10 +418,16 @@
 	return NS_SUCCESS;
 }
 
-void InitChannelStats( void )
+int InitChannelStats( void )
 {
 	channelstatlist = list_create( -1 );
+	if( !channelstatlist )
+	{
+		nlog( LOG_CRITICAL, "Unable to create channel stat list" );
+		return NS_FAILURE;
+	}
 	GetChannelList( AddChannel, NULL );
+	return NS_SUCCESS;
 }
 
 void FiniChannelStats( void )
@@ -423,7 +447,7 @@
 	list_destroy( channelstatlist );
 }
 
-void GetChannelStats( ChannelStatHandler handler, CHANNEL_SORT sortstyle, int maxcount, int ignorehidden, void *v )
+void GetChannelStats( const ChannelStatHandler handler, CHANNEL_SORT sortstyle, int maxcount, int ignorehidden, void *v )
 {
 	int i = 0;
 	lnode_t *ln;

Modified: trunk/modules/statserv/channel.h
==============================================================================
--- trunk/modules/statserv/channel.h	(original)
+++ trunk/modules/statserv/channel.h	Sat Aug 20 04:38:11 2005
@@ -46,24 +46,22 @@
 	statistic joins;
 }channelstat;
 
-extern list_t *channelstatlist;
+typedef void (*ChannelStatHandler)( const channelstat *cs, const void *v );
 
-typedef void (*ChannelStatHandler) (channelstat *cs, void *v );
-
-void GetChannelStats( ChannelStatHandler handler, CHANNEL_SORT sortstyle, int maxcount, int ignorehidden, void *v );
+void GetChannelStats( const ChannelStatHandler handler, CHANNEL_SORT sortstyle, int maxcount, int ignorehidden, const void *v );
 int topcurrentchannel( const void *key1, const void *key2 );
 int topjoinrunningtotalchannel( const void *key1, const void *key2 );
 int topkickrunningtotalchannel( const void *key1, const void *key2 );
 int toptopicrunningtotalchannel( const void *key1, const void *key2 );
-int ss_event_newchan( CmdParams *cmdparams );
-int ss_event_delchan( CmdParams *cmdparams );
-int ss_event_join( CmdParams *cmdparams );
-int ss_event_part( CmdParams *cmdparams );
-int ss_event_topic( CmdParams *cmdparams );
-int ss_event_kick( CmdParams *cmdparams );
-int ss_cmd_channel( CmdParams *cmdparams );
-int DelOldChan( void* );
-void InitChannelStats( void );
+int ss_event_newchan( const CmdParams *cmdparams );
+int ss_event_delchan( const CmdParams *cmdparams );
+int ss_event_join( const CmdParams *cmdparams );
+int ss_event_part( const CmdParams *cmdparams );
+int ss_event_topic( const CmdParams *cmdparams );
+int ss_event_kick( const CmdParams *cmdparams );
+int ss_cmd_channel( const CmdParams *cmdparams );
+int DelOldChan( void *v );
+int InitChannelStats( void );
 void FiniChannelStats( void );
 void SaveChanStats( void );
 void ResetChannelStatistics( void );

Modified: trunk/modules/statserv/htmlstats.c
==============================================================================
--- trunk/modules/statserv/htmlstats.c	(original)
+++ trunk/modules/statserv/htmlstats.c	Sat Aug 20 04:38:11 2005
@@ -102,7 +102,7 @@
 	os_fprintf( opf, "</center></html>\n" );
 }
 
-static void serverlisthandler( serverstat *ss, void *v )
+static void serverlisthandler( const serverstat *ss, const void *v )
 {
 	os_fprintf( opf, "<tr><td height=\"4\"></td>\n" );
 	os_fprintf( opf, "<td height=\"4\"><a href=#%s> %s( %s )</a></td></tr>\n",
@@ -116,7 +116,7 @@
 	os_fprintf( opf, "</table>" );
 }
 
-static void serverlistdetailhandler( serverstat *ss, void *v )
+static void serverlistdetailhandler( const serverstat *ss, const void *v )
 {
 	os_fprintf( opf, "<tr><th><a name=%s>Server:</th><th colspan = 2><b>%s</b></th></tr>\n",
 		ss->name, ss->name );
@@ -295,7 +295,7 @@
 	os_fprintf( opf, "</tr></table>\n" );
 }
 
-static void top10membershandler( channelstat *cs, void *v )
+static void top10membershandler( const channelstat *cs, const void *v )
 {
 	os_fprintf( opf, "<tr><td>%s</td><td align=right>%d</td></tr>\n",
 		cs->name, cs->c->users );
@@ -308,7 +308,7 @@
 	os_fprintf( opf, "</table>" );
 }
 
-static void top10joinshandler( channelstat *cs, void *v )
+static void top10joinshandler( const channelstat *cs, const void *v )
 {
 	os_fprintf( opf, "<tr><td>%s</td><td align=right>%d</td></tr>\n",
 		cs->name, cs->users.alltime.runningtotal );
@@ -321,7 +321,7 @@
 	os_fprintf( opf, "</table>" );
 }
 
-static void top10kickshandler( channelstat *cs, void *v )
+static void top10kickshandler( const channelstat *cs, const void *v )
 {
 	os_fprintf( opf, "<tr><td>%s</td><td align=right>%d</td></tr>\n",
 		cs->name, cs->kicks.alltime.runningtotal );
@@ -334,7 +334,7 @@
 	os_fprintf( opf, "</table>" );
 }
 
-static void top10topicshandler( channelstat *cs, void *v )
+static void top10topicshandler( const channelstat *cs, const void *v )
 {
 	os_fprintf( opf, "<tr><td>%s</td><td align=right>%d</td></tr>\n",
 		cs->name, cs->topics.alltime.runningtotal );
@@ -347,26 +347,20 @@
 	os_fprintf( opf, "</table>" );
 }
 
+static void HTMLClientVersionReport( const ss_ctcp_version *cv, const void *v )
+{
+	os_fprintf( opf, "<tr><td>%s</td><td align=right>%d</td></tr>\n",
+		cv->name, cv->users.current );
+}
+
 static void html_clientstats( void )
 {
-	ctcpversionstat *cv;
-	lnode_t *cn;
-	int i;
-	if( !list_is_sorted( versionstatlist, topcurrentversions ) ) {
-		list_sort( versionstatlist, topcurrentversions );
-	}
-	cn = list_first( versionstatlist );
 	os_fprintf( opf, "<table border = 0><tr><th>Version</th><th align=right>Count</th></tr>" );
-	for( i = 0; i < 10 && cn; i++ ) {
-		cv = lnode_get( cn );
-		os_fprintf( opf, "<tr><td>%s</td><td align=right>%d</td></tr>\n",
-			cv->name, cv->users.current );
-		cn = list_next( versionstatlist, cn );
-	}
+	GetClientStats( HTMLClientVersionReport, 10, NULL );
 	os_fprintf( opf, "</table>" );
 }
 
-void HTMLTLDReport( TLD *tld, void *v )
+static void HTMLTLDReport( const TLD *tld, const void *v )
 {
 	os_fprintf( opf, "<tr><td>%s</td><td>%s</td><td>%3d</td><td>%3d</td><td>%3d</td><td>%3d</td><td>%3d</td></tr>",
 		tld->tld, tld->country, tld->users.current, tld->users.daily.runningtotal, tld->users.weekly.runningtotal, tld->users.monthly.runningtotal, tld->users.alltime.runningtotal );
@@ -379,7 +373,7 @@
 	os_fprintf( opf, "</table>" );
 }
 
-void get_map( char *uplink, int level )
+static void get_map( char *uplink, int level )
 {
 #define MAPBUFSIZE 512
 	static char buf[MAPBUFSIZE];

Modified: trunk/modules/statserv/htmlstats.h
==============================================================================
--- trunk/modules/statserv/htmlstats.h	(original)
+++ trunk/modules/statserv/htmlstats.h	Sat Aug 20 04:38:11 2005
@@ -24,7 +24,7 @@
 #ifndef _HTMLSTATS_H_
 #define _HTMLSTATS_H_
 
-int ss_cmd_forcehtml (CmdParams *cmdparams);
-int ss_html (void *);
+int ss_cmd_forcehtml( const CmdParams *cmdparams );
+int ss_html( void *v );
 
 #endif /* _HTMLSTATS_H_ */

Modified: trunk/modules/statserv/network.c
==============================================================================
--- trunk/modules/statserv/network.c	(original)
+++ trunk/modules/statserv/network.c	Sat Aug 20 04:38:11 2005
@@ -30,6 +30,15 @@
 
 networkstat networkstats;
 
+/** @brief AverageNetworkStatistics 
+ *
+ *  Average network statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
+
 void AverageNetworkStatistics (void)
 {
 	AverageStatistic (&networkstats.servers);
@@ -39,6 +48,15 @@
 	AverageStatistic (&networkstats.kills);
 }
 
+/** @brief ResetNetworkStatistics
+ *
+ *  Reset network statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
+
 void ResetNetworkStatistics (void)
 {
 	ResetStatistic (&networkstats.servers);
@@ -107,7 +125,7 @@
 	DecStatistic (&networkstats.kills);
 }
 
-int ss_cmd_netstats (CmdParams *cmdparams)
+int ss_cmd_netstats (const CmdParams *cmdparams)
 {
 	SET_SEGV_LOCATION();
 	irc_prefmsg(ss_bot, cmdparams->source, "Network Statistics:-----");
@@ -130,7 +148,7 @@
 	return NS_SUCCESS;
 }
 
-int ss_cmd_daily (CmdParams *cmdparams)
+int ss_cmd_daily (const CmdParams *cmdparams)
 {
 	SET_SEGV_LOCATION();
 	irc_prefmsg(ss_bot, cmdparams->source, "Daily Network Statistics:");

Modified: trunk/modules/statserv/network.h
==============================================================================
--- trunk/modules/statserv/network.h	(original)
+++ trunk/modules/statserv/network.h	Sat Aug 20 04:38:11 2005
@@ -34,24 +34,24 @@
 
 extern networkstat networkstats;
 
-void AddNetworkServer (void);
-void AddNetworkChannel (void);
-void AddNetworkUser (void);
-void AddNetworkOper (void);
-void AddNetworkKill (void);
-void DelNetworkServer (void);
-void DelNetworkChannel (void);
-void DelNetworkUser (void);
-void DelNetworkOper (void);
-void DelNetworkKill (void);
-int ss_cmd_netstats (CmdParams *cmdparams);
-int ss_cmd_daily (CmdParams *cmdparams);
+void AddNetworkServer( void );
+void AddNetworkChannel( void );
+void AddNetworkUser( void );
+void AddNetworkOper( void );
+void AddNetworkKill( void );
+void DelNetworkServer( void );
+void DelNetworkChannel( void );
+void DelNetworkUser( void );
+void DelNetworkOper( void );
+void DelNetworkKill( void );
+int ss_cmd_netstats( const CmdParams *cmdparams );
+int ss_cmd_daily( const CmdParams *cmdparams );
 
-void AverageNetworkStatistics (void);
-void ResetNetworkStatistics (void);
-void InitNetworkStats (void);
-void FiniNetworkStats (void);
-void SaveNetworkStats (void);
+void AverageNetworkStatistics( void );
+void ResetNetworkStatistics( void );
+void InitNetworkStats( void );
+void FiniNetworkStats( void );
+void SaveNetworkStats( void );
 
 
 #endif /* _NETWORK_H_ */

Modified: trunk/modules/statserv/server.c
==============================================================================
--- trunk/modules/statserv/server.c	(original)
+++ trunk/modules/statserv/server.c	Sat Aug 20 04:38:11 2005
@@ -29,7 +29,16 @@
 
 #define SERVER_TABLE	"Server"
 
-hash_t *serverstathash;
+static hash_t *serverstathash;
+
+/** @brief AverageServerStatistics
+ *
+ *  Average server statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
 
 void AverageServerStatistics (void)
 {
@@ -45,6 +54,15 @@
 	}
 }
 
+/** @brief ResetServerStatistics
+ *
+ *  Reset server statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
+
 void ResetServerStatistics (void)
 {
 	serverstat *ss;
@@ -75,7 +93,7 @@
 	return ss;
 }
 
-static serverstat *findserverstats (char *name)
+static serverstat *findserverstats (const char *name)
 {
 	serverstat *stats;
 
@@ -86,7 +104,7 @@
 	return stats;
 }
 
-void AddServerUser (Client *u)
+void AddServerUser( const  Client *u )
 {
 	serverstat *ss;
 
@@ -97,7 +115,7 @@
 	}
 }
 
-void DelServerUser (Client *u)
+void DelServerUser (const Client *u)
 {
 	serverstat *ss;
 
@@ -105,7 +123,7 @@
 	DecStatistic (&ss->users);
 }
 
-void AddServerOper (Client *u)
+void AddServerOper (const Client *u)
 {
 	serverstat *ss;
 
@@ -116,7 +134,7 @@
 	}
 }
 
-void DelServerOper (Client *u)
+void DelServerOper (const Client *u)
 {
 	serverstat *ss;
 
@@ -124,7 +142,7 @@
 	DecStatistic (&ss->opers);
 }
 
-static int AddServerStat (Client *s, void *v)
+static int AddServerStat (Client *s, const void *v)
 {
 	serverstat *ss;
 
@@ -140,7 +158,7 @@
 	return NS_FALSE;
 }
 
-int ss_event_server (CmdParams *cmdparams)
+int ss_event_server (const CmdParams *cmdparams)
 {
 	AddServerStat (cmdparams->source, NULL);
 	return NS_SUCCESS;
@@ -157,14 +175,14 @@
 	ss->s = NULL;
 }
 
-int ss_event_squit (CmdParams *cmdparams)
+int ss_event_squit (const CmdParams *cmdparams)
 {
 	DelServerStat (cmdparams->source);
 	DelNetworkServer ();
 	return NS_SUCCESS;
 }
 
-static void UpdatePingStats (Client* s)
+static void UpdatePingStats (const Client* s)
 {
 	serverstat *ss;
 
@@ -185,7 +203,7 @@
 	}
 }
 
-int ss_event_pong (CmdParams *cmdparams)
+int ss_event_pong (const CmdParams *cmdparams)
 {
 	/* we don't want negative pings! */
 	if (cmdparams->source->server->ping > 0) {
@@ -194,7 +212,7 @@
 	return NS_SUCCESS;
 }
 
-static void makemap(char *uplink, Client * u, int level)
+static void makemap(const char *uplink, const Client * u, int level)
 {
 	static char buf[256];
 	hscan_t hs;
@@ -245,7 +263,7 @@
 	}
 }
 
-int ss_cmd_map (CmdParams *cmdparams)
+int ss_cmd_map (const CmdParams *cmdparams)
 {
 	SET_SEGV_LOCATION();
 	irc_prefmsg (ss_bot, cmdparams->source, "%-40s      %-10s %-10s %-10s",
@@ -255,7 +273,7 @@
 	return NS_SUCCESS;
 }
 
-int ss_cmd_server_list (CmdParams *cmdparams)
+int ss_cmd_server_list (const CmdParams *cmdparams)
 {
 	serverstat *ss;
 	hscan_t hs;
@@ -272,7 +290,7 @@
 	return NS_SUCCESS;
 }
 
-static int ss_server_del (CmdParams *cmdparams)
+static int ss_server_del (const CmdParams *cmdparams)
 {
 	serverstat *ss;
 	hnode_t *node;
@@ -303,7 +321,7 @@
 	return NS_SUCCESS;
 }
 
-static int ss_server_copy (CmdParams *cmdparams)
+static int ss_server_copy (const CmdParams *cmdparams)
 {
 	serverstat *dest;
 	serverstat *src;
@@ -338,7 +356,7 @@
 	return NS_SUCCESS;
 }
 
-static int ss_cmd_server_stats (CmdParams *cmdparams)
+static int ss_cmd_server_stats (const CmdParams *cmdparams)
 {
 	serverstat *ss;
 	Client *s;
@@ -401,7 +419,7 @@
 }
 
 
-int ss_cmd_server (CmdParams *cmdparams)
+int ss_cmd_server (const CmdParams *cmdparams)
 {
 	SET_SEGV_LOCATION();
 	if (!ircstrcasecmp (cmdparams->av[0], "LIST")) {
@@ -439,7 +457,7 @@
 	}
 }
 
-int LoadServerStats(void *data, int size) 
+int LoadServerStats(const void *data, const int size) 
 {
 	serverstat *ss;
 
@@ -455,11 +473,17 @@
 	return NS_FALSE;
 }
 
-void InitServerStats (void)
+int InitServerStats (void)
 {
-	serverstathash = hash_create (-1, 0, 0);
+	serverstathash = hash_create( -1, 0, 0 );
+	if( !serverstathash )
+	{
+		nlog( LOG_CRITICAL, "Unable to create server hash list" );
+		return NS_FAILURE;
+	}
 	DBAFetchRows (SERVER_TABLE, LoadServerStats);
 	GetServerList (AddServerStat, NULL);
+	return NS_SUCCESS;
 }
 
 void FiniServerStats (void)
@@ -480,7 +504,7 @@
 	hash_destroy(serverstathash);
 }
 
-void GetServerStats (ServerStatHandler handler, void *v)
+void GetServerStats (const ServerStatHandler handler, const void *v)
 {
 	serverstat *ss;
 	hnode_t *sn;

Modified: trunk/modules/statserv/server.h
==============================================================================
--- trunk/modules/statserv/server.h	(original)
+++ trunk/modules/statserv/server.h	Sat Aug 20 04:38:11 2005
@@ -40,25 +40,23 @@
 	time_t ts_highest_ping;
 }serverstat;
 
-extern hash_t *serverstathash;
+typedef void( *ServerStatHandler )( const serverstat *cs, const void *v );
 
-typedef void (*ServerStatHandler) (serverstat *cs, void *v);
+void GetServerStats( const ServerStatHandler handler, const void *v );
 
-void GetServerStats (ServerStatHandler handler, void *v);
-
-int ss_event_server (CmdParams *cmdparams);
-int ss_event_squit (CmdParams *cmdparams);
-int ss_event_pong (CmdParams *cmdparams);
-int ss_cmd_map (CmdParams *cmdparams);
-int ss_cmd_server (CmdParams *cmdparams);
-void InitServerStats (void);
-void FiniServerStats (void);
-void SaveServerStats (void);
-void AddServerUser (Client *u);
-void DelServerUser (Client *u);
-void AddServerOper (Client *u);
-void DelServerOper (Client *u);
-void AverageServerStatistics (void);
-void ResetServerStatistics (void);
+int ss_event_server( const CmdParams *cmdparams );
+int ss_event_squit( const CmdParams *cmdparams );
+int ss_event_pong( const CmdParams *cmdparams );
+int ss_cmd_map( const CmdParams *cmdparams );
+int ss_cmd_server( const CmdParams *cmdparams );
+int InitServerStats( void );
+void FiniServerStats( void );
+void SaveServerStats( void );
+void AddServerUser( const Client *u );
+void DelServerUser( const Client *u );
+void AddServerOper( const Client *u );
+void DelServerOper( const Client *u );
+void AverageServerStatistics( void );
+void ResetServerStatistics( void );
 
 #endif /* _SERVER_H_ */

Modified: trunk/modules/statserv/ss_help.c
==============================================================================
--- trunk/modules/statserv/ss_help.c	(original)
+++ trunk/modules/statserv/ss_help.c	Sat Aug 20 04:38:11 2005
@@ -31,9 +31,9 @@
 	NULL
 };
 
-const char *ss_help_userversion[] = {
+const char *ss_help_ctcpversion[] = {
 	"Display client versions statistics",
-	"Syntax: \2USERVERSION [limit]\2",
+	"Syntax: \2ctcpversion [limit]\2",
 	"",
 	"Display statistics on the client versions used on the network",
 	"optional parameter <limit> specifies how many results to show.",

Modified: trunk/modules/statserv/stats.h
==============================================================================
--- trunk/modules/statserv/stats.h	(original)
+++ trunk/modules/statserv/stats.h	Sat Aug 20 04:38:11 2005
@@ -42,24 +42,24 @@
 	statisticentry monthly;
 } statistic;
 
-void AverageStatisticEntry (statisticentry *stat, unsigned int current);
-void AverageStatistic (statistic *stat);
-int AverageStatistics (void *);
-void ResetStatisticEntry (statisticentry *stat, unsigned int current);
-void ResetStatistic (statistic *stat);
-int ResetStatistics (void *);
-int IncStatisticEntry (statisticentry *stat, unsigned int current);
-int IncStatistic (statistic *stat);
-void DecStatisticEntry (statisticentry *stat, unsigned int current);
-void DecStatistic (statistic *stat);
-int SetStatisticEntry (statisticentry *stat, unsigned int current, int diff);
-int SetStatistic (statistic *stat, int current);
-void PreSaveStatistic (statistic *stat);
-void PostLoadStatistic (statistic *stat);
+void AverageStatisticEntry( statisticentry *stat, unsigned int current );
+void AverageStatistic( statistic *stat );
+int AverageStatistics( void *v );
+void ResetStatisticEntry( statisticentry *stat, unsigned int current );
+void ResetStatistic( statistic *stat );
+int ResetStatistics( void *v );
+int IncStatisticEntry( statisticentry *stat, unsigned int current );
+int IncStatistic( statistic *stat );
+void DecStatisticEntry( statisticentry *stat, unsigned int current );
+void DecStatistic( statistic *stat );
+int SetStatisticEntry( statisticentry *stat, unsigned int current, int diff );
+int SetStatistic( statistic *stat, int current );
+void PreSaveStatistic( statistic *stat );
+void PostLoadStatistic( statistic *stat );
 
-int GetAllTimePercent (statistic *stat);
-int GetDailyPercent (statistic *stat);
-int GetWeeklyPercent (statistic *stat);
-int GetMonthlyPercent (statistic *stat);
+int GetAllTimePercent( statistic *stat );
+int GetDailyPercent( statistic *stat );
+int GetWeeklyPercent( statistic *stat );
+int GetMonthlyPercent( statistic *stat );
 
 #endif /* _STATS_H_ */

Modified: trunk/modules/statserv/statserv.c
==============================================================================
--- trunk/modules/statserv/statserv.c	(original)
+++ trunk/modules/statserv/statserv.c	Sat Aug 20 04:38:11 2005
@@ -100,7 +100,7 @@
 	{"TLDMAP",		ss_cmd_tldmap,		0, 	0,		ss_help_tldmap},
 	{"OPERLIST",	ss_cmd_operlist,	0, 	0,		ss_help_operlist},
 	{"BOTLIST",		ss_cmd_botlist,		0, 	0,		ss_help_botlist},
-	{"USERVERSION",	ss_cmd_userversion,	0,	0,		ss_help_userversion},
+	{"CTCPVERSION",	ss_cmd_ctcpversion,	0,	0,		ss_help_ctcpversion},
 	{"FORCEHTML",	ss_cmd_forcehtml,	0, 	NS_ULEVEL_ADMIN,	ss_help_forcehtml},
 	NS_CMD_END()
 };
@@ -157,17 +157,22 @@
 {
 	SET_SEGV_LOCATION();
 	StatServ.shutdown = 0;
-	ModuleConfig(ss_settings);
-	if (StatServ.html && StatServ.htmlpath[0] == 0) {
+	ModuleConfig( ss_settings );
+	if( StatServ.html && StatServ.htmlpath[0] == 0 )
+	{
 		nlog(LOG_NOTICE, "HTML stats disabled as HTML_PATH is not set");
 		StatServ.html = 0;
 	}
-	InitNetworkStats ();
-	InitChannelStats ();
-	InitServerStats ();
-	InitVersionStats ();
-	InitTLDStatistics ();	
-	InitUserStats ();	
+	InitNetworkStats();
+	if( InitChannelStats() == NS_FAILURE )
+		return NS_FAILURE;
+	if( InitServerStats() == NS_FAILURE )
+		return NS_FAILURE;
+	if( InitVersionStats() == NS_FAILURE )
+		return NS_FAILURE;
+	if( InitTLDStatistics() == NS_FAILURE )
+		return NS_FAILURE;
+	InitUserStats();	
 	return NS_SUCCESS;
 }
 
@@ -187,9 +192,8 @@
 	/* RTA init must be in synch since core does not start 
 	   RTA during the init cycle when NeoStats first boots */
 	ss_bot = AddBot (&ss_botinfo);
-	if (!ss_bot) {
+	if (!ss_bot)
 		return NS_FAILURE;
-	}
 	/* Timer to save the database */
 	AddTimer (TIMER_TYPE_INTERVAL, SaveStats, "SaveStats", DBSAVETIME, NULL);
 	/* Timer to output html */
@@ -221,10 +225,10 @@
 int ModFini (void)
 {
 	StatServ.shutdown = 1;
-	FiniServerStats ();
-	FiniChannelStats ();
-	FiniTLDStatistics ();
-	FiniVersionStats ();
+	FiniServerStats();
+	FiniChannelStats();
+	FiniTLDStatistics();
+	FiniVersionStats();
 	FiniNetworkStats();
 	return NS_SUCCESS;
 }

Modified: trunk/modules/statserv/statserv.h
==============================================================================
--- trunk/modules/statserv/statserv.h	(original)
+++ trunk/modules/statserv/statserv.h	Sat Aug 20 04:38:11 2005
@@ -74,9 +74,7 @@
 extern const char *ss_help_set_channeltime[];
 extern const char *ss_help_set_lagalert[];
 extern const char *ss_help_set_recordalert[];
-extern const char *ss_help_userversion[];
-
-int sortusers(const void *v, const void *v2);
+extern const char *ss_help_ctcpversion[];
 
 void announce_record (const char *msg, ...);
 void announce_lag(const char *msg, ...);

Modified: trunk/modules/statserv/tld.c
==============================================================================
--- trunk/modules/statserv/tld.c	(original)
+++ trunk/modules/statserv/tld.c	Sat Aug 20 04:38:11 2005
@@ -23,6 +23,10 @@
 ** $Id$
 */
 
+/*  TODO:
+ *  - AverageTLDStatistics
+ */
+
 #include "neostats.h"
 #include "statserv.h"
 #include "stats.h"
@@ -34,78 +38,146 @@
 #define TLD_TABLE		"TLD"
 #define UNKNOWN_COUNTRY_CODE	"???"
 
-list_t *tldstatlist;
-GeoIP *gi;
+static list_t *tldstatlist;
+static GeoIP *gi;
+
+/** @brief ResetTLDStatistics
+ *
+ *  Reset TLD statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
 
-void ResetTLDStatistics (void) 
+void ResetTLDStatistics( void ) 
 {
 	lnode_t *tn, *tn2;
 	TLD *t;
 	
-	tn = list_first(tldstatlist);
-	while (tn != NULL) {
-		t = lnode_get(tn);
-		ResetStatistic (&t->users);
-		if (t->users.current == 0) {
+	tn = list_first( tldstatlist );
+	while( tn != NULL ) {
+		t = lnode_get( tn );
+		ResetStatistic( &t->users );
+		if( t->users.current == 0 ) {
 			/* don't delete the tld entry ??? as its our "unknown" entry */
-			if (ircstrcasecmp(t->tld, UNKNOWN_COUNTRY_CODE)) {
-				tn2 = list_next(tldstatlist, tn);
-				ns_free(t);
-				list_delete(tldstatlist, tn);
-				lnode_destroy(tn);
+			if( ircstrcasecmp( t->tld, UNKNOWN_COUNTRY_CODE ) ) {
+				tn2 = list_next( tldstatlist, tn );
+				ns_free( t );
+				list_delete( tldstatlist, tn );
+				lnode_destroy( tn );
 				tn = tn2;
 				continue;
 			}
 		}
-		tn = list_next(tldstatlist, tn);
+		tn = list_next( tldstatlist, tn );
 	}
 }
 
-void AverageTLDStatistics (void)
+/** @brief AverageTLDStatistics
+ *
+ *  Average TLD statistics
+ *
+ *  @param none
+ *
+ *  @return none
+ */
+
+void AverageTLDStatistics( void )
 {
 }
 
-static int findcc(const void *v, const void *cc) {
-	const TLD *t = (void *)v;
-	return (ircstrcasecmp(t->tld, (char *)cc));
+/** @brief FindTLD
+ *
+ *  list find helper
+ *
+ *  @param key1
+ *  @param key2
+ *
+ *  @return results of comparison
+ */
+
+static int FindTLD( const void *v, const void *cc )
+{
+	const TLD *t = ( void * )v;
+	return( ircstrcasecmp( t->tld, ( char * )cc ) );
 }
-int sortusers(const void *v, const void *v2) {
-	const TLD *t = (void *)v;
-	const TLD *t2 = (void *)v2;
-	return (t2->users.daily.max - t->users.daily.max);
+
+/** @brief sortusers
+ *
+ *  list sorting helper
+ *
+ *  @param key1
+ *  @param key2
+ *
+ *  @return results of comparison
+ */
+
+static int sortusers( const void *v, const void *v2 )
+{
+	const TLD *t = ( void * )v;
+	const TLD *t2 = ( void * )v2;
+	return( t2->users.daily.max - t->users.daily.max );
 }
 
-void GetTLDStats (TLDStatHandler handler, void *v)
+/** @brief TLDReport
+ *
+ *  Report TLD
+ *
+ *  @param cv pointer to version to report
+ *  @param v pointer to client to send to
+ *
+ *  @return none
+ */
+
+void TLDReport( const TLD *tld, const void *v )
 {
-	TLD *t;
+	irc_prefmsg( ss_bot, ( Client * ) v, 
+		"%3s \2%3d\2( %d%% ) -> %s ---> Daily Total: %d",
+		tld->tld, tld->users.alltime.max, ( int )( ( float ) tld->users.current / ( float ) networkstats.users.current ) * 100,
+		tld->country, tld->users.current );
+}
+
+/** @brief GetTLDStats
+ *
+ *  Walk through list passing each TLD to handler
+ *
+ *  @param handler pointer to handler function
+ *  @param v pointer to client to send to
+ *
+ *  @return none
+ */
+
+void GetTLDStats( const TLDStatHandler handler, const void *v )
+{
+	const TLD *t;
 	lnode_t *tn;
 	
-	list_sort (tldstatlist, sortusers);
-	tn = list_first (tldstatlist);
-	while (tn) {
-		t = lnode_get (tn);
-		handler (t, v);
-		tn = list_next (tldstatlist, tn);
+	list_sort( tldstatlist, sortusers );
+	tn = list_first( tldstatlist );
+	while( tn )
+	{
+		t = lnode_get( tn );
+		handler( t, v );
+		tn = list_next( tldstatlist, tn );
 	}
 }
 
-void TLDReport (TLD *tld, void *v)
-{
-	Client *targetuser;
-
-	targetuser = (Client *) v;
-	irc_prefmsg(ss_bot, targetuser, 
-		"%3s \2%3d\2 (%d%%) -> %s ---> Daily Total: %d",
-		tld->tld, tld->users.alltime.max, (int) ((float) tld->users.current / (float) networkstats.users.current) * 100,
-		tld->country, tld->users.current);
-}
+/** @brief ss_cmd_tldmap
+ *
+ *  TLDMAP command handler
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
 
-int ss_cmd_tldmap(CmdParams *cmdparams)
+int ss_cmd_tldmap( const CmdParams *cmdparams )
 {
 	SET_SEGV_LOCATION();
-	irc_prefmsg(ss_bot, cmdparams->source, "Top Level Domain Statistics:");
-	GetTLDStats (TLDReport, (void *)cmdparams->source);
-	irc_prefmsg(ss_bot, cmdparams->source, "End of list.");
+	irc_prefmsg( ss_bot, cmdparams->source, "Top Level Domain Statistics:" );
+	GetTLDStats( TLDReport, ( void * )cmdparams->source );
+	irc_prefmsg( ss_bot, cmdparams->source, "End of list." );
 	return NS_SUCCESS;
 }
 
@@ -117,90 +189,136 @@
  *
  *  @return none
  */
-void DelTLDUser (Client * u)
+
+void DelTLDUser( const Client * u )
 {
 	const char *country_code;
 	TLD *t = NULL;
 	
 	SET_SEGV_LOCATION();
-	if (!gi) {
+	if( !gi )
 		return;
-	}
-	country_code = GeoIP_country_code_by_addr(gi, u->hostip);
-	if (country_code) {
-		t = lnode_find (tldstatlist, country_code, findcc);
-	} else {
-		t = lnode_find (tldstatlist, UNKNOWN_COUNTRY_CODE, findcc);
-	}
-	DecStatistic (&t->users);		
+	country_code = GeoIP_country_code_by_addr( gi, u->hostip );
+	if( country_code )
+		t = lnode_find( tldstatlist, country_code, FindTLD );
+	else
+		t = lnode_find( tldstatlist, UNKNOWN_COUNTRY_CODE, FindTLD );
+	DecStatistic( &t->users );		
 }
 
-void AddTLDUser (Client *u)
+/** @brief AddTLDUser
+ *
+ *  Add a TLD to the current stats
+ *
+ *  @param client to add to TLD list
+ *
+ *  @return none
+ */
+
+void AddTLDUser( const Client *u )
 {
 	const char *country_name;
 	const char *country_code;
 	TLD *t = NULL;
 
-	if (!gi) {
+	if( !gi )
 		return;
-	}	
-	country_code = GeoIP_country_code_by_addr(gi, u->hostip);
-	if (country_code) {
-		t = lnode_find (tldstatlist, country_code, findcc);
-		if (!t) {
-			country_name = GeoIP_country_name_by_addr(gi, u->hostip);
-			t = ns_calloc (sizeof(TLD));
-			strlcpy(t->tld, country_code, 5);
-			strlcpy(t->country, country_name, 32);
-			lnode_create_append (tldstatlist, t);
+	country_code = GeoIP_country_code_by_addr( gi, u->hostip );
+	if( country_code )
+	{
+		t = lnode_find( tldstatlist, country_code, FindTLD );
+		if( !t )
+		{
+			country_name = GeoIP_country_name_by_addr( gi, u->hostip );
+			t = ns_calloc( sizeof( TLD ) );
+			strlcpy( t->tld, country_code, 5 );
+			strlcpy( t->country, country_name, 32 );
+			lnode_create_append( tldstatlist, t );
 		}
-	} else {
-		t = lnode_find (tldstatlist, UNKNOWN_COUNTRY_CODE, findcc);
 	}
-	IncStatistic (&t->users);
+	else
+	{
+		t = lnode_find( tldstatlist, UNKNOWN_COUNTRY_CODE, FindTLD );
+	}
+	IncStatistic( &t->users );
 }
 	
-/** @brief AddTLD
+/** @brief ss_event_nickip
  *
- *  Add a TLD to the current stats
+ *  NICKIP event handler
  *
- *  @param client to add to TLD list
+ *  @param cmdparams
  *
- *  @return none
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
  */
-int ss_event_nickip (CmdParams *cmdparams)
+
+int ss_event_nickip( const CmdParams *cmdparams )
 {
 	SET_SEGV_LOCATION();
-	AddTLDUser (cmdparams->source);
+	AddTLDUser( cmdparams->source );
 	return NS_SUCCESS;
 }
 
-void SaveTLDStats (void)
+/** @brief SaveTLDStats
+ *
+ *  Save TLD stats
+ *
+ *  @param none
+ *
+ *  @return none
+ */
+
+void SaveTLDStats( void )
 {
 	lnode_t *tn;
 	TLD *t;
 	
-	tn = list_first(tldstatlist);
-	while (tn != NULL) {
-		t = lnode_get(tn);
-		DBAStore (TLD_TABLE, t->tld, (void *)t, sizeof(TLD));
-		tn = list_next(tldstatlist, tn);
+	tn = list_first( tldstatlist );
+	while( tn != NULL )
+	{
+		t = lnode_get( tn );
+		DBAStore( TLD_TABLE, t->tld, ( void * )t, sizeof( TLD ) );
+		tn = list_next( tldstatlist, tn );
 	}
 }
 
-int new_tld( void *data, int size )
+/** @brief new_tld
+ *
+ *  Table load handler
+ *
+ *  @param data pointer to table row data
+ *  @param size of loaded data
+ *
+ *  @return
+ */
+
+static int new_tld( const void *data, int size )
 {
 	TLD *t;
 
-	t = ns_calloc (sizeof (TLD));
-	os_memcpy (t, data, sizeof(TLD));
-	lnode_create_append (tldstatlist, t);
+	if( size != sizeof( TLD ) )
+	{
+		nlog( LOG_CRITICAL, "TLD data size invalid" );		
+		return NS_FALSE;
+	}
+	t = ns_calloc( sizeof( TLD ) );
+	os_memcpy( t, data, sizeof( TLD ) );
+	lnode_create_append( tldstatlist, t );
 	return NS_FALSE;
 }
 
-int LoadTLDStats (void)
+/** @brief LoadTLDStats
+ *
+ *  Load TLD statistics 
+ *
+ *  @param none
+ *
+ *  @return NS_SUCCESS
+ */
+
+int LoadTLDStats( void )
 {
-	DBAFetchRows (TLD_TABLE, new_tld);
+	DBAFetchRows( TLD_TABLE, new_tld );
 	return NS_SUCCESS;
 }
 
@@ -210,31 +328,40 @@
  *
  *  @param none
  *
- *  @return none
+ *  @return NS_SUCCESS if suceeds else NS_FAILURE
  */
-void InitTLDStatistics (void)
+
+int InitTLDStatistics( void )
 {
 	TLD *t;
 
 	SET_SEGV_LOCATION();
-	tldstatlist = list_create(-1);
+	tldstatlist = list_create( -1 );
+	if( !tldstatlist )
+	{
+		nlog( LOG_CRITICAL, "Unable to create TLD list" );
+		return NS_FAILURE;
+	}
 	gi = NULL;
 	/* now open the various DB's */
-	if (GeoIP_db_avail(GEOIP_COUNTRY_EDITION)) {
-		gi = GeoIP_open_type(GEOIP_COUNTRY_EDITION, GEOIP_STANDARD);
-		if (gi != NULL) {
-			nlog(LOG_NOTICE, "Loaded %s GeoIP Database", GeoIPDBDescription[GEOIP_COUNTRY_EDITION]);
-		} else {
-			nlog(LOG_WARNING, "%s Database may be corrupt", GeoIPDBDescription[GEOIP_COUNTRY_EDITION]);
-		}
-	} else {
-		nlog(LOG_WARNING, "GeoIP Database is not available. TLD stats will not be available");
+	if( GeoIP_db_avail( GEOIP_COUNTRY_EDITION ) )
+	{
+		gi = GeoIP_open_type( GEOIP_COUNTRY_EDITION, GEOIP_STANDARD );
+		if( gi != NULL )
+			nlog( LOG_NOTICE, "Loaded %s GeoIP Database", GeoIPDBDescription[GEOIP_COUNTRY_EDITION] );
+		else
+			nlog( LOG_WARNING, "%s Database may be corrupt", GeoIPDBDescription[GEOIP_COUNTRY_EDITION] );
+	}
+	else
+	{
+		nlog( LOG_WARNING, "GeoIP Database is not available. TLD stats will not be available" );
 	}
-	t = ns_calloc(sizeof(TLD));
-	ircsnprintf(t->tld, 5, UNKNOWN_COUNTRY_CODE);
-	strlcpy(t->country, "Unknown", 8);
-	lnode_create_append (tldstatlist, t);
-	LoadTLDStats ();
+	t = ns_calloc( sizeof( TLD ) );
+	ircsnprintf( t->tld, 5, UNKNOWN_COUNTRY_CODE );
+	strlcpy( t->country, "Unknown", 8 );
+	lnode_create_append( tldstatlist, t );
+	LoadTLDStats();
+	return NS_SUCCESS;
 }
 
 /** @brief FiniTLDStatistics
@@ -245,12 +372,14 @@
  *
  *  @return none
  */
-void FiniTLDStatistics(void) 
+
+void FiniTLDStatistics( void ) 
 {
-	SaveTLDStats ();
-	if (gi) {
-		GeoIP_delete (gi);
+	SaveTLDStats();
+	if( gi )
+	{
+		GeoIP_delete( gi );
 		gi = NULL;
 	}
-	list_destroy_auto (tldstatlist);
+	list_destroy_auto( tldstatlist );
 }

Modified: trunk/modules/statserv/tld.h
==============================================================================
--- trunk/modules/statserv/tld.h	(original)
+++ trunk/modules/statserv/tld.h	Sat Aug 20 04:38:11 2005
@@ -30,18 +30,16 @@
 	statistic users;
 }TLD;
 
-typedef void (*TLDStatHandler) (TLD *tld, void *v);
+typedef void (*TLDStatHandler)( const TLD *tld, const void *v );
 
-extern list_t *tldstatlist;
-
-void AddTLDUser (Client * u);
-void DelTLDUser (Client * u);
-int ss_cmd_tldmap (CmdParams *cmdparams);
-int ss_event_nickip (CmdParams *cmdparams);
-void InitTLDStatistics (void);
-void FiniTLDStatistics (void);
-void GetTLDStats (TLDStatHandler handler, void *v);
-void AverageTLDStatistics (void);
-void ResetTLDStatistics (void);
+void AddTLDUser( const Client * u );
+void DelTLDUser( const Client * u );
+int ss_cmd_tldmap(const CmdParams *cmdparams );
+int ss_event_nickip( const CmdParams *cmdparams );
+int InitTLDStatistics( void );
+void FiniTLDStatistics( void );
+void GetTLDStats( const TLDStatHandler handler, const void *v );
+void AverageTLDStatistics( void );
+void ResetTLDStatistics( void );
 
 #endif /* _TLD_H_ */

Modified: trunk/modules/statserv/user.c
==============================================================================
--- trunk/modules/statserv/user.c	(original)
+++ trunk/modules/statserv/user.c	Sat Aug 20 04:38:11 2005
@@ -28,20 +28,69 @@
 #include "server.h"
 #include "tld.h"
 
-int ss_event_mode(CmdParams *cmdparams)
+/** @brief AddUser
+ *
+ *  Add user to statserv
+ *
+ *  @param u pointer to client to add
+ *  @param v not used
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+static int AddUser( const Client *u, const void *v )
+{
+	SET_SEGV_LOCATION();
+	AddServerUser( u );
+	AddNetworkUser();
+	AddTLDUser( u );
+	return NS_FALSE;
+}
+
+/** @brief DelUser
+ *
+ *  Delete user from statserv
+ *
+ *  @param u pointer to client to delete
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+static void DelUser( const Client *u )
+{
+	if( IsOper( u ) )
+	{
+		dlog( DEBUG2, "Decreasing OperCount on %s due to signoff", u->uplink->name );
+		DelServerOper( u );
+	}
+	DelServerUser( u );
+	DelNetworkUser();
+	DelTLDUser( u );
+}
+
+/** @brief ss_event_mode
+ *
+ *  MODE event handler
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+int ss_event_mode( const CmdParams *cmdparams )
 {
 	int add = 1;
 	serverstat *ss;
 	char *modes = cmdparams->param;
 
 	SET_SEGV_LOCATION();
-	ss = GetServerModValue (cmdparams->source->uplink);
-	if (!ss) {
-		nlog (LOG_WARNING, "Unable to find stats for %s", cmdparams->source->uplink->name);
+	ss = GetServerModValue( cmdparams->source->uplink );
+	if( !ss ) {
+		nlog( LOG_WARNING, "Unable to find stats for %s", cmdparams->source->uplink->name );
 		return NS_SUCCESS;
 	}
-	while (*modes) {
-		switch (*modes) {
+	while( *modes ) {
+		switch( *modes ) {
 		case '+':
 			add = 1;
 			break;
@@ -50,15 +99,15 @@
 			break;
 		case 'O':
 		case 'o':
-			if (add) {
-				dlog(DEBUG1, "Increasing OperCount for %s", ss->name);
-				AddNetworkOper ();
-				AddServerOper (cmdparams->source);
+			if( add ) {
+				dlog( DEBUG1, "Increasing OperCount for %s", ss->name );
+				AddNetworkOper();
+				AddServerOper( cmdparams->source );
 			} else {
-				if (IsOper(cmdparams->source)) {
-					dlog(DEBUG1, "Decreasing OperCount for %s", ss->name);
-					DelNetworkOper ();
-					DelServerOper (cmdparams->source);
+				if( IsOper( cmdparams->source ) ) {
+					dlog( DEBUG1, "Decreasing OperCount for %s", ss->name );
+					DelNetworkOper();
+					DelServerOper( cmdparams->source );
 				}
 			}
 			break;
@@ -70,133 +119,201 @@
 	return NS_SUCCESS;
 }
 
-static int AddUser (Client *u, void *v)
-{
-	SET_SEGV_LOCATION();
-	AddServerUser (u);
-	AddNetworkUser ();
-	AddTLDUser (u);
-	return NS_FALSE;
-}
-
-static void DelUser (Client *u)
-{
-	if (IsOper(u)) {
-		dlog(DEBUG2, "Decreasing OperCount on %s due to signoff", u->uplink->name);
-		DelServerOper (u);
-	}
-	DelServerUser (u);
-	DelNetworkUser ();
-	DelTLDUser (u);
-}
+/** @brief ss_event_globalkill
+ *
+ *  GLOBALKILL event handler
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
 
-int ss_event_globalkill(CmdParams *cmdparams)
+int ss_event_globalkill( const CmdParams *cmdparams )
 {
 	serverstat *ss;
 
-	DelUser (cmdparams->target);
-	ss = GetServerModValue (cmdparams->target->uplink);
-	IncStatistic (&ss->operkills);
+	DelUser( cmdparams->target );
+	ss = GetServerModValue( cmdparams->target->uplink );
+	IncStatistic( &ss->operkills );
 	return NS_SUCCESS;
 }
 
-int ss_event_serverkill(CmdParams *cmdparams)
+/** @brief ss_event_serverkill
+ *
+ *  SERVERKILL event handler
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+int ss_event_serverkill( const CmdParams *cmdparams )
 {
 	serverstat *ss;
 
-	DelUser (cmdparams->target);
-	ss = GetServerModValue (cmdparams->target->uplink);
-	IncStatistic (&ss->serverkills);
+	DelUser( cmdparams->target );
+	ss = GetServerModValue( cmdparams->target->uplink );
+	IncStatistic( &ss->serverkills );
 	return NS_SUCCESS;
 }
 
-int ss_event_quit(CmdParams *cmdparams)
+/** @brief ss_event_quit
+ *
+ *  QUIT event handler
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+int ss_event_quit( const CmdParams *cmdparams )
 {
-	DelUser (cmdparams->source);
+	DelUser( cmdparams->source );
 	return NS_SUCCESS;
 }
 
-int ss_event_signon(CmdParams *cmdparams)
+/** @brief ss_event_signon
+ *
+ *  SIGNON event handler
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+int ss_event_signon( const CmdParams *cmdparams )
 {
-	AddUser (cmdparams->source, NULL);
+	AddUser( cmdparams->source, NULL );
 	return NS_SUCCESS;
 }
 
+/** @brief operlist
+ *
+ *  OPERLIST helper function
+ *  Process client information and report to requesting user
+ *
+ *  @param u pointer to client to report on
+ *  @param v pointer to client to report to
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
 static int operlistaway = 0;
 static char* operlistserver;
 
-static int operlist(Client *u, void * v)
+static int operlist( Client *u, const void * v )
 {
 	Client *listu;
 
-	listu = (Client *)v;
-	if (!IsOper(u))
+	listu = ( Client * )v;
+	if( !IsOper( u ) )
 		return NS_FALSE;
 	if( operlistaway && IsAway( u ) )
 		return NS_FALSE;
-	if (!operlistserver) {
-		irc_prefmsg (ss_bot, listu, "%-15s %-15s %-10d",
-			u->name, u->uplink->name, UserLevel(u));
+	if( !operlistserver ) {
+		irc_prefmsg( ss_bot, listu, "%-15s %-15s %-10d",
+			u->name, u->uplink->name, UserLevel( u ) );
 	} else {
-		if (ircstrcasecmp(operlistserver, u->uplink->name))
+		if( ircstrcasecmp( operlistserver, u->uplink->name ) )
 			return NS_FALSE;
-		irc_prefmsg (ss_bot, listu, "%-15s %-15s %-10d", 
-			u->name, u->uplink->name, UserLevel(u));
+		irc_prefmsg( ss_bot, listu, "%-15s %-15s %-10d", 
+			u->name, u->uplink->name, UserLevel( u ) );
 	}
 	return NS_FALSE;
 }
 
-int ss_cmd_operlist(CmdParams *cmdparams)
+/** @brief ss_cmd_botlist
+ *
+ *  OPERLIST command handler
+ *  Reports current statistics to requesting user
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+int ss_cmd_operlist( const CmdParams *cmdparams )
 {
 	char *flags = NULL;
 
 	SET_SEGV_LOCATION();
 	operlistaway = 0;
 	operlistserver = NULL;
-	if (cmdparams->ac == 0) {
-		irc_prefmsg (ss_bot, cmdparams->source, "Online IRCops:");
-		irc_prefmsg (ss_bot, cmdparams->source, "ID  %-15s %-15s %-10s", 
-			"Nick", "Server", "Level");
+	if( cmdparams->ac == 0 ) {
+		irc_prefmsg( ss_bot, cmdparams->source, "Online IRCops:" );
+		irc_prefmsg( ss_bot, cmdparams->source, "ID  %-15s %-15s %-10s", 
+			"Nick", "Server", "Level" );
 	}
-	if (cmdparams->ac != 0) {
+	if( cmdparams->ac != 0 ) {
 		flags = cmdparams->av[0];
 		operlistserver = cmdparams->av[1];
 	}
-	if (flags && !ircstrcasecmp(flags, "NOAWAY")) {
+	if( flags && !ircstrcasecmp( flags, "NOAWAY" ) ) {
 		operlistaway = 1;
 		flags = NULL;
-		irc_prefmsg (ss_bot, cmdparams->source, "Online IRCops (not away):");
+		irc_prefmsg( ss_bot, cmdparams->source, "Online IRCops( not away ):" );
 	}
-	if (!operlistaway && flags && strchr(flags, '.')) {
+	if( !operlistaway && flags && strchr( flags, '.' ) ) {
 		operlistserver = flags;
-		irc_prefmsg (ss_bot, cmdparams->source, "Online IRCops on server %s", operlistserver);
+		irc_prefmsg( ss_bot, cmdparams->source, "Online IRCops on server %s", operlistserver );
 	}
-	GetUserList (operlist, (void *)cmdparams->source);
-	irc_prefmsg (ss_bot, cmdparams->source, "End of list.");
+	GetUserList( operlist, ( void * )cmdparams->source );
+	irc_prefmsg( ss_bot, cmdparams->source, "End of list." );
 	return NS_SUCCESS;
 }
 
-static int botlist(Client *u, void * v)
+/** @brief botlist
+ *
+ *  BOTLIST helper function
+ *  Process client information and report to requesting user
+ *
+ *  @param u pointer to client to report on
+ *  @param v pointer to client to report to
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+static int botlist( const Client *u, const void * v )
 {
 	Client *listu;
 
-	listu = (Client *)v;
-	if IsBot(u) { 
-		irc_prefmsg (ss_bot, listu, "%-15s %s", u->name, u->uplink->name);
+	listu = ( Client * )v;
+	if IsBot( u ) { 
+		irc_prefmsg( ss_bot, listu, "%-15s %s", u->name, u->uplink->name );
 	}
 	return NS_FALSE;
 }
 
-int ss_cmd_botlist(CmdParams *cmdparams)
+/** @brief ss_cmd_botlist
+ *
+ *  BOTLIST command handler
+ *  Reports current statistics to requesting user
+ *
+ *  @param cmdparams
+ *
+ *  @return NS_SUCCESS if succeeds, else NS_FAILURE
+ */
+
+int ss_cmd_botlist( const CmdParams *cmdparams )
 {
 	SET_SEGV_LOCATION();
-	irc_prefmsg (ss_bot, cmdparams->source, "Online bots:");
-	GetUserList (botlist, (void *)cmdparams->source);
-	irc_prefmsg (ss_bot, cmdparams->source, "End of list.");
+	irc_prefmsg( ss_bot, cmdparams->source, "Online bots:" );
+	GetUserList( botlist, ( void * )cmdparams->source );
+	irc_prefmsg( ss_bot, cmdparams->source, "End of list." );
 	return NS_SUCCESS;
 }
 
-void InitUserStats (void)
+/** @brief InitUserStats
+ *
+ *  Init user stats
+ *  Requests current user list from core and adds to StatServ
+ *
+ *  @param none
+ *
+ *  @return NS_SUCCESS on success, NS_FAILURE on failure
+ */
+
+void InitUserStats( void )
 {
-	GetUserList (AddUser, NULL);
+	GetUserList( AddUser, NULL );
 }

Modified: trunk/modules/statserv/user.h
==============================================================================
--- trunk/modules/statserv/user.h	(original)
+++ trunk/modules/statserv/user.h	Sat Aug 20 04:38:11 2005
@@ -24,14 +24,13 @@
 #ifndef _USER_H_
 #define _USER_H_
 
-void StatsAddUser(Client * u);
-int ss_event_signon (CmdParams *cmdparams);
-int ss_event_quit (CmdParams *cmdparams);
-int ss_event_mode (CmdParams *cmdparams);
-int ss_event_globalkill (CmdParams *cmdparams);
-int ss_event_serverkill (CmdParams *cmdparams);
-int ss_cmd_operlist (CmdParams *cmdparams);
-int ss_cmd_botlist (CmdParams *cmdparams);
-void InitUserStats (void);	
+int ss_event_signon( const CmdParams *cmdparams );
+int ss_event_quit( const CmdParams *cmdparams );
+int ss_event_mode( const CmdParams *cmdparams );
+int ss_event_globalkill( const CmdParams *cmdparams );
+int ss_event_serverkill( const CmdParams *cmdparams );
+int ss_cmd_operlist( const CmdParams *cmdparams );
+int ss_cmd_botlist( const CmdParams *cmdparams );
+void InitUserStats( void );	
 
 #endif /* _USER_H_ */

Modified: trunk/modules/statserv/version.c
==============================================================================
--- trunk/modules/statserv/version.c	(original)
+++ trunk/modules/statserv/version.c	Sat Aug 20 04:38:11 2005
@@ -28,7 +28,7 @@
 
 #define CTCPVERSION_TABLE "CTCPVERSION"
 
-list_t *versionstatlist;
+static list_t *ctcp_version_list;
 
 /** @brief topcurrentversions
  *
@@ -40,10 +40,10 @@
  *  @return results of comparison
  */
 
-int topcurrentversions( const void *key1, const void *key2 )
+static int topcurrentversions( const void *key1, const void *key2 )
 {
-	const ctcpversionstat *ver1 = key1;
-	const ctcpversionstat *ver2 = key2;
+	const ss_ctcp_version *ver1 = key1;
+	const ss_ctcp_version *ver2 = key2;
 	return( ver2->users.current - ver1->users.current );
 }
 
@@ -56,11 +56,11 @@
  *  @return pointer to stat found or NULL if none
  */
 
-static ctcpversionstat *findctcpversion( const char *name )
+static ss_ctcp_version *findctcpversion( const char *name )
 {
-	ctcpversionstat *cv;
+	ss_ctcp_version *cv;
 
-	cv = lnode_find( versionstatlist, name, comparef );
+	cv = lnode_find( ctcp_version_list, name, comparef );
 	if( cv )
 		dlog( DEBUG2, "findctcpversion: found version: %s", name );
 	else
@@ -79,16 +79,16 @@
 
 static void SaveClientVersions( void )
 {
-	ctcpversionstat *cv;
+	ss_ctcp_version *cv;
 	lnode_t *cn;
 	
-	cn = list_first( versionstatlist );
+	cn = list_first( ctcp_version_list );
 	while( cn != NULL )
 	{
-		cv = ( ctcpversionstat * ) lnode_get( cn );
-		DBAStore( CTCPVERSION_TABLE, cv->name,( void *)cv, sizeof( ctcpversionstat));
+		cv = ( ss_ctcp_version * ) lnode_get( cn );
+		DBAStore( CTCPVERSION_TABLE, cv->name,( void *)cv, sizeof( ss_ctcp_version));
 		dlog( DEBUG2, "Save version %s", cv->name );
-		cn = list_next( versionstatlist, cn );
+		cn = list_next( ctcp_version_list, cn );
 	}
 }
 
@@ -104,11 +104,16 @@
 
 static int new_ctcpversion( void *data, int size )
 {
-	ctcpversionstat *clientv;
+	ss_ctcp_version *cv;
 	
-	clientv = ns_calloc( sizeof( ctcpversionstat ) );
-	os_memcpy( clientv, data, sizeof( ctcpversionstat ));
-	lnode_create_append( versionstatlist, clientv );
+	if( size != sizeof( ss_ctcp_version ) )
+	{
+		nlog( LOG_CRITICAL, "CTCP version data size invalid" );		
+		return NS_FALSE;
+	}
+	cv = ns_calloc( sizeof( ss_ctcp_version ) );
+	os_memcpy( cv, data, sizeof( ss_ctcp_version ));
+	lnode_create_append( ctcp_version_list, cv );
 	return NS_FALSE;
 }
 
@@ -126,9 +131,53 @@
 	DBAFetchRows( CTCPVERSION_TABLE, new_ctcpversion );
 }
 
-/** @brief ss_cmd_userversion
+/** @brief ClientVersionReport
+ *
+ *  Report client version
+ *
+ *  @param cv pointer to version to report
+ *  @param v pointer to client to send to
+ *
+ *  @return none
+ */
+
+static void ClientVersionReport( const ss_ctcp_version *cv, const void *v )
+{
+	irc_prefmsg( ss_bot, ( Client * ) v, "%d ->  %s", cv->users.current, cv->name );
+}
+
+/** @brief GetClientStats
+ *
+ *  Walk through list passing each client version to handler
+ *
+ *  @param handler pointer to handler function
+ *  @param limit max entries to handle
+ *  @param v pointer to client to send to
+ *
+ *  @return none
+ */
+
+void GetClientStats( const CTCPVersionHandler handler, int limit, const void *v )
+{
+	ss_ctcp_version *cv;
+	lnode_t *cn;
+	int i;
+	
+	if( !list_is_sorted( ctcp_version_list, topcurrentversions ) )
+		list_sort( ctcp_version_list, topcurrentversions );
+	cn = list_first( ctcp_version_list );
+	for( i = 0; i < limit && cn; i++ )
+	{
+		cv = lnode_get( cn );
+		handler( cv, v );	
+		cn = list_next( ctcp_version_list, cn );
+	}
+}
+
+/** @brief ss_cmd_ctcpversion
  *
- *  Command handler for USERVERSION
+ *  CTCPVERSION command handler
+ *  Reports current statistics to requesting user
  *
  *  @param cmdparams
  *    cmdparams->av[0] = optional limit
@@ -136,39 +185,28 @@
  *  @return NS_SUCCESS if succeeds, else NS_FAILURE
  */
 
-int ss_cmd_userversion( const CmdParams *cmdparams )
+int ss_cmd_ctcpversion( const CmdParams *cmdparams )
 {
-	ctcpversionstat *cv;
-	lnode_t *cn;
-	int i;
 	int num;
 
 	num = cmdparams->ac > 0 ? atoi( cmdparams->av[0] ) : 10;
 	if( num < 10 )
 		num = 10;
-	if( list_count( versionstatlist ) == 0 )
+	if( list_count( ctcp_version_list ) == 0 )
 	{
 		irc_prefmsg( ss_bot, cmdparams->source, "No Stats Available." );
 		return NS_SUCCESS;
 	}
-	if( !list_is_sorted( versionstatlist, topcurrentversions ) )
-		list_sort( versionstatlist, topcurrentversions );
 	irc_prefmsg( ss_bot, cmdparams->source, "Top %d Client Versions:", num );
 	irc_prefmsg( ss_bot, cmdparams->source, "======================" );
-	cn = list_first( versionstatlist );
-	for( i = 0; i < num && cn; i++ )
-	{
-		cv = lnode_get( cn );
-		irc_prefmsg( ss_bot, cmdparams->source, "%d ) %d ->  %s", i + 1, cv->users.current, cv->name );
-		cn = list_next( versionstatlist, cn );
-	}
+	GetClientStats( ClientVersionReport, num, ( void * )cmdparams->source );
 	irc_prefmsg( ss_bot, cmdparams->source, "End of list." );
 	return NS_SUCCESS;
 }
 
 /** @brief ss_event_ctcpversion
  *
- *  Event handler for CTCP VERSION
+ *  CTCP VERSION event handler
  *
  *  @param cmdparams
  *
@@ -178,21 +216,21 @@
 int ss_event_ctcpversion( const CmdParams *cmdparams )
 {
 	static char nocols[BUFSIZE];
-	ctcpversionstat *clientv;
+	ss_ctcp_version *cv;
 
     strlcpy( nocols, cmdparams->param, BUFSIZE );
 	strip_mirc_codes( nocols );
-	clientv = findctcpversion( nocols );
-	if( clientv )
+	cv = findctcpversion( nocols );
+	if( cv )
 	{
-		IncStatistic( &clientv->users );
+		IncStatistic( &cv->users );
 		return NS_SUCCESS;
 	}
-	clientv = ns_calloc( sizeof( ctcpversionstat ) );
-	strlcpy( clientv->name, nocols, BUFSIZE );
-	IncStatistic( &clientv->users );
-	lnode_create_append( versionstatlist, clientv );
-	dlog( DEBUG2, "Added version: %s", clientv->name );
+	cv = ns_calloc( sizeof( ss_ctcp_version ) );
+	strlcpy( cv->name, nocols, BUFSIZE );
+	IncStatistic( &cv->users );
+	lnode_create_append( ctcp_version_list, cv );
+	dlog( DEBUG2, "Added version: %s", cv->name );
 	return NS_SUCCESS;
 }
 
@@ -202,13 +240,19 @@
  *
  *  @param none
  *
- *  @return none
+ *  @return NS_SUCCESS on success, NS_FAILURE on failure
  */
 
-void InitVersionStats( void )
+int InitVersionStats( void )
 {
-	versionstatlist = list_create( -1 );
+	ctcp_version_list = list_create( -1 );
+	if( !ctcp_version_list )
+	{
+		nlog( LOG_CRITICAL, "Unable to create version stat list" );
+		return NS_FAILURE;
+	}
 	LoadVersionStats();
+	return NS_SUCCESS;
 }
 
 /** @brief FiniVersionStats
@@ -223,5 +267,5 @@
 void FiniVersionStats( void )
 {
 	SaveClientVersions();
-	list_destroy_auto( versionstatlist );
+	list_destroy_auto( ctcp_version_list );
 }

Modified: trunk/modules/statserv/version.h
==============================================================================
--- trunk/modules/statserv/version.h	(original)
+++ trunk/modules/statserv/version.h	Sat Aug 20 04:38:11 2005
@@ -24,17 +24,17 @@
 #ifndef _VERSION_H_
 #define _VERSION_H_
 
-typedef struct ctcpversionstat {
+typedef struct ss_ctcp_version {
 	char name[BUFSIZE];
 	statistic users;
-}ctcpversionstat;
+} ss_ctcp_version;
 
-extern list_t *versionstatlist;
+typedef void (*CTCPVersionHandler)( const ss_ctcp_version *cv, const void *v );
+void GetClientStats( const CTCPVersionHandler handler, int limit, const void *v );
 
-int topcurrentversions( const void *key1, const void *key2 );
-int ss_cmd_userversion( const CmdParams *cmdparams );
+int ss_cmd_ctcpversion( const CmdParams *cmdparams );
 int ss_event_ctcpversion( const CmdParams *cmdparams );
-void InitVersionStats( void );
+int InitVersionStats( void );
 void FiniVersionStats( void );
 
 #endif /* _VERSION_H_ */

Modified: trunk/src/bots.c
==============================================================================
--- trunk/src/bots.c	(original)
+++ trunk/src/bots.c	Sat Aug 20 04:38:11 2005
@@ -776,7 +776,7 @@
 	ns_free( pBot->moddata );
 }
 
-void* GetBotModPtr( Bot *pBot )
+void* GetBotModPtr( const Bot *pBot )
 {
 	return pBot->moddata;
 }
@@ -797,7 +797,7 @@
 	}
 }
 
-void *GetBotModValue( Bot *pBot )
+void *GetBotModValue( const Bot *pBot )
 {
 	if( pBot )
 	{

Modified: trunk/src/channels.c
==============================================================================
--- trunk/src/channels.c	(original)
+++ trunk/src/channels.c	Sat Aug 20 04:38:11 2005
@@ -774,7 +774,7 @@
 	}
 }
 
-void* GetChannelModPtr( Channel *c )
+void* GetChannelModPtr( const Channel *c )
 {
 	return c->modptr[GET_CUR_MODNUM()];
 }
@@ -802,7 +802,7 @@
 	}
 }
 
-void *GetChannelModValue( Channel *c )
+void *GetChannelModValue( const Channel *c )
 {
 	if( c )
 	{

Modified: trunk/src/servers.c
==============================================================================
--- trunk/src/servers.c	(original)
+++ trunk/src/servers.c	Sat Aug 20 04:38:11 2005
@@ -332,7 +332,7 @@
 	}
 }
 
-void* GetServerModPtr (Client* s)
+void* GetServerModPtr (const Client* s)
 {
 	return s->modptr[GET_CUR_MODNUM()];
 }
@@ -360,7 +360,7 @@
 	}
 }
 
-void *GetServerModValue (Client* s)
+void *GetServerModValue (const Client* s)
 {
 	if (s)
 	{

Modified: trunk/src/users.c
==============================================================================
--- trunk/src/users.c	(original)
+++ trunk/src/users.c	Sat Aug 20 04:38:11 2005
@@ -681,7 +681,7 @@
 	}
 }
 
-void* GetUserModPtr (Client* u)
+void* GetUserModPtr (const Client* u)
 {
 	return u->modptr[GET_CUR_MODNUM()];
 }
@@ -709,7 +709,7 @@
 	}
 }
 
-void *GetUserModValue (Client *u)
+void *GetUserModValue (const Client *u)
 {
 	if (u)
 	{