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