+++ /dev/null
-Add header to /STATS output and make TOTAL: line in /STATS z more clear,
-so that we do not need to guess or lookup what exactly some of the output means.
-
-diff -r d93ebdf15bd2 include/numeric.h
---- a/include/numeric.h Wed Feb 11 13:52:40 2009 +0100
-+++ b/include/numeric.h Wed Feb 11 14:27:58 2009 +0100
-@@ -117,6 +117,7 @@
- RPL_STATSVLINE 227 unreal */
- #define RPL_STATSALINE 226 /* Hybrid, Undernet */
- #define RPL_STATSQLINE 228 /* Undernet extension */
-+#define RPL_STATSHEADER 230 /* QuakeNet extension */
-
- /* RPL_SERVICEINFO 231 unused */
- /* RPL_ENDOFSERVICES 232 unused */
-diff -r d93ebdf15bd2 ircd/class.c
---- a/ircd/class.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/class.c Wed Feb 11 14:27:58 2009 +0100
-@@ -257,6 +257,10 @@
- {
- struct ConnectionClass *cltmp;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "Y ConnClass PingFreq ConnFreq MaxLinks MaxSendQ Links");
-+
- for (cltmp = connClassList; cltmp; cltmp = cltmp->next)
- send_reply(sptr, RPL_STATSYLINE, (cltmp->valid ? 'Y' : 'y'),
- ConClass(cltmp), PingFreq(cltmp), ConFreq(cltmp),
-diff -r d93ebdf15bd2 ircd/gline.c
---- a/ircd/gline.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/gline.c Wed Feb 11 14:27:58 2009 +0100
-@@ -1295,6 +1295,10 @@
- struct Gline *gline;
- struct Gline *sgline;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "G Mask Expire Lastmod Lifetime Status :Reason");
-+
- gliter(GlobalGlineList, gline, sgline) {
- send_reply(sptr, RPL_STATSGLINE, 'G',
- gline->gl_nick ? gline->gl_nick : "",
-diff -r d93ebdf15bd2 ircd/hash.c
---- a/ircd/hash.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/hash.c Wed Feb 11 14:27:58 2009 +0100
-@@ -421,6 +421,10 @@
- stats_nickjupes(struct Client* to, const struct StatDesc* sd, char* param)
- {
- int i;
-+
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER, "J Nick");
-+
- for (i = 0; i < JUPEHASHSIZE; i++)
- if (jupeTable[i][0])
- send_reply(to, RPL_STATSJLINE, jupeTable[i]);
-diff -r d93ebdf15bd2 ircd/ircd_features.c
---- a/ircd/ircd_features.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/ircd_features.c Wed Feb 11 14:27:58 2009 +0100
-@@ -827,6 +827,10 @@
- {
- int i;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "F Feature/Log Value");
-+
- for (i = 0; features[i].type; i++) {
- if ((features[i].flags & FEAT_NODISP) ||
- (features[i].flags & FEAT_MYOPER && !MyOper(to)) ||
-diff -r d93ebdf15bd2 ircd/ircd_res.c
---- a/ircd/ircd_res.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/ircd_res.c Wed Feb 11 14:27:58 2009 +0100
-@@ -917,6 +917,10 @@
- int i;
- char ipaddr[128];
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(source_p, SND_EXPLICIT | RPL_STATSHEADER,
-+ "DNS-Server");
-+
- for (i = 0; i < irc_nscount; i++)
- {
- ircd_ntoa_r(ipaddr, &irc_nsaddr_list[i].addr);
-diff -r d93ebdf15bd2 ircd/listener.c
---- a/ircd/listener.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/listener.c Wed Feb 11 14:27:58 2009 +0100
-@@ -139,6 +139,10 @@
-
- assert(0 != sptr);
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "P Port Conns Flags Status");
-+
- if (param)
- port = atoi(param);
-
-diff -r d93ebdf15bd2 ircd/motd.c
---- a/ircd/motd.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/motd.c Wed Feb 11 14:27:58 2009 +0100
-@@ -433,6 +433,10 @@
- {
- struct Motd *ptr;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "T Hostmask/Class File");
-+
- for (ptr = MotdList.other; ptr; ptr = ptr->next)
- send_reply(to, SND_EXPLICIT | RPL_STATSTLINE, "T %s %s",
- ptr->hostmask, ptr->path);
-diff -r d93ebdf15bd2 ircd/s_auth.c
---- a/ircd/s_auth.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/s_auth.c Wed Feb 11 14:27:58 2009 +0100
-@@ -2189,6 +2189,10 @@
- {
- struct SLink *link;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(cptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "IAUTHCONF config");
-+
- if (iauth) for (link = iauth->i_config; link; link = link->next)
- {
- send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":%s",
-@@ -2205,6 +2209,10 @@
- {
- struct SLink *link;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(cptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "IAUTH info");
-+
- if (iauth) for (link = iauth->i_stats; link; link = link->next)
- {
- send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":%s",
-diff -r d93ebdf15bd2 ircd/s_debug.c
---- a/ircd/s_debug.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/s_debug.c Wed Feb 11 14:27:58 2009 +0100
-@@ -389,7 +389,7 @@
- #endif
-
- send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG,
-- ":Total: ww %zu ch %zu cl %zu co %zu db %zu ms %zu mb %zu",
-+ ":Total: Whowas %zu Channels %zu Clients %zu Config %zu DBufs %zu Msgs %zu MsgBufs %zu",
- totww, totch, totcl, com, dbufs_allocated, msg_allocated,
- msgbuf_allocated);
- }
-diff -r d93ebdf15bd2 ircd/s_err.c
---- a/ircd/s_err.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/s_err.c Wed Feb 11 14:27:58 2009 +0100
-@@ -492,7 +492,7 @@
- /* 229 */
- { 0 },
- /* 230 */
-- { 0 },
-+ { RPL_STATSHEADER, 0, "230" },
- /* 231 */
- { 0 },
- /* 232 */
-diff -r d93ebdf15bd2 ircd/s_stats.c
---- a/ircd/s_stats.c Wed Feb 11 13:52:40 2009 +0100
-+++ b/ircd/s_stats.c Wed Feb 11 14:27:58 2009 +0100
-@@ -92,6 +92,16 @@
- int maximum;
- char *host, *pass, *name, *username, *hub_limit;
-
-+ /* send header so the client knows what we are showing */
-+ if (sd->sd_funcdata == CONF_UWORLD)
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER, "U Server");
-+ else if (sd->sd_funcdata == CONF_SERVER)
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "C Server * Port Hoplimit Hubmask Class");
-+ else if (sd->sd_funcdata == CONF_OPERATOR)
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "O Mask * Name Class");
-+
- for (tmp = GlobalConfList; tmp; tmp = tmp->next)
- {
- if ((tmp->status & sd->sd_funcdata))
-@@ -137,6 +147,10 @@
- {
- const struct CRuleConf* p = conf_get_crule_list();
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "D Server Rule");
-+
- for ( ; p; p = p->next)
- {
- if (p->type & sd->sd_funcdata)
-@@ -167,6 +181,10 @@
- int wilds = 0;
- int count = 1000;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "I Hostmask Maximum IPmask Port Class");
-+
- if (!param)
- {
- stats_configured_links(to, sd, param);
-@@ -204,6 +222,11 @@
- report_deny_list(struct Client* to)
- {
- const struct DenyConf* p = conf_get_deny_list();
-+
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "K Mask \"Message/File\" \"Realname\" 0 0");
-+
- for ( ; p; p = p->next)
- send_reply(to, RPL_STATSKLINE, p->bits > 0 ? 'k' : 'K',
- p->usermask ? p->usermask : "*",
-@@ -252,6 +275,10 @@
- else
- host = mask;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(sptr, SND_EXPLICIT | RPL_STATSHEADER,
-+ "K Mask \"Message/File\" \"Realname\" 0 0");
-+
- for (conf = conf_get_deny_list(); conf; conf = conf->next)
- {
- /* Skip this block if the user is searching for a user-matching
-@@ -377,6 +404,10 @@
- {
- struct Message *mptr;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "Command Count Bytes");
-+
- for (mptr = msgtab; mptr->cmd; mptr++)
- if (mptr->count)
- send_reply(to, RPL_STATSCOMMANDS, mptr->cmd, mptr->count, mptr->bytes);
-@@ -392,6 +423,10 @@
- {
- struct qline *qline;
-
-+ /* send header so the client knows what we are showing */
-+ send_reply(to, SND_EXPLICIT | RPL_STATSHEADER,
-+ "Q Channel :Reason");
-+
- for (qline = GlobalQuarantineList; qline; qline = qline->next)
- {
- if (param && match(param, qline->chname)) /* narrow search */
-@@ -406,6 +441,8 @@
- int y = 1, i = 1;
- struct sline *sline;
-
-+
-+ /* TODO: use RPL_STATSHEADER here too instead of RPL_TEXT? */
- if (IsAnOper(to))
- send_reply(to, SND_EXPLICIT | RPL_TEXT, "# Type Spoofhost Realhost Ident");
- else