xref: /netbsd-src/external/bsd/nvi/dist/common/trace.c (revision 2f698edb5c1cb2dcd9e762b0abb50c41dde8b6b7)
1*2f698edbSchristos /*	$NetBSD: trace.c,v 1.4 2014/01/26 21:43:45 christos Exp $	*/
2dbd550edSchristos /*-
3dbd550edSchristos  * Copyright (c) 1996
4dbd550edSchristos  *	Rob Zimmermann.  All rights reserved.
5dbd550edSchristos  * Copyright (c) 1996
6dbd550edSchristos  *	Keith Bostic.  All rights reserved.
7dbd550edSchristos  *
8dbd550edSchristos  * See the LICENSE file for redistribution information.
9dbd550edSchristos  */
10dbd550edSchristos 
11dbd550edSchristos #include "config.h"
12dbd550edSchristos 
13*2f698edbSchristos #include <sys/cdefs.h>
14*2f698edbSchristos #if 0
15dbd550edSchristos #ifndef lint
16dbd550edSchristos static const char sccsid[] = "Id: trace.c,v 8.4 1997/08/03 15:04:23 bostic Exp  (Berkeley) Date: 1997/08/03 15:04:23 ";
17dbd550edSchristos #endif /* not lint */
18*2f698edbSchristos #else
19*2f698edbSchristos __RCSID("$NetBSD: trace.c,v 1.4 2014/01/26 21:43:45 christos Exp $");
20*2f698edbSchristos #endif
21dbd550edSchristos 
22dbd550edSchristos #include <sys/queue.h>
23dbd550edSchristos 
24dbd550edSchristos #include <bitstring.h>
25dbd550edSchristos #include <stdio.h>
26dbd550edSchristos 
27dbd550edSchristos #ifdef __STDC__
28dbd550edSchristos #include <stdarg.h>
29dbd550edSchristos #else
30dbd550edSchristos #include <varargs.h>
31dbd550edSchristos #endif
32dbd550edSchristos 
33dbd550edSchristos #include "common.h"
34dbd550edSchristos 
35dbd550edSchristos #ifdef TRACE
36dbd550edSchristos 
37dbd550edSchristos static FILE *tfp;
38dbd550edSchristos 
39dbd550edSchristos /*
40dbd550edSchristos  * vtrace_end --
41dbd550edSchristos  *	End tracing.
42dbd550edSchristos  *
43dbd550edSchristos  * PUBLIC: void vtrace_end __P((void));
44dbd550edSchristos  */
45dbd550edSchristos void
vtrace_end(void)46fabe6cc1Schristos vtrace_end(void)
47dbd550edSchristos {
48dbd550edSchristos 	if (tfp != NULL && tfp != stderr)
49dbd550edSchristos 		(void)fclose(tfp);
50dbd550edSchristos }
51dbd550edSchristos 
52dbd550edSchristos /*
53dbd550edSchristos  * vtrace_init --
54dbd550edSchristos  *	Initialize tracing.
55dbd550edSchristos  *
56fabe6cc1Schristos  * PUBLIC: void vtrace_init __P((const char *));
57dbd550edSchristos  */
58dbd550edSchristos void
vtrace_init(const char * name)59fabe6cc1Schristos vtrace_init(const char *name)
60dbd550edSchristos {
61dbd550edSchristos 	if (name == NULL || (tfp = fopen(name, "w")) == NULL)
62dbd550edSchristos 		tfp = stderr;
63dbd550edSchristos 	vtrace("\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nTRACE\n");
64dbd550edSchristos }
65dbd550edSchristos 
66dbd550edSchristos /*
67dbd550edSchristos  * vtrace --
68dbd550edSchristos  *	Debugging trace routine.
69dbd550edSchristos  *
70dbd550edSchristos  * PUBLIC: void vtrace __P((const char *, ...));
71dbd550edSchristos  */
72dbd550edSchristos void
vtrace(const char * fmt,...)73dbd550edSchristos vtrace(const char *fmt, ...)
74dbd550edSchristos {
75dbd550edSchristos 	va_list ap;
76dbd550edSchristos 
77dbd550edSchristos 	if (tfp == NULL)
78dbd550edSchristos 		vtrace_init(NULL);
79dbd550edSchristos 
80dbd550edSchristos 	va_start(ap, fmt);
81dbd550edSchristos 	(void)vfprintf(tfp, fmt, ap);
82dbd550edSchristos 	va_end(ap);
83dbd550edSchristos 
84dbd550edSchristos 	(void)fflush(tfp);
85dbd550edSchristos }
86dbd550edSchristos #endif
87