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