11193SN/A/*- 29330SN/A * Copyright (c) 2004 Michael Bushkov <bushman@rsu.ru> 31193SN/A * All rights reserved. 41193SN/A * 51193SN/A * Redistribution and use in source and binary forms, with or without 61193SN/A * modification, are permitted provided that the following conditions 72362SN/A * are met: 81193SN/A * 1. Redistributions of source code must retain the above copyright 92362SN/A * notice, this list of conditions and the following disclaimer. 101193SN/A * 2. Redistributions in binary form must reproduce the above copyright 111193SN/A * notice, this list of conditions and the following disclaimer in the 121193SN/A * documentation and/or other materials provided with the distribution. 131193SN/A * 141193SN/A * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 151193SN/A * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 161193SN/A * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 171193SN/A * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 181193SN/A * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 191193SN/A * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 201193SN/A * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 212362SN/A * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 222362SN/A * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 232362SN/A * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 241193SN/A * SUCH DAMAGE. 251193SN/A * 263793SN/A */ 271193SN/A 283793SN/A#include <sys/cdefs.h> 293793SN/A__FBSDID("$FreeBSD$"); 303793SN/A 313793SN/A#include <stdio.h> 3215328Sredestad 331193SN/A#include "debug.h" 341193SN/A 354183SN/Astatic int trace_level = 0; 363792SN/Astatic int trace_level_bk = 0; 371193SN/A 3815328Sredestadvoid 3915328Sredestadnscd_trace_in(const char *s, const char *f, int l) 4010626Svlivanov{ 4115328Sredestad int i; 4215328Sredestad if (trace_level < TRACE_WANTED) 4310626Svlivanov { 4415328Sredestad for (i = 0; i < trace_level; ++i) 4515328Sredestad printf("\t"); 4610626Svlivanov 4710626Svlivanov printf("=> %s\n", s); 4815328Sredestad } 4910626Svlivanov 5010626Svlivanov ++trace_level; 5115328Sredestad} 5215328Sredestad 5315328Sredestadvoid 5415328Sredestadnscd_trace_point(const char *f, int l) 5515328Sredestad{ 5615328Sredestad int i; 5715328Sredestad 5810626Svlivanov if (trace_level < TRACE_WANTED) 5910626Svlivanov { 6010626Svlivanov for (i = 0; i < trace_level - 1; ++i) 6110626Svlivanov printf("\t"); 6210626Svlivanov 631193SN/A printf("= %s: %d\n", f, l); 6410626Svlivanov } 651193SN/A} 661193SN/A 671193SN/Avoid 681193SN/Anscd_trace_msg(const char *msg, const char *f, int l) 691193SN/A{ 704183SN/A int i; 714183SN/A 724183SN/A if (trace_level < TRACE_WANTED) 734183SN/A { 744183SN/A for (i = 0; i < trace_level - 1; ++i) 7510626Svlivanov printf("\t"); 7610626Svlivanov 7710626Svlivanov printf("= MSG %s, %s: %d\n", msg, f, l); 784183SN/A } 794183SN/A} 8010626Svlivanov 814183SN/Avoid 821193SN/Anscd_trace_ptr(const char *desc, const void *p, const char *f, int l) 831193SN/A{ 8410626Svlivanov int i; 8510626Svlivanov 8610626Svlivanov if (trace_level < TRACE_WANTED) 874183SN/A { 884183SN/A for (i = 0; i < trace_level - 1; ++i) 8910626Svlivanov printf("\t"); 904183SN/A 911193SN/A printf("= PTR %s: %p, %s: %d\n", desc, p, f, l); 921193SN/A } 9310626Svlivanov} 9410626Svlivanov 9510626Svlivanovvoid 964183SN/Anscd_trace_int(const char *desc, int i, const char *f, int l) 974183SN/A{ 9810626Svlivanov int j; 994183SN/A 1001193SN/A if (trace_level < TRACE_WANTED) 1011193SN/A { 10210626Svlivanov for (j = 0; j < trace_level - 1; ++j) 10310626Svlivanov printf("\t"); 10410626Svlivanov 1054183SN/A printf("= INT %s: %i, %s: %d\n",desc, i, f, l); 1064183SN/A } 10710626Svlivanov} 1084183SN/A 1091193SN/Avoid 1101193SN/Anscd_trace_str(const char *desc, const char *s, const char *f, int l) 11110626Svlivanov{ 11210626Svlivanov int i; 11310626Svlivanov 1144183SN/A if (trace_level < TRACE_WANTED) 1154183SN/A { 11610626Svlivanov for (i = 0; i < trace_level - 1; ++i) 1174183SN/A printf("\t"); 1181193SN/A 1191193SN/A printf("= STR %s: '%s', %s: %d\n", desc, s, f, l); 12010626Svlivanov } 12110626Svlivanov} 12210626Svlivanov 1234183SN/Avoid 1244183SN/Anscd_trace_out(const char *s, const char *f, int l) 12510626Svlivanov{ 1264183SN/A int i; 1271193SN/A 1281193SN/A --trace_level; 12910626Svlivanov if (trace_level < TRACE_WANTED) 13010626Svlivanov { 13110626Svlivanov for (i = 0; i < trace_level; ++i) 1324183SN/A printf("\t"); 1334183SN/A 13410626Svlivanov printf("<= %s\n", s); 1354183SN/A } 1361193SN/A} 1371193SN/A 13810626Svlivanovvoid 13910626Svlivanovnscd_trace_on(void) 14010626Svlivanov{ 1414183SN/A trace_level = trace_level_bk; 1424183SN/A trace_level_bk = 0; 14310626Svlivanov} 1444183SN/A 1451193SN/Avoid 1461193SN/Anscd_trace_off(void) 14710626Svlivanov{ 14810626Svlivanov trace_level_bk = trace_level; 14910626Svlivanov trace_level = 1024; 1505688SN/A} 1511193SN/A