From: Paul Smith Date: Sun, 23 Oct 2022 22:36:44 +0000 (-0400) Subject: Provide a maintainer-only debug method X-Git-Tag: 4.3.92~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c46b5a9e0e06678052d4561401eea96d2f677d05;p=thirdparty%2Fmake.git Provide a maintainer-only debug method Generating debug logs to stdout or stderr makes it impossible to run tests etc. so create a dumb DBG facility to log to a temp file. This exists only in maintainer mode and the DBG macro gives a compile error if it's used in non-maintainer mode. * src/makeint.h (DBG): Call dbg() in maintainer mode, else error. (dbg): Define it in maintainer mode. * src/misc.c (dbg): Open a log file for append, write, then close. --- diff --git a/src/makeint.h b/src/makeint.h index f9de63d0..e345011b 100644 --- a/src/makeint.h +++ b/src/makeint.h @@ -658,8 +658,12 @@ int unload_file (const char *name); #ifdef MAKE_MAINTAINER_MODE # define SPIN(_s) spin (_s) void spin (const char* suffix); +# define DBG(_f) dbg _f +void dbg (const char *fmt, ...); #else # define SPIN(_s) +/* Never put this code into Git or a release. */ +# define DBG(_f) compile-error #endif /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION, diff --git a/src/misc.c b/src/misc.c index 18728f35..4f52e78c 100644 --- a/src/misc.c +++ b/src/misc.c @@ -530,6 +530,22 @@ spin (const char* type) } } +void +dbg (const char *fmt, ...) +{ + FILE *fp = fopen ("/tmp/gmkdebug.log", "a+"); + va_list args; + char buf[4096]; + + va_start (args, fmt); + vsprintf (buf, fmt, args); + va_end (args); + + fprintf(fp, "%u: %s\n", (unsigned) make_pid (), buf); + fflush (fp); + fclose (fp); +} + #endif