From 9c8568743935f0892bb5bd33f5a5210bae53b8d3 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 22 May 2012 09:32:50 -0600 Subject: util: add GALLIUM_LOG_FILE option for logging output to a file Useful for logging different runs to files and diffing, etc. --- src/gallium/auxiliary/os/os_misc.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src/gallium/auxiliary/os') diff --git a/src/gallium/auxiliary/os/os_misc.c b/src/gallium/auxiliary/os/os_misc.c index 5744dd5b4fc..447e7208f69 100644 --- a/src/gallium/auxiliary/os/os_misc.c +++ b/src/gallium/auxiliary/os/os_misc.c @@ -50,16 +50,35 @@ void os_log_message(const char *message) { + /* If the GALLIUM_LOG_FILE environment variable is set to a valid filename, + * write all messages to that file. + */ + static FILE *fout = NULL; + + if (!fout) { + /* one-time init */ + const char *filename = os_get_option("GALLIUM_LOG_FILE"); + if (filename) + fout = fopen(filename, "w"); + if (!fout) + fout = stderr; + } + #if defined(PIPE_SUBSYSTEM_WINDOWS_USER) OutputDebugStringA(message); if(GetConsoleWindow() && !IsDebuggerPresent()) { fflush(stdout); - fputs(message, stderr); - fflush(stderr); + fputs(message, fout); + fflush(fout); + } + else if (fout != stderr) { + fputs(message, fout); + fflush(fout); } #else /* !PIPE_SUBSYSTEM_WINDOWS */ fflush(stdout); - fputs(message, stderr); + fputs(message, fout); + fflush(fout); #endif } -- cgit v1.2.3