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