Author: Isomer <isomer@coders.net>
[ircu2.10.12-pk.git] / ircd / support.c
index 6f9821173a88e6f523d2f83840baa8c39019066c..93a94e362bc6235c112e19aecc7926020671b821 100644 (file)
@@ -22,6 +22,7 @@
 #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;
@@ -112,7 +68,7 @@ extern void write_log(const char *filename, const char *pattern, ...)
   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);