X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fstderr.c;h=84fa697290d6268c34846fb36fb548ea56b8503a;hb=c85f503f5793839a6be4c818332aca4a96927bb2;hp=68e752132e15c201d691e2180002cbe71bdc3b55;hpb=de460e831dc8578acfa8b72251ab9346c99c1f96;p=xscreensaver diff --git a/driver/stderr.c b/driver/stderr.c index 68e75213..84fa6972 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-2008 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2016 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 @@ -464,6 +464,7 @@ initialize_stderr (saver_info *si) perror ("could not dup() a new stdout:"); return; } + close (out); } stderr_stdout_read_fd = in; @@ -509,7 +510,7 @@ stderr_log_file (saver_info *si) "%s: logging to \"%s\" at %s\n" "##########################################################################\n" "\n", - blurb(), filename, timestring()); + blurb(), filename, timestring(0)); } @@ -540,9 +541,20 @@ shutdown_stderr (saver_info *si) if (real_stderr) fflush (real_stderr); if (stdout != real_stdout) - dup2 (fileno(real_stdout), fileno(stdout)); + { + dup2 (fileno(real_stdout), fileno(stdout)); + fclose (real_stdout); + real_stdout = stdout; + } if (stderr != real_stderr) - dup2 (fileno(real_stderr), fileno(stderr)); - - stderr_stdout_read_fd = -1; + { + dup2 (fileno(real_stderr), fileno(stderr)); + fclose (real_stderr); + real_stderr = stderr; + } + if (stderr_stdout_read_fd != -1) + { + close (stderr_stdout_read_fd); + stderr_stdout_read_fd = -1; + } }