xref: /freebsd/usr.sbin/nscd/debug.c (revision 1d386b48a555f61cb7325543adbbb5c3f3407a66)
106a99fe3SHajimu UMEMOTO /*-
206a99fe3SHajimu UMEMOTO  * Copyright (c) 2004 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 <stdio.h>
30a5a5d924SDag-Erling Smørgrav 
3106a99fe3SHajimu UMEMOTO #include "debug.h"
3206a99fe3SHajimu UMEMOTO 
3306a99fe3SHajimu UMEMOTO static	int	trace_level = 0;
3406a99fe3SHajimu UMEMOTO static	int	trace_level_bk = 0;
3506a99fe3SHajimu UMEMOTO 
3606a99fe3SHajimu UMEMOTO void
nscd_trace_in(const char * s,const char * f,int l)37570706f8SDag-Erling Smørgrav nscd_trace_in(const char *s, const char *f, int l)
3806a99fe3SHajimu UMEMOTO {
3906a99fe3SHajimu UMEMOTO 	int i;
4006a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
4106a99fe3SHajimu UMEMOTO 	{
4206a99fe3SHajimu UMEMOTO 		for (i = 0; i < trace_level; ++i)
4306a99fe3SHajimu UMEMOTO 			printf("\t");
4406a99fe3SHajimu UMEMOTO 
4506a99fe3SHajimu UMEMOTO 		printf("=> %s\n", s);
4606a99fe3SHajimu UMEMOTO 	}
4706a99fe3SHajimu UMEMOTO 
4806a99fe3SHajimu UMEMOTO 	++trace_level;
4906a99fe3SHajimu UMEMOTO }
5006a99fe3SHajimu UMEMOTO 
5106a99fe3SHajimu UMEMOTO void
nscd_trace_point(const char * f,int l)52570706f8SDag-Erling Smørgrav nscd_trace_point(const char *f, int l)
5306a99fe3SHajimu UMEMOTO {
5406a99fe3SHajimu UMEMOTO 	int i;
5506a99fe3SHajimu UMEMOTO 
5606a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
5706a99fe3SHajimu UMEMOTO 	{
5806a99fe3SHajimu UMEMOTO 		for (i = 0; i < trace_level - 1; ++i)
5906a99fe3SHajimu UMEMOTO 			printf("\t");
6006a99fe3SHajimu UMEMOTO 
6106a99fe3SHajimu UMEMOTO 		printf("= %s: %d\n", f, l);
6206a99fe3SHajimu UMEMOTO 	}
6306a99fe3SHajimu UMEMOTO }
6406a99fe3SHajimu UMEMOTO 
6506a99fe3SHajimu UMEMOTO void
nscd_trace_msg(const char * msg,const char * f,int l)66570706f8SDag-Erling Smørgrav nscd_trace_msg(const char *msg, const char *f, int l)
6706a99fe3SHajimu UMEMOTO {
6806a99fe3SHajimu UMEMOTO 	int i;
6906a99fe3SHajimu UMEMOTO 
7006a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
7106a99fe3SHajimu UMEMOTO 	{
7206a99fe3SHajimu UMEMOTO 		for (i = 0; i < trace_level - 1; ++i)
7306a99fe3SHajimu UMEMOTO 			printf("\t");
7406a99fe3SHajimu UMEMOTO 
7506a99fe3SHajimu UMEMOTO 		printf("= MSG %s, %s: %d\n", msg, f, l);
7606a99fe3SHajimu UMEMOTO 	}
7706a99fe3SHajimu UMEMOTO }
7806a99fe3SHajimu UMEMOTO 
7906a99fe3SHajimu UMEMOTO void
nscd_trace_ptr(const char * desc,const void * p,const char * f,int l)80570706f8SDag-Erling Smørgrav nscd_trace_ptr(const char *desc, const void *p, const char *f, int l)
8106a99fe3SHajimu UMEMOTO {
8206a99fe3SHajimu UMEMOTO 	int i;
8306a99fe3SHajimu UMEMOTO 
8406a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
8506a99fe3SHajimu UMEMOTO 	{
8606a99fe3SHajimu UMEMOTO 		for (i = 0; i < trace_level - 1; ++i)
8706a99fe3SHajimu UMEMOTO 			printf("\t");
8806a99fe3SHajimu UMEMOTO 
8906a99fe3SHajimu UMEMOTO 		printf("= PTR %s: %p, %s: %d\n", desc, p, f, l);
9006a99fe3SHajimu UMEMOTO 	}
9106a99fe3SHajimu UMEMOTO }
9206a99fe3SHajimu UMEMOTO 
9306a99fe3SHajimu UMEMOTO void
nscd_trace_int(const char * desc,int i,const char * f,int l)94570706f8SDag-Erling Smørgrav nscd_trace_int(const char *desc, int i, const char *f, int l)
9506a99fe3SHajimu UMEMOTO {
9606a99fe3SHajimu UMEMOTO 	int j;
9706a99fe3SHajimu UMEMOTO 
9806a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
9906a99fe3SHajimu UMEMOTO 	{
10006a99fe3SHajimu UMEMOTO 		for (j = 0; j < trace_level - 1; ++j)
10106a99fe3SHajimu UMEMOTO 			printf("\t");
10206a99fe3SHajimu UMEMOTO 
10306a99fe3SHajimu UMEMOTO 		printf("= INT %s: %i, %s: %d\n",desc, i, f, l);
10406a99fe3SHajimu UMEMOTO 	}
10506a99fe3SHajimu UMEMOTO }
10606a99fe3SHajimu UMEMOTO 
10706a99fe3SHajimu UMEMOTO void
nscd_trace_str(const char * desc,const char * s,const char * f,int l)108570706f8SDag-Erling Smørgrav nscd_trace_str(const char *desc, const char *s, const char *f, int l)
10906a99fe3SHajimu UMEMOTO {
11006a99fe3SHajimu UMEMOTO 	int i;
11106a99fe3SHajimu UMEMOTO 
11206a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
11306a99fe3SHajimu UMEMOTO 	{
11406a99fe3SHajimu UMEMOTO 		for (i = 0; i < trace_level - 1; ++i)
11506a99fe3SHajimu UMEMOTO 			printf("\t");
11606a99fe3SHajimu UMEMOTO 
11706a99fe3SHajimu UMEMOTO 		printf("= STR %s: '%s', %s: %d\n", desc, s, f, l);
11806a99fe3SHajimu UMEMOTO 	}
11906a99fe3SHajimu UMEMOTO }
12006a99fe3SHajimu UMEMOTO 
12106a99fe3SHajimu UMEMOTO void
nscd_trace_out(const char * s,const char * f,int l)122570706f8SDag-Erling Smørgrav nscd_trace_out(const char *s, const char *f, int l)
12306a99fe3SHajimu UMEMOTO {
12406a99fe3SHajimu UMEMOTO 	int i;
12506a99fe3SHajimu UMEMOTO 
12606a99fe3SHajimu UMEMOTO 	--trace_level;
12706a99fe3SHajimu UMEMOTO 	if (trace_level < TRACE_WANTED)
12806a99fe3SHajimu UMEMOTO 	{
12906a99fe3SHajimu UMEMOTO 		for (i = 0; i < trace_level; ++i)
13006a99fe3SHajimu UMEMOTO 			printf("\t");
13106a99fe3SHajimu UMEMOTO 
132*323d76dbSEdward Tomasz Napierala 		printf("<= %s, %s: %d\n", s, f, l);
13306a99fe3SHajimu UMEMOTO 	}
13406a99fe3SHajimu UMEMOTO }
13506a99fe3SHajimu UMEMOTO 
13606a99fe3SHajimu UMEMOTO void
nscd_trace_on(void)137570706f8SDag-Erling Smørgrav nscd_trace_on(void)
13806a99fe3SHajimu UMEMOTO {
13906a99fe3SHajimu UMEMOTO 	trace_level = trace_level_bk;
14006a99fe3SHajimu UMEMOTO 	trace_level_bk = 0;
14106a99fe3SHajimu UMEMOTO }
14206a99fe3SHajimu UMEMOTO 
14306a99fe3SHajimu UMEMOTO void
nscd_trace_off(void)144570706f8SDag-Erling Smørgrav nscd_trace_off(void)
14506a99fe3SHajimu UMEMOTO {
14606a99fe3SHajimu UMEMOTO 	trace_level_bk = trace_level;
14706a99fe3SHajimu UMEMOTO 	trace_level = 1024;
14806a99fe3SHajimu UMEMOTO }
149