| /* 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; |
| } |