ac1f7d49be7bb89d6e0dd7013aceea63cbdb7dd0
[ircu2.10.12-pk.git] / ircd / support.c
1 /*
2  * IRC - Internet Relay Chat, common/support.c
3  * Copyright (C) 1990, 1991 Armin Gruner
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 1, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  *
19  * $Id$
20  */
21 #include "support.h"
22 #include "fileio.h"
23 #include "ircd.h"
24 #include "ircd_chattr.h"
25 #include "ircd_snprintf.h"
26 #include "s_bsd.h"
27 #include "s_debug.h"
28 #include "send.h"
29 #include "sprintf_irc.h"
30 #include "sys.h"
31
32 #include <signal.h>   /* kill */
33 #include <stdarg.h>
34 #include <stdio.h>
35 #include <string.h>
36 #include <time.h>
37 #include <unistd.h>
38
39 int check_if_ipmask(const char *mask)
40 {
41   int has_digit = 0;
42   const char *p;
43
44   for (p = mask; *p; ++p)
45     if (*p != '*' && *p != '?' && *p != '.')
46     {
47       if (!IsDigit(*p))
48         return 0;
49       has_digit = -1;
50     }
51
52   return has_digit;
53 }
54
55 /* Moved from logf() in whocmds.c to here. Modified a 
56  * bit and used for most logging now.
57  *  -Ghostwolf 12-Jul-99
58  */
59
60 extern void write_log(const char *filename, const char *pattern, ...)
61 {
62   FBFILE *logfile;
63   va_list vl;
64   static char logbuf[1024];
65
66   logfile = fbopen(filename, "a");
67
68   if (logfile)
69   {
70     va_start(vl, pattern);
71     ircd_vsnprintf(0, logbuf, sizeof(logbuf) - 1, pattern, vl);
72     va_end(vl);
73
74     fbputs(logbuf, logfile);
75     fbclose(logfile);
76   }
77 }