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.
#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,
}
}
+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
\f