--- /dev/null
+# HG changeset patch
+# Parent e1de3d14c9df051e11288e8de6181e4989e3b138
+
+diff -r e1de3d14c9df doc/readme.iauth
+--- a/doc/readme.iauth Sat Jul 20 09:18:24 2013 +0200
++++ b/doc/readme.iauth Sat Jul 20 09:23:57 2013 +0200
+@@ -235,6 +235,12 @@
+ Compatibility: ircd does not include the <capacity> information.
+ The <id> should be ignored: ircd sends 0 and ircu sends -1.
+
++W - WEBIRC
++Syntax: <id> W <password> <username> <hostname> <ip>
++Comments: Indicates the client's webirc information. This is an
++ Undernet extension and ircd does not send it. It is enabled by the
++ iauth instance requesting the U policy.
++
+ X - Extension Query Reply
+ Syntax: <id> X <servername> <routing> :<reply>
+ Example: -1 X channels.undernet.org 5/127.0.0.1/6667 :OK kev Logged in
+diff -r e1de3d14c9df include/handlers.h
+--- a/include/handlers.h Sat Jul 20 09:18:24 2013 +0200
++++ b/include/handlers.h Sat Jul 20 09:23:57 2013 +0200
+@@ -146,6 +146,7 @@
+ extern int m_unregistered(struct Client*, struct Client*, int, char*[]);
+ extern int m_unsupported(struct Client*, struct Client*, int, char*[]);
+ extern int m_user(struct Client*, struct Client*, int, char*[]);
++extern int m_webirc(struct Client*, struct Client*, int, char*[]);
+ extern int m_userhost(struct Client*, struct Client*, int, char*[]);
+ extern int m_userip(struct Client*, struct Client*, int, char*[]);
+ extern int m_version(struct Client*, struct Client*, int, char*[]);
+diff -r e1de3d14c9df include/msg.h
+--- a/include/msg.h Sat Jul 20 09:18:24 2013 +0200
++++ b/include/msg.h Sat Jul 20 09:23:57 2013 +0200
+@@ -68,6 +68,11 @@
+ #define TOK_USER "USER"
+ #define CMD_USER MSG_USER, TOK_USER
+
++#define MSG_WEBIRC "WEBIRC" /* WEBI */
++#define TOK_WEBIRC "WEBIRC"
++#define CMD_WEBIRC MSG_WEBIRC, TOK_WEBIRC
++
++
+ #define MSG_NICK "NICK" /* NICK */
+ #define TOK_NICK "N"
+ #define CMD_NICK MSG_NICK, TOK_NICK
+diff -r e1de3d14c9df include/s_auth.h
+--- a/include/s_auth.h Sat Jul 20 09:18:24 2013 +0200
++++ b/include/s_auth.h Sat Jul 20 09:23:57 2013 +0200
+@@ -32,9 +32,11 @@
+ struct Client;
+ struct AuthRequest;
+ struct StatDesc;
++struct irc_in_addr;
+
+ extern void start_auth(struct Client *);
+ extern int auth_ping_timeout(struct Client *);
++extern int auth_set_webirc(struct AuthRequest *auth, const char *password, const char *username, const char *hostname, struct irc_in_addr *ip);
+ extern int auth_set_pong(struct AuthRequest *auth, unsigned int cookie);
+ extern int auth_set_user(struct AuthRequest *auth, const char *username, const char *hostname, const char *servername, const char *userinfo);
+ extern int auth_set_nick(struct AuthRequest *auth, const char *nickname);
+diff -r e1de3d14c9df ircd/Makefile.in
+--- a/ircd/Makefile.in Sat Jul 20 09:18:24 2013 +0200
++++ b/ircd/Makefile.in Sat Jul 20 09:23:57 2013 +0200
+@@ -188,6 +188,7 @@
+ m_wallops.c \
+ m_wallusers.c \
+ m_wallvoices.c \
++ m_webirc.c \
+ m_who.c \
+ m_whois.c \
+ m_whowas.c \
+diff -r e1de3d14c9df ircd/m_webirc.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/ircd/m_webirc.c Sat Jul 20 09:23:57 2013 +0200
+@@ -0,0 +1,125 @@
++/*
++ * IRC - Internet Relay Chat, ircd/m_webirc.c
++ * Copyright (C) 1990 Jarkko Oikarinen and
++ * University of Oulu, Computing Center
++ *
++ * See file AUTHORS in IRC package for additional names of
++ * the programmers.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 1, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ * $Id: m_webirc.c,v 1.25 2005/09/13 15:17:46 entrope Exp $
++ */
++
++/*
++ * m_functions execute protocol messages on this server:
++ *
++ * cptr is always NON-NULL, pointing to a *LOCAL* client
++ * structure (with an open socket connected!). This
++ * identifies the physical socket where the message
++ * originated (or which caused the m_function to be
++ * executed--some m_functions may call others...).
++ *
++ * sptr is the source of the message, defined by the
++ * prefix part of the message if present. If not
++ * or prefix not found, then sptr==cptr.
++ *
++ * (!IsServer(cptr)) => (cptr == sptr), because
++ * prefixes are taken *only* from servers...
++ *
++ * (IsServer(cptr))
++ * (sptr == cptr) => the message didn't
++ * have the prefix.
++ *
++ * (sptr != cptr && IsServer(sptr) means
++ * the prefix specified servername. (?)
++ *
++ * (sptr != cptr && !IsServer(sptr) means
++ * that message originated from a remote
++ * user (not local).
++ *
++ * combining
++ *
++ * (!IsServer(sptr)) means that, sptr can safely
++ * taken as defining the target structure of the
++ * message in this server.
++ *
++ * *Always* true (if 'parse' and others are working correct):
++ *
++ * 1) sptr->from == cptr (note: cptr->from == cptr)
++ *
++ * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr
++ * *cannot* be a local connection, unless it's
++ * actually cptr!). [MyConnect(x) should probably
++ * be defined as (x == x->from) --msa ]
++ *
++ * parc number of variable parameter strings (if zero,
++ * parv is allowed to be NULL)
++ *
++ * parv a NULL terminated list of parameter pointers,
++ *
++ * parv[0], sender (prefix string), if not present
++ * this points to an empty string.
++ * parv[1]...parv[parc-1]
++ * pointers to additional parameters
++ * parv[parc] == NULL, *always*
++ *
++ * note: it is guaranteed that parv[0]..parv[parc-1] are all
++ * non-NULL pointers.
++ */
++#include "config.h"
++
++#include "channel.h"
++#include "client.h"
++#include "hash.h"
++#include "ircd.h"
++#include "ircd_features.h"
++#include "ircd_log.h"
++#include "ircd_reply.h"
++#include "ircd_string.h"
++#include "list.h"
++#include "msg.h"
++#include "numeric.h"
++#include "numnicks.h"
++#include "s_user.h"
++#include "s_auth.h"
++#include "s_misc.h"
++#include "send.h"
++#include "struct.h"
++
++/* #include <assert.h> -- Now using assert in ircd_log.h */
++
++/*
++ * ms_webirc - server message handler
++ *
++ * parv[0] - sender prefix
++ * parv[1] - password
++ * parv[2] - fake username
++ * parv[3] - fake hostname
++ * parv[4] - fake ip address
++ *
++ */
++int m_webirc(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
++{
++ struct irc_in_addr ip;
++
++ if (parc < 5 || EmptyString(parv[4]))
++ return need_more_params(sptr,"WEBIRC");
++
++ if (!ircd_aton(&ip, parv[4]))
++ return exit_client(cptr, cptr, &me, "Invalid IP address specified for WEBIRC");
++
++ return auth_set_webirc(cli_auth(cptr), parv[1], parv[2], parv[3], &ip);
++}
+diff -r e1de3d14c9df ircd/parse.c
+--- a/ircd/parse.c Sat Jul 20 09:18:24 2013 +0200
++++ b/ircd/parse.c Sat Jul 20 09:23:57 2013 +0200
+@@ -282,6 +282,13 @@
+ { m_user, m_registered, m_ignore, m_registered, m_ignore }
+ },
+ {
++ MSG_WEBIRC,
++ TOK_WEBIRC,
++ 0, MAXPARA, MFLG_SLOW, 0, NULL,
++ /* UNREG, CLIENT, SERVER, OPER, SERVICE */
++ { m_webirc, m_registered, m_ignore, m_registered, m_ignore }
++ },
++ {
+ MSG_AWAY,
+ TOK_AWAY,
+ 0, MAXPARA, MFLG_SLOW, 0, NULL,
+diff -r e1de3d14c9df ircd/s_auth.c
+--- a/ircd/s_auth.c Sat Jul 20 09:18:24 2013 +0200
++++ b/ircd/s_auth.c Sat Jul 20 09:23:57 2013 +0200
+@@ -1041,6 +1041,23 @@
+ return check_auth_finished(auth);
+ }
+
++int auth_set_webirc(struct AuthRequest *auth, const char *password, const char *username, const char *hostname, struct irc_in_addr *ip)
++{
++ struct Client *cptr;
++
++ assert(auth != NULL);
++
++ cptr = auth->client;
++
++ if (!FlagHas(&auth->flags, AR_NEEDS_NICK) || !FlagHas(&auth->flags, AR_NEEDS_USER))
++ return exit_client(cptr, cptr, &me, "WEBIRC must not be used after USER or NICK");
++
++ if (IAuthHas(iauth, IAUTH_UNDERNET))
++ sendto_iauth(cptr, "W %s %s %s %s", password, username, hostname, ircd_ntoa(ip));
++
++ return 0;
++}
++
+ /** Record a user's claimed username and userinfo.
+ * @param[in] auth Authorization request for client.
+ * @param[in] username Client's asserted username.
ircd/ircd_parser.y
add PRIV_LOCAL_WELCOME PRIV_WELCOME
-diff -r 9096546c6212 include/client.h
---- a/include/client.h Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/client.h Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 include/client.h
+--- a/include/client.h Sat Jul 20 15:39:54 2013 +0100
++++ b/include/client.h Sat Jul 20 15:40:27 2013 +0100
@@ -142,6 +142,8 @@
PRIV_USER_PRIVACY, /* oper can bypass user privacy +x etc gives i.e. see real ip's */
PRIV_CHANNEL_PRIVACY, /* oper can bypass channel privacy i.e. can see modes on channels they are not on and channel keys */
PRIV_LAST_PRIV /**< number of privileges */
};
-diff -r 9096546c6212 include/handlers.h
---- a/include/handlers.h Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/handlers.h Sat Jul 20 12:00:55 2013 +0100
-@@ -138,6 +138,7 @@
+diff -r 530975e1fd87 include/handlers.h
+--- a/include/handlers.h Sat Jul 20 15:39:54 2013 +0100
++++ b/include/handlers.h Sat Jul 20 15:40:27 2013 +0100
+@@ -139,6 +139,7 @@
extern int m_version(struct Client*, struct Client*, int, char*[]);
extern int m_wallchops(struct Client*, struct Client*, int, char*[]);
extern int m_wallvoices(struct Client*, struct Client*, int, char*[]);
extern int m_who(struct Client*, struct Client*, int, char*[]);
extern int m_whois(struct Client*, struct Client*, int, char*[]);
extern int m_whowas(struct Client*, struct Client*, int, char*[]);
-@@ -172,6 +173,7 @@
+@@ -173,6 +174,7 @@
extern int mo_version(struct Client*, struct Client*, int, char*[]);
extern int mo_wallops(struct Client*, struct Client*, int, char*[]);
extern int mo_wallusers(struct Client*, struct Client*, int, char*[]);
extern int mo_xquery(struct Client*, struct Client*, int, char*[]);
extern int mr_error(struct Client*, struct Client*, int, char*[]);
extern int mr_error(struct Client*, struct Client*, int, char*[]);
-@@ -231,6 +233,7 @@
+@@ -232,6 +234,7 @@
extern int ms_wallops(struct Client*, struct Client*, int, char*[]);
extern int ms_wallusers(struct Client*, struct Client*, int, char*[]);
extern int ms_wallvoices(struct Client*, struct Client*, int, char*[]);
extern int ms_whois(struct Client*, struct Client*, int, char*[]);
extern int ms_xquery(struct Client*, struct Client*, int, char*[]);
extern int ms_xreply(struct Client*, struct Client*, int, char*[]);
-diff -r 9096546c6212 include/ircd_features.h
---- a/include/ircd_features.h Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/ircd_features.h Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 include/ircd_features.h
+--- a/include/ircd_features.h Sat Jul 20 15:39:54 2013 +0100
++++ b/include/ircd_features.h Sat Jul 20 15:40:27 2013 +0100
@@ -101,6 +101,7 @@
FEAT_IRCD_RES_TIMEOUT,
FEAT_AUTH_TIMEOUT,
FEAT_HIS_STATS_w,
FEAT_HIS_STATS_x,
FEAT_HIS_STATS_y,
-diff -r 9096546c6212 include/msg.h
---- a/include/msg.h Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/msg.h Sat Jul 20 12:00:55 2013 +0100
-@@ -196,6 +196,10 @@
+diff -r 530975e1fd87 include/msg.h
+--- a/include/msg.h Sat Jul 20 15:39:54 2013 +0100
++++ b/include/msg.h Sat Jul 20 15:40:27 2013 +0100
+@@ -201,6 +201,10 @@
#define TOK_NOTICE "O"
#define CMD_NOTICE MSG_NOTICE, TOK_NOTICE
#define MSG_WALLCHOPS "WALLCHOPS" /* WC */
#define TOK_WALLCHOPS "WC"
#define CMD_WALLCHOPS MSG_WALLCHOPS, TOK_WALLCHOPS
-diff -r 9096546c6212 include/numeric.h
---- a/include/numeric.h Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/numeric.h Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 include/numeric.h
+--- a/include/numeric.h Sat Jul 20 15:39:54 2013 +0100
++++ b/include/numeric.h Sat Jul 20 15:40:27 2013 +0100
@@ -116,6 +116,7 @@
RPL_STATSGLINE 227 Dalnet
RPL_STATSVLINE 227 unreal */
#define ERR_SILELISTFULL 511 /* Undernet extension */
/* ERR_NOTIFYFULL 512 aircd */
/* ERR_TOOMANYWATCH 512 Numeric List: Dalnet */
-diff -r 9096546c6212 include/welcome.h
+diff -r 530975e1fd87 include/welcome.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/include/welcome.h Sat Jul 20 12:00:55 2013 +0100
++++ b/include/welcome.h Sat Jul 20 15:40:27 2013 +0100
@@ -0,0 +1,86 @@
+#ifndef INCLUDED_welcome_h
+#define INCLUDED_welcome_h
+extern int welcome_memory_count(size_t *we_size);
+
+#endif /* INCLUDED_welcome_h */
-diff -r 9096546c6212 ircd/Makefile.in
---- a/ircd/Makefile.in Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/Makefile.in Sat Jul 20 12:00:55 2013 +0100
-@@ -187,6 +187,7 @@
- m_wallops.c \
+diff -r 530975e1fd87 ircd/Makefile.in
+--- a/ircd/Makefile.in Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/Makefile.in Sat Jul 20 15:40:27 2013 +0100
+@@ -188,6 +188,7 @@
m_wallusers.c \
m_wallvoices.c \
-+ m_welcome.c \
+ m_webirc.c \
++ m_welcome.c \
m_who.c \
m_whois.c \
m_whowas.c \
-@@ -216,6 +217,7 @@
+@@ -217,6 +218,7 @@
send.c \
uping.c \
userload.c \
whocmds.c \
whowas.c \
y.tab.c
-@@ -1162,6 +1164,11 @@
+@@ -1163,6 +1165,11 @@
../include/ircd_reply.h ../include/ircd_string.h \
../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \
../include/numnicks.h ../include/s_user.h ../include/send.h
m_who.o: m_who.c ../config.h ../include/channel.h ../include/ircd_defs.h \
../include/res.h ../config.h ../include/client.h ../include/dbuf.h \
../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \
-@@ -1423,6 +1430,13 @@
+@@ -1424,6 +1431,13 @@
../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \
../include/s_misc.h ../include/s_stats.h ../include/send.h \
../include/struct.h ../include/sys.h
whocmds.o: whocmds.c ../config.h ../include/whocmds.h \
../include/channel.h ../include/ircd_defs.h ../include/res.h \
../config.h ../include/client.h ../include/dbuf.h ../include/msgq.h \
-diff -r 9096546c6212 ircd/client.c
---- a/ircd/client.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/client.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/client.c
+--- a/ircd/client.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/client.c Sat Jul 20 15:40:27 2013 +0100
@@ -177,6 +177,7 @@
FlagSet(&privs_local, PRIV_WHOX);
FlagSet(&privs_local, PRIV_DISPLAY);
#undef P
{ 0, 0 }
};
-diff -r 9096546c6212 ircd/ircd_features.c
---- a/ircd/ircd_features.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/ircd_features.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/ircd_features.c
+--- a/ircd/ircd_features.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/ircd_features.c Sat Jul 20 15:40:27 2013 +0100
@@ -366,6 +366,7 @@
F_I(IRCD_RES_TIMEOUT, 0, 4, 0),
F_I(AUTH_TIMEOUT, 0, 9, 0),
F_B(HIS_STATS_w, 0, 1, 0),
F_B(HIS_STATS_x, 0, 1, 0),
F_B(HIS_STATS_y, 0, 1, 0),
-diff -r 9096546c6212 ircd/ircd_lexer.l
---- a/ircd/ircd_lexer.l Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/ircd_lexer.l Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/ircd_lexer.l
+--- a/ircd/ircd_lexer.l Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/ircd_lexer.l Sat Jul 20 15:40:27 2013 +0100
@@ -166,6 +166,8 @@
{ "serverinfo", TPRIV_SERVERINFO },
{ "user_privacy", TPRIV_USER_PRIVACY },
{ NULL, 0 }
};
static int ntokens;
-diff -r 9096546c6212 ircd/ircd_parser.y
---- a/ircd/ircd_parser.y Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/ircd_parser.y Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/ircd_parser.y
+--- a/ircd/ircd_parser.y Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/ircd_parser.y Sat Jul 20 15:40:27 2013 +0100
@@ -189,6 +189,7 @@
%token TPRIV_CHANSERV TPRIV_XTRA_OPER TPRIV_NOIDLE TPRIV_FREEFORM TPRIV_PARANOID
%token TPRIV_CHECK TPRIV_WALL TPRIV_CLOSE TPRIV_ROUTE TPRIV_ROUTEINFO TPRIV_SERVERINFO
TPRIV_PARANOID { $$ = PRIV_PARANOID; } ;
yesorno: YES { $$ = 1; } | NO { $$ = 0; };
-diff -r 9096546c6212 ircd/m_welcome.c
+diff -r 530975e1fd87 ircd/m_welcome.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/ircd/m_welcome.c Sat Jul 20 12:00:55 2013 +0100
++++ b/ircd/m_welcome.c Sat Jul 20 15:40:27 2013 +0100
@@ -0,0 +1,360 @@
+/*
+ * IRC - Internet Relay Chat, ircd/m_welcome.c
+ /* and do it */
+ return welcome_do(cptr, sptr, name, create, lastmod, who, text, flags);
+}
-diff -r 9096546c6212 ircd/parse.c
---- a/ircd/parse.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/parse.c Sat Jul 20 12:00:55 2013 +0100
-@@ -668,6 +668,15 @@
+diff -r 530975e1fd87 ircd/parse.c
+--- a/ircd/parse.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/parse.c Sat Jul 20 15:40:27 2013 +0100
+@@ -675,6 +675,15 @@
/* UNREG, CLIENT, SERVER, OPER, SERVICE */
{ m_unregistered, m_not_oper, ms_check, mo_check, m_ignore }
},
/* This command is an alias for QUIT during the unregistered part of
* of the server. This is because someone jumping via a broken web
-diff -r 9096546c6212 ircd/s_debug.c
---- a/ircd/s_debug.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_debug.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_debug.c
+--- a/ircd/s_debug.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_debug.c Sat Jul 20 15:40:27 2013 +0100
@@ -50,6 +50,7 @@
#include "send.h"
#include "struct.h"
send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG,
":Hash: client %d(%zu), chan is the same", HASHSIZE,
sizeof(void *) * HASHSIZE);
-diff -r 9096546c6212 ircd/s_err.c
---- a/ircd/s_err.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_err.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_err.c
+--- a/ircd/s_err.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_err.c Sat Jul 20 15:40:27 2013 +0100
@@ -486,7 +486,7 @@
/* 226 */
{ RPL_STATSALINE, "%s", "226" },
/* 510 */
{ 0 },
/* 511 */
-diff -r 9096546c6212 ircd/s_serv.c
---- a/ircd/s_serv.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_serv.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_serv.c
+--- a/ircd/s_serv.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_serv.c Sat Jul 20 15:40:27 2013 +0100
@@ -57,6 +57,7 @@
#include "struct.h"
#include "sys.h"
/*
* Pass on my client information to the new server
-diff -r 9096546c6212 ircd/s_stats.c
---- a/ircd/s_stats.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_stats.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_stats.c
+--- a/ircd/s_stats.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_stats.c Sat Jul 20 15:40:27 2013 +0100
@@ -54,6 +54,7 @@
#include "send.h"
#include "struct.h"
{ 'x', "memusage", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_x,
stats_meminfo, 0,
"List usage information." },
-diff -r 9096546c6212 ircd/s_user.c
---- a/ircd/s_user.c Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_user.c Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_user.c
+--- a/ircd/s_user.c Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_user.c Sat Jul 20 15:40:27 2013 +0100
@@ -63,6 +63,7 @@
#include "userload.h"
#include "version.h"
/* TODO: */
/* apply auto sethost if needed */
apply_spoofblock(sptr);
-diff -r 9096546c6212 ircd/welcome.c
+diff -r 530975e1fd87 ircd/welcome.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/ircd/welcome.c Sat Jul 20 12:00:55 2013 +0100
++++ b/ircd/welcome.c Sat Jul 20 15:40:27 2013 +0100
@@ -0,0 +1,877 @@
+/*
+ * IRC - Internet Relay Chat, ircd/welcome.c