xref: /freebsd/usr.sbin/nscd/log.c (revision 1d386b48a555f61cb7325543adbbb5c3f3407a66)
106a99fe3SHajimu UMEMOTO /*-
206a99fe3SHajimu UMEMOTO  * Copyright (c) 2005 Michael Bushkov <bushman@rsu.ru>
306a99fe3SHajimu UMEMOTO  * All rights reserved.
406a99fe3SHajimu UMEMOTO  *
506a99fe3SHajimu UMEMOTO  * Redistribution and use in source and binary forms, with or without
606a99fe3SHajimu UMEMOTO  * modification, are permitted provided that the following conditions
706a99fe3SHajimu UMEMOTO  * are met:
806a99fe3SHajimu UMEMOTO  * 1. Redistributions of source code must retain the above copyright
906a99fe3SHajimu UMEMOTO  *    notice, this list of conditions and the following disclaimer.
1006a99fe3SHajimu UMEMOTO  * 2. Redistributions in binary form must reproduce the above copyright
1106a99fe3SHajimu UMEMOTO  *    notice, this list of conditions and the following disclaimer in the
1206a99fe3SHajimu UMEMOTO  *    documentation and/or other materials provided with the distribution.
1306a99fe3SHajimu UMEMOTO  *
1406a99fe3SHajimu UMEMOTO  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1506a99fe3SHajimu UMEMOTO  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1606a99fe3SHajimu UMEMOTO  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1706a99fe3SHajimu UMEMOTO  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1806a99fe3SHajimu UMEMOTO  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1906a99fe3SHajimu UMEMOTO  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2006a99fe3SHajimu UMEMOTO  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2106a99fe3SHajimu UMEMOTO  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2206a99fe3SHajimu UMEMOTO  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2306a99fe3SHajimu UMEMOTO  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2406a99fe3SHajimu UMEMOTO  * SUCH DAMAGE.
2506a99fe3SHajimu UMEMOTO  *
2606a99fe3SHajimu UMEMOTO  */
2706a99fe3SHajimu UMEMOTO 
2806a99fe3SHajimu UMEMOTO #include <sys/cdefs.h>
2906a99fe3SHajimu UMEMOTO #include <assert.h>
3006a99fe3SHajimu UMEMOTO #include <stdarg.h>
3106a99fe3SHajimu UMEMOTO #include <stdio.h>
3206a99fe3SHajimu UMEMOTO #include <stdlib.h>
3306a99fe3SHajimu UMEMOTO #include <syslog.h>
34a5a5d924SDag-Erling Smørgrav 
3506a99fe3SHajimu UMEMOTO #include "log.h"
3606a99fe3SHajimu UMEMOTO 
3706a99fe3SHajimu UMEMOTO void
__log_msg(int level,const char * sender,const char * message,...)3806a99fe3SHajimu UMEMOTO __log_msg(int level, const char *sender, const char *message, ...)
3906a99fe3SHajimu UMEMOTO {
4006a99fe3SHajimu UMEMOTO 	va_list ap;
4106a99fe3SHajimu UMEMOTO 	char	*fmessage;
4206a99fe3SHajimu UMEMOTO 
4306a99fe3SHajimu UMEMOTO 	fmessage = NULL;
4406a99fe3SHajimu UMEMOTO 	va_start(ap, message);
4506a99fe3SHajimu UMEMOTO 	vasprintf(&fmessage, message, ap);
4606a99fe3SHajimu UMEMOTO 	va_end(ap);
4706a99fe3SHajimu UMEMOTO 	assert(fmessage != NULL);
4806a99fe3SHajimu UMEMOTO 
4906a99fe3SHajimu UMEMOTO 	printf("M%d from %s: %s\n", level, sender, fmessage);
5006a99fe3SHajimu UMEMOTO #ifndef NO_SYSLOG
5106a99fe3SHajimu UMEMOTO 	if (level == 0)
52db1bdf2bSMichael Bushkov 		syslog(LOG_INFO, "nscd message (from %s): %s", sender,
5306a99fe3SHajimu UMEMOTO 		fmessage);
5406a99fe3SHajimu UMEMOTO #endif
5506a99fe3SHajimu UMEMOTO 	free(fmessage);
5606a99fe3SHajimu UMEMOTO }
5706a99fe3SHajimu UMEMOTO 
5806a99fe3SHajimu UMEMOTO void
__log_err(int level,const char * sender,const char * error,...)5906a99fe3SHajimu UMEMOTO __log_err(int level, const char *sender, const char *error, ...)
6006a99fe3SHajimu UMEMOTO {
6106a99fe3SHajimu UMEMOTO 	va_list ap;
6206a99fe3SHajimu UMEMOTO 	char	*ferror;
6306a99fe3SHajimu UMEMOTO 
6406a99fe3SHajimu UMEMOTO 	ferror = NULL;
6506a99fe3SHajimu UMEMOTO 	va_start(ap, error);
6606a99fe3SHajimu UMEMOTO 	vasprintf(&ferror, error, ap);
6706a99fe3SHajimu UMEMOTO 	va_end(ap);
6806a99fe3SHajimu UMEMOTO 	assert(ferror != NULL);
6906a99fe3SHajimu UMEMOTO 
7006a99fe3SHajimu UMEMOTO 	printf("E%d from %s: %s\n", level, sender, ferror);
7106a99fe3SHajimu UMEMOTO 
7206a99fe3SHajimu UMEMOTO #ifndef NO_SYSLOG
7306a99fe3SHajimu UMEMOTO 	if (level == 0)
74db1bdf2bSMichael Bushkov 		syslog(LOG_ERR, "nscd error (from %s): %s", sender, ferror);
7506a99fe3SHajimu UMEMOTO #endif
7606a99fe3SHajimu UMEMOTO 	free(ferror);
7706a99fe3SHajimu UMEMOTO }
78