1 |
|
|
/* $OpenBSD: yplog.c,v 1.8 2002/07/19 02:38:40 deraadt Exp $ */ |
2 |
|
|
|
3 |
|
|
/* |
4 |
|
|
* Copyright (c) 1996 Charles D. Cranor |
5 |
|
|
* All rights reserved. |
6 |
|
|
* |
7 |
|
|
* Redistribution and use in source and binary forms, with or without |
8 |
|
|
* modification, are permitted provided that the following conditions |
9 |
|
|
* are met: |
10 |
|
|
* 1. Redistributions of source code must retain the above copyright |
11 |
|
|
* notice, this list of conditions and the following disclaimer. |
12 |
|
|
* 2. Redistributions in binary form must reproduce the above copyright |
13 |
|
|
* notice, this list of conditions and the following disclaimer in the |
14 |
|
|
* documentation and/or other materials provided with the distribution. |
15 |
|
|
* 3. All advertising materials mentioning features or use of this software |
16 |
|
|
* must display the following acknowledgement: |
17 |
|
|
* This product includes software developed by Charles D. Cranor. |
18 |
|
|
* 4. The name of the author may not be used to endorse or promote products |
19 |
|
|
* derived from this software without specific prior written permission. |
20 |
|
|
* |
21 |
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
22 |
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
23 |
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
24 |
|
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
25 |
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
26 |
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
27 |
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
28 |
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
29 |
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
30 |
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
31 |
|
|
*/ |
32 |
|
|
|
33 |
|
|
/* |
34 |
|
|
* yplog.c: replacement yplog routines for |
35 |
|
|
* Mats O Jansson's ypserv program, as added by |
36 |
|
|
* Chuck Cranor. |
37 |
|
|
*/ |
38 |
|
|
|
39 |
|
|
#include <stdio.h> |
40 |
|
|
#include <unistd.h> |
41 |
|
|
#include <sys/types.h> |
42 |
|
|
#include <sys/stat.h> |
43 |
|
|
#include <stdarg.h> |
44 |
|
|
#include "yplog.h" |
45 |
|
|
|
46 |
|
|
static FILE *logfp = NULL; /* the log file */ |
47 |
|
|
|
48 |
|
|
/* |
49 |
|
|
* yplog(): like a printf, but to the log file. does the flush |
50 |
|
|
* and data for you. |
51 |
|
|
*/ |
52 |
|
|
void |
53 |
|
|
yplog(const char *fmt, ...) |
54 |
|
|
{ |
55 |
|
|
va_list ap; |
56 |
|
|
|
57 |
|
|
va_start(ap, fmt); |
58 |
|
|
vyplog(fmt, ap); |
59 |
|
|
va_end(ap); |
60 |
|
|
} |
61 |
|
|
|
62 |
|
|
/* |
63 |
|
|
* vyplog() support routine for yplog() |
64 |
|
|
*/ |
65 |
|
|
void |
66 |
|
|
vyplog(const char *fmt, va_list ap) |
67 |
|
|
{ |
68 |
|
|
time_t t; |
69 |
|
|
|
70 |
|
|
if (logfp == NULL) |
71 |
|
|
return; |
72 |
|
|
(void)time(&t); |
73 |
|
|
fprintf(logfp,"%.15s ", ctime(&t) + 4); |
74 |
|
|
vfprintf(logfp, fmt, ap); |
75 |
|
|
fprintf(logfp,"\n"); |
76 |
|
|
fflush(logfp); |
77 |
|
|
} |
78 |
|
|
|
79 |
|
|
/* |
80 |
|
|
* open log |
81 |
|
|
*/ |
82 |
|
|
void |
83 |
|
|
ypopenlog(void) |
84 |
|
|
{ |
85 |
|
|
static char logfn[] = "/var/yp/ypserv.log"; |
86 |
|
|
|
87 |
|
|
if (access(logfn, W_OK) == -1) |
88 |
|
|
return; |
89 |
|
|
logfp = fopen("/var/yp/ypserv.log", "a"); |
90 |
|
|
if (logfp == NULL) |
91 |
|
|
return; |
92 |
|
|
yplog("yplog opened"); |
93 |
|
|
} |
94 |
|
|
|
95 |
|
|
/* |
96 |
|
|
* close log |
97 |
|
|
*/ |
98 |
|
|
void |
99 |
|
|
ypcloselog(void) |
100 |
|
|
{ |
101 |
|
|
if (logfp) { |
102 |
|
|
yplog("yplog closed"); |
103 |
|
|
fclose(logfp); |
104 |
|
|
logfp = NULL; |
105 |
|
|
} |
106 |
|
|
} |