static int pandecode_dump_frame_count = 0;
static void
-pandecode_dump_file_open(void)
+pandecode_dump_file_open(bool force_stderr)
{
if (pandecode_dump_stream)
return;
- char buffer[1024];
-
/* This does a getenv every frame, so it is possible to use
* setenv to change the base at runtime.
*/
const char *dump_file_base = debug_get_option("PANDECODE_DUMP_FILE", "pandecode.dump");
- snprintf(buffer, sizeof(buffer), "%s.%04d", dump_file_base, pandecode_dump_frame_count);
-
- printf("pandecode: dump command stream to file %s\n", buffer);
- pandecode_dump_stream = fopen(buffer, "w");
-
- if (!pandecode_dump_stream)
- fprintf(stderr,"pandecode: failed to open command stream log file %s\n",
- buffer);
+ if (force_stderr || !strcmp(dump_file_base, "stderr"))
+ pandecode_dump_stream = stderr;
+ else {
+ char buffer[1024];
+ snprintf(buffer, sizeof(buffer), "%s.%04d", dump_file_base, pandecode_dump_frame_count);
+ printf("pandecode: dump command stream to file %s\n", buffer);
+ pandecode_dump_stream = fopen(buffer, "w");
+ if (!pandecode_dump_stream)
+ fprintf(stderr,
+ "pandecode: failed to open command stream log file %s\n",
+ buffer);
+ }
}
static void
pandecode_dump_file_close(void)
{
- if (pandecode_dump_stream) {
+ if (pandecode_dump_stream && pandecode_dump_stream != stderr) {
fclose(pandecode_dump_stream);
pandecode_dump_stream = NULL;
}
pandecode_initialize(bool to_stderr)
{
list_inithead(&mmaps.node);
-
- if (to_stderr)
- pandecode_dump_stream = stderr;
- else
- pandecode_dump_file_open();
+ pandecode_dump_file_open(to_stderr);
}
void
{
pandecode_dump_file_close();
pandecode_dump_frame_count++;
- pandecode_dump_file_open();
+ pandecode_dump_file_open(false);
}
void