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