X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fcloseout.c;h=69ddb8b239d80b203c8ce0aaac1983cff27e9ee2;hb=6ea7ea7d376e3112b946577431830294a67760d4;hp=f298d4bed89ed00ea83fd3d8906a29fbae71d05a;hpb=cd6cd3bd41bf69ca65c62a2f96de0ed89cb3c16e;p=gnulib.git
diff --git a/lib/closeout.c b/lib/closeout.c
index f298d4bed..69ddb8b23 100644
--- a/lib/closeout.c
+++ b/lib/closeout.c
@@ -1,12 +1,12 @@
-/* Close standard output, exiting with a diagnostic on error.
+/* Close standard output and standard error, exiting with a diagnostic on error.
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 Free
Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -14,12 +14,9 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program. If not, see . */
-#ifdef HAVE_CONFIG_H
-# include
-#endif
+#include
#include "closeout.h"
@@ -48,6 +45,8 @@ close_stdout_set_file_name (const char *file)
/* Close standard output. On error, issue a diagnostic and _exit
with status 'exit_failure'.
+ Also close standard error. On error, _exit with status 'exit_failure'.
+
Since close_stdout is commonly registered via 'atexit', POSIX
and the C standard both say that it should not call 'exit',
because the behavior is undefined if 'exit' is called more than
@@ -80,4 +79,7 @@ close_stdout (void)
_exit (exit_failure);
}
+
+ if (close_stream (stderr) != 0)
+ _exit (exit_failure);
}