X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftrace%2Flib_trace.c;h=80ab6e1224409a9bb8266808ed1451e0d9139d3f;hp=140d8e54e198f3137d169cc671f6960924f569a4;hb=989279b4d718c26ccc7bad2dfba099e4788f5da3;hpb=ee27d238caeccd1ed781a92957afbdb890e1e88f diff --git a/ncurses/trace/lib_trace.c b/ncurses/trace/lib_trace.c index 140d8e54..80ab6e12 100644 --- a/ncurses/trace/lib_trace.c +++ b/ncurses/trace/lib_trace.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. * + * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -47,7 +47,7 @@ #include -MODULE_ID("$Id: lib_trace.c,v 1.84 2016/11/27 02:35:17 tom Exp $") +MODULE_ID("$Id: lib_trace.c,v 1.86 2017/01/14 17:53:42 tom Exp $") NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */ @@ -87,6 +87,7 @@ NCURSES_EXPORT_VAR(long) _nc_outchars = 0; #define MyFP _nc_globals.trace_fp #define MyFD _nc_globals.trace_fd +#define MyInit _nc_globals.trace_opened #define MyPath _nc_globals.trace_fname #define MyLevel _nc_globals.trace_level #define MyNested _nc_globals.nested_tracef @@ -95,6 +96,7 @@ NCURSES_EXPORT(void) trace(const unsigned int tracelevel) { if ((MyFP == 0) && tracelevel) { + MyInit = TRUE; if (MyFD >= 0) { MyFP = fdopen(MyFD, "wb"); } else { @@ -156,6 +158,13 @@ _nc_va_tracef(const char *fmt, va_list ap) bool after = FALSE; unsigned doit = _nc_tracing; int save_err = errno; + FILE *fp = MyFP; + +#ifdef TRACE + /* verbose-trace in the command-line utilities relies on this */ + if (fp == 0 && !MyInit && _nc_tracing >= DEBUG_LEVEL(1)) + fp = stderr; +#endif if (strlen(fmt) >= sizeof(Called) - 1) { if (!strncmp(fmt, Called, sizeof(Called) - 1)) { @@ -173,7 +182,7 @@ _nc_va_tracef(const char *fmt, va_list ap) } } - if (doit != 0 && MyFP != 0) { + if (doit != 0 && fp != 0) { #ifdef USE_PTHREADS /* * TRACE_ICALLS is "really" needed to show normal use with threaded @@ -188,19 +197,19 @@ _nc_va_tracef(const char *fmt, va_list ap) if ((pthread_self)) # endif #ifdef __MINGW32__ - fprintf(MyFP, "%#lx:", (long) (intptr_t) pthread_self().p); + fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self().p); #else - fprintf(MyFP, "%#lx:", (long) (intptr_t) pthread_self()); + fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self()); #endif #endif if (before || after) { int n; for (n = 1; n < MyLevel; n++) - fputs("+ ", MyFP); + fputs("+ ", fp); } - vfprintf(MyFP, fmt, ap); - fputc('\n', MyFP); - fflush(MyFP); + vfprintf(fp, fmt, ap); + fputc('\n', fp); + fflush(fp); } if (after && MyLevel)