#include "fileio.h"
#include "ircd.h"
#include "ircd_chattr.h"
+#include "ircd_snprintf.h"
#include "s_bsd.h"
#include "s_debug.h"
#include "send.h"
#include <time.h>
#include <unistd.h>
-#ifdef DEBUGMODE
-
-void dumpcore(const char *pattern, ...)
-{
- va_list vl;
- static time_t lastd = 0;
- static int dumps = 0;
- char corename[12];
- time_t now;
- int p;
-
- va_start(vl, pattern);
-
- now = time(NULL);
-
- if (!lastd)
- lastd = now;
- else if (now - lastd < 60 && dumps > 2)
- server_die("too many core dumps");
- if (now - lastd > 60)
- {
- lastd = now;
- dumps = 1;
- }
- else
- dumps++;
- p = getpid();
- if (fork() > 0)
- {
- kill(p, 3);
- kill(p, 9);
- }
- sprintf_irc(corename, "core.%d", p);
- rename("core", corename);
- Debug((DEBUG_FATAL, "Dumped core : core.%d", p));
- sendto_ops("Dumped core : core.%d", p);
- vdebug(DEBUG_FATAL, pattern, vl);
- vsendto_ops(pattern, vl);
- va_end(vl);
-
- server_die("debug core dump");
-
-}
-#endif
-
int check_if_ipmask(const char *mask)
{
int has_digit = 0;
const char *p;
for (p = mask; *p; ++p)
- if (*p != '*' && *p != '?' && *p != '.')
+ if (*p != '*' && *p != '?' && *p != '.' && *p != '/')
{
if (!IsDigit(*p))
return 0;
if (logfile)
{
va_start(vl, pattern);
- vsprintf_irc(logbuf, pattern, vl);
+ ircd_vsnprintf(0, logbuf, sizeof(logbuf) - 1, pattern, vl);
va_end(vl);
fbputs(logbuf, logfile);