1 /* $NetBSD: ctrace.c,v 1.20 2009/01/17 15:25:36 christos Exp $ */
4 * Copyright (c) 1992, 1993
5 * The Regents of the University of California. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 #include <sys/cdefs.h>
35 static char sccsid
[] = "@(#)ctrace.c 8.2 (Berkeley) 10/5/93";
37 __RCSID("$NetBSD: ctrace.c,v 1.20 2009/01/17 15:25:36 christos Exp $");
50 #include "curses_private.h"
52 static FILE *tracefp
= NULL
; /* Curses debugging file descriptor. */
54 static int tracemask
; /* Areas of trace output we want. */
56 static int init_done
= 0;
63 tm
= getenv("CURSES_TRACE_MASK");
65 tracemask
= __CTRACE_ALL
;
67 tracemask
= (int) strtol(tm
, NULL
, 0);
70 tracemask
= (0 - tracemask
) ^ __CTRACE_ALL
;
74 tf
= getenv("CURSES_TRACE_FILE");
76 if ((tf
!= NULL
) && !strcmp( tf
, "<none>"))
80 tracefp
= fopen(tf
, "w");
83 __CTRACE(__CTRACE_ALL
, "Trace mask: 0x%08x\n", tracemask
);
87 __CTRACE(int area
, const char *fmt
,...)
90 static int seencr
= 1;
95 if (tracefp
== NULL
|| !(tracemask
& area
)) {
98 gettimeofday(&tv
, NULL
);
99 if (seencr
&& (tracemask
& __CTRACE_TSTAMP
)) {
100 gettimeofday(&tv
, NULL
);
101 (void) fprintf(tracefp
, "%llu.%06lu: ",
102 (long long)tv
.tv_sec
, (long)tv
.tv_usec
);
105 (void) vfprintf(tracefp
, fmt
, ap
);
106 seencr
= (strchr(fmt
, '\n') != NULL
);
108 (void) fflush(tracefp
);
111 /* this kills the empty translation unit message from lint... */
113 __cursesi_make_lint_shut_up_if_debug_not_defined(void);
116 __cursesi_make_lint_shut_up_if_debug_not_defined(void)