--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pdcurses/debug.c Thu Jul 23 18:07:39 2015 +0300 @@ -0,0 +1,81 @@ +/* Public Domain Curses */ + +#include <curspriv.h> + +RCSID("$Id: debug.c,v 1.7 2008/07/13 16:08:18 wmcbrine Exp $") + +/*man-start************************************************************** + + Name: debug + + Synopsis: + void traceon(void); + void traceoff(void); + void PDC_debug(const char *, ...); + + Description: + traceon() and traceoff() toggle the recording of debugging + information to the file "trace". Although not standard, similar + functions are in some other curses implementations. + + PDC_debug() is the function that writes to the file, based on + whether traceon() has been called. It's used from the PDC_LOG() + macro. + + Portability X/Open BSD SYS V + traceon - - - + traceoff - - - + PDC_debug - - - + +**man-end****************************************************************/ + +#include <string.h> +#include <sys/types.h> +#include <time.h> + +bool pdc_trace_on = FALSE; + +void PDC_debug(const char *fmt, ...) +{ + va_list args; + FILE *dbfp; + char hms[9]; + time_t now; + + if (!pdc_trace_on) + return; + + /* open debug log file append */ + + dbfp = fopen("trace", "a"); + if (!dbfp) + { + fprintf(stderr, + "PDC_debug(): Unable to open debug log file\n"); + return; + } + + time(&now); + strftime(hms, 9, "%H:%M:%S", localtime(&now)); + fprintf(dbfp, "At: %8.8ld - %s ", (long) clock(), hms); + + va_start(args, fmt); + vfprintf(dbfp, fmt, args); + va_end(args); + + fclose(dbfp); +} + +void traceon(void) +{ + PDC_LOG(("traceon() - called\n")); + + pdc_trace_on = TRUE; +} + +void traceoff(void) +{ + PDC_LOG(("traceoff() - called\n")); + + pdc_trace_on = FALSE; +}