X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=driver%2Fstderr.c;h=5f337c0059c059ed147db3ab6a2d575b583bd6d0;hp=d4361df8d5e3a4f72732e3f0282ad5b141faa3f4;hb=a94197e76a5dea5cb60542840809d6c20d0abbf3;hpb=8eb2873d7054e705c4e83f22d18c40946a9e2529 diff --git a/driver/stderr.c b/driver/stderr.c index d4361df8..5f337c00 100644 --- a/driver/stderr.c +++ b/driver/stderr.c @@ -1,5 +1,5 @@ /* stderr.c --- capturing stdout/stderr output onto the screensaver window. - * xscreensaver, Copyright (c) 1991-1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-1998, 2001 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -478,6 +478,9 @@ initialize_stderr (saver_info *si) void shutdown_stderr (saver_info *si) { + fflush (stdout); + fflush (stderr); + if (!real_stderr || stderr_stdout_read_fd < 0) return; @@ -489,7 +492,16 @@ shutdown_stderr (saver_info *si) { *stderr_tail = 0; fprintf (real_stderr, "%s", stderr_buffer); - fflush (real_stderr); stderr_tail = stderr_buffer; } + + if (real_stdout) fflush (real_stdout); + if (real_stderr) fflush (real_stderr); + + if (stdout != real_stdout) + dup2 (fileno(real_stdout), fileno(stdout)); + if (stderr != real_stderr) + dup2 (fileno(real_stderr), fileno(stderr)); + + stderr_stdout_read_fd = -1; }