81a38c2d8499ce110a751ed08336aa16e3dfbdb9
[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 "s_bsd.h"
26 #include "s_debug.h"
27 #include "send.h"
28 #include "sprintf_irc.h"
29 #include "sys.h"
30
31 #include <signal.h>   /* kill */
32 #include <stdarg.h>
33 #include <stdio.h>
34 #include <string.h>
35 #include <time.h>
36 #include <unistd.h>
37
38 int check_if_ipmask(const char *mask)
39 {
40   int has_digit = 0;
41   const char *p;
42
43   for (p = mask; *p; ++p)
44     if (*p != '*' && *p != '?' && *p != '.')
45     {
46       if (!IsDigit(*p))
47         return 0;
48       has_digit = -1;
49     }
50
51   return has_digit;
52 }
53
54 /* Moved from logf() in whocmds.c to here. Modified a 
55  * bit and used for most logging now.
56  *  -Ghostwolf 12-Jul-99
57  */
58
59 extern void write_log(const char *filename, const char *pattern, ...)
60 {
61   FBFILE *logfile;
62   va_list vl;
63   static char logbuf[1024];
64
65   logfile = fbopen(filename, "a");
66
67   if (logfile)
68   {
69     va_start(vl, pattern);
70     vsprintf_irc(logbuf, pattern, vl);
71     va_end(vl);
72
73     fbputs(logbuf, logfile);
74     fbclose(logfile);
75   }
76 }