From c6db6f0e471752f5e5f61a067ea6e72149d5f4e7 Mon Sep 17 00:00:00 2001 From: chuck Date: Sat, 20 Jan 1996 00:30:35 +0000 Subject: [PATCH] Total re-write of yplog by Chuck Cranor (made it more printf like) --- usr.sbin/ypserv/common/yplog.c | 171 ++++++++++++++++----------------- usr.sbin/ypserv/common/yplog.h | 15 +-- 2 files changed, 86 insertions(+), 100 deletions(-) diff --git a/usr.sbin/ypserv/common/yplog.c b/usr.sbin/ypserv/common/yplog.c index 59ec35becd5..60951f6ae66 100644 --- a/usr.sbin/ypserv/common/yplog.c +++ b/usr.sbin/ypserv/common/yplog.c @@ -1,5 +1,8 @@ +/* $Id: yplog.c,v 1.2 1996/01/20 00:30:42 chuck Exp $ */ + /* - * Copyright (c) 1994 Mats O Jansson + * + * Copyright (c) 1996 Charles D. Cranor * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -10,121 +13,109 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Charles D. Cranor. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef LINT -static char rcsid[] = "$Id: yplog.c,v 1.1 1995/11/01 16:56:20 deraadt Exp $"; -#endif +/* + * yplog.c: replacement yplog routines for + * Mats O Jansson's ypserv program, as added by + * Chuck Cranor. + */ #include -#include -#include #include -#include -#include -#include -#include -#include +#include -FILE *yplogfile; +#if __STDC__ +#include +#else +#include +#endif +#include "yplog.h" -void -yplog_date(line) - char *line; -{ - char datestr[20]; - time_t t; +static FILE *logfp = NULL; /* the log file */ - if (yplogfile != NULL) { - (void)time(&t); - (void)strftime(datestr,20,"%b %d %T",localtime(&t)); - fprintf(yplogfile,"%s %s\n",datestr,line); - fflush(yplogfile); - } -} +/* + * yplog(): like a printf, but to the log file. does the flush + * and data for you. + */ void -yplog_line(line) - char *line; +#if __STDC__ +yplog(const char *fmt, ...) +#else +yplog(fmt, va_alist) + char *fmt; + va_dcl +#endif { - if (yplogfile != NULL) { - fprintf(yplogfile," %s\n",line); - fflush(yplogfile); - } -} + va_list ap; -void -yplog_str(line) - char *line; -{ - if (yplogfile != NULL) { - fprintf(yplogfile," %s",line); - fflush(yplogfile); - } +#if __STDC__ + va_start(ap, fmt); +#else + va_start(ap); +#endif + vyplog(fmt, ap); + va_end(ap); } -void -yplog_cat(line) - char *line; -{ - if (yplogfile != NULL) { - fprintf(yplogfile,"%s",line); - fflush(yplogfile); - } -} +/* + * vyplog() support routine for yplog() + */ void -yplog_call(transp) - SVCXPRT *transp; +vyplog(fmt, ap) + register const char *fmt; + va_list ap; { - struct sockaddr_in *caller; + time_t t; - if (yplogfile != NULL) { - caller = svc_getcaller(transp); - fprintf(yplogfile," caller: %s %d\n", - inet_ntoa(caller->sin_addr), - ntohs(caller->sin_port)); - fflush(yplogfile); - } + if (!logfp) return; + (void)time(&t); + fprintf(logfp,"%.15s ", ctime(&t) + 4); + vfprintf(logfp, fmt, ap); + fprintf(logfp,"\n"); + fflush(logfp); } +/* + * open log + */ + void -yplog_init(progname) - char *progname; +ypopenlog() { - char file_path[255]; - struct stat finfo; - - sprintf(file_path,"/var/yp/%s.log",progname); - if ((stat(file_path, &finfo) == 0) && - ((finfo.st_mode & S_IFMT) == S_IFREG)) { - yplogfile = fopen(file_path,"a"); - sprintf(file_path,"%s[%d] : started",progname,getpid()); - yplog_date(file_path); - } + logfp = fopen("/var/yp/ypserv.log", "a"); + if (!logfp) return; + yplog("yplog opened"); } +/* + * close log + */ + void -yplog_exit() +ypcloselog() { - if (yplogfile != NULL) { - yplog_date("controlled shutdown"); - fclose(yplogfile); + if (logfp) { + yplog("yplog closed"); + fclose(logfp); + logfp = NULL; } } - diff --git a/usr.sbin/ypserv/common/yplog.h b/usr.sbin/ypserv/common/yplog.h index 77b1ea46097..dc2cdb05ac3 100644 --- a/usr.sbin/ypserv/common/yplog.h +++ b/usr.sbin/ypserv/common/yplog.h @@ -26,22 +26,17 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: yplog.h,v 1.1 1995/11/01 16:56:21 deraadt Exp $ + * $Id: yplog.h,v 1.2 1996/01/20 00:30:35 chuck Exp $ */ #ifndef _YPLOG_H_ #define _YPLOG_H_ __BEGIN_DECLS -void yplog_date __P((char *)); -void yplog_line __P((char *)); -void yplog_str __P((char *)); -void yplog_cat __P((char *)); -#ifdef _RPC_SVC_H -void yplog_call __P((SVCXPRT *)); -#endif -void yplog_init __P((char *)); -void yplog_exit __P(()); +void yplog __P((const char *, ...)); +void vyplog __P((const char *, _BSD_VA_LIST_)); +void ypopenlog __P((void)); +void ypcloselog __P((void)); __END_DECLS #endif /* !_YPLOG_H_ */ -- 2.20.1