1/* 2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights 7 * Reserved. This file contains Original Code and/or Modifications of 8 * Original Code as defined in and that are subject to the Apple Public 9 * Source License Version 1.0 (the 'License'). You may not use this file 10 * except in compliance with the License. Please obtain a copy of the 11 * License at http://www.apple.com/publicsource and read it before using 12 * this file. 13 * 14 * The Original Code and all software distributed under the License are 15 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 19 * License for the specific language governing rights and limitations 20 * under the License." 21 * 22 * @APPLE_LICENSE_HEADER_END@ 23 */ 24/* $OpenBSD: yplog.c,v 1.5 1997/08/09 22:44:04 maja Exp $ */ 25 26/* 27 * Copyright (c) 1996 Charles D. Cranor 28 * All rights reserved. 29 * 30 * Redistribution and use in source and binary forms, with or without 31 * modification, are permitted provided that the following conditions 32 * are met: 33 * 1. Redistributions of source code must retain the above copyright 34 * notice, this list of conditions and the following disclaimer. 35 * 2. Redistributions in binary form must reproduce the above copyright 36 * notice, this list of conditions and the following disclaimer in the 37 * documentation and/or other materials provided with the distribution. 38 * 3. All advertising materials mentioning features or use of this software 39 * must display the following acknowledgement: 40 * This product includes software developed by Charles D. Cranor. 41 * 4. The name of the author may not be used to endorse or promote products 42 * derived from this software without specific prior written permission. 43 * 44 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 45 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 46 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 47 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 48 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 49 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 50 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 51 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 52 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 53 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 54 */ 55 56/* 57 * yplog.c: replacement yplog routines for 58 * Mats O Jansson's ypserv program, as added by 59 * Chuck Cranor. 60 */ 61 62#include <stdio.h> 63#include <unistd.h> 64#include <sys/types.h> 65#include <sys/stat.h> 66#include <time.h> 67#ifdef __STDC__ 68#include <stdarg.h> 69#else 70#include <varargs.h> 71#endif 72#include "yplog.h" 73 74static FILE *logfp = NULL; /* the log file */ 75 76/* 77 * yplog(): like a printf, but to the log file. does the flush 78 * and data for you. 79 */ 80 81void 82#ifdef __STDC__ 83yplog(const char *fmt, ...) 84#else 85yplog(fmt, va_alist) 86 char *fmt; 87 va_dcl 88#endif 89{ 90 va_list ap; 91 92#ifdef __STDC__ 93 va_start(ap, fmt); 94#else 95 va_start(ap); 96#endif 97 vyplog(fmt, ap); 98 va_end(ap); 99} 100 101/* 102 * vyplog() support routine for yplog() 103 */ 104 105void 106vyplog(fmt, ap) 107 register const char *fmt; 108 va_list ap; 109{ 110 time_t t; 111 112 if (logfp == NULL) 113 return; 114 (void)time(&t); 115 fprintf(logfp,"%.15s ", ctime(&t) + 4); 116 vfprintf(logfp, fmt, ap); 117 fprintf(logfp,"\n"); 118 fflush(logfp); 119} 120 121/* 122 * open log 123 */ 124 125void 126ypopenlog() 127{ 128 static char logfn[] = "/var/yp/ypserv.log"; 129 130 if (access(logfn, W_OK) == -1) 131 return; 132 logfp = fopen("/var/yp/ypserv.log", "a"); 133 if (logfp == NULL) 134 return; 135 yplog("yplog opened"); 136} 137 138/* 139 * close log 140 */ 141 142void 143ypcloselog() 144{ 145 if (logfp) { 146 yplog("yplog closed"); 147 fclose(logfp); 148 logfp = NULL; 149 } 150} 151