summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/stdio/findfp.c4
-rw-r--r--newlib/libc/stdio/local.h10
3 files changed, 19 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 60074fc76..4f8ad0588 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-25 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * libc/stdio/local.h (_STDIO_CLOSE_PER_REENT_STD_STREAMS): New define.
+ * libc/stdio/findfp.c (_STDIO_CLOSE_PER_REENT_STD_STREAMS): Use define.
+
2013-04-24 Corinna Vinschen <vinschen@redhat.com>
Nick Clifton <nickc@redhat.com>
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index 7ab3bdba5..e40500a07 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -62,7 +62,11 @@ _DEFUN(std, (ptr, flags, file, data),
ptr->_flags |= __SL64;
#endif /* __LARGE64_FILES */
ptr->_seek = __sseek;
+#ifdef _STDIO_CLOSE_PER_REENT_STD_STREAMS
ptr->_close = __sclose;
+#else /* _STDIO_CLOSE_STD_STREAMS */
+ ptr->_close = NULL;
+#endif /* _STDIO_CLOSE_STD_STREAMS */
#if !defined(__SINGLE_THREAD__) && !defined(_REENT_SMALL)
__lock_init_recursive (ptr->_lock);
/*
diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h
index cbfeac77d..ec5efab49 100644
--- a/newlib/libc/stdio/local.h
+++ b/newlib/libc/stdio/local.h
@@ -32,6 +32,16 @@
# include <io.h>
#endif
+/* The following define determines if the per-reent stdin, stdout and stderr
+ streams are closed during _reclaim_reent(). The stdin, stdout and stderr
+ streams are initialized to use file descriptors 0, 1 and 2 respectively. In
+ case _STDIO_CLOSE_PER_REENT_STD_STREAMS is defined these file descriptors
+ will be closed via close() provided the owner of the reent structure
+ triggerd the on demand reent initilization, see CHECK_INIT(). */
+#ifndef __rtems__
+#define _STDIO_CLOSE_PER_REENT_STD_STREAMS
+#endif
+
/* The following macros are supposed to replace calls to _flockfile/_funlockfile
and __sfp_lock_acquire/__sfp_lock_release. In case of multi-threaded
environments using pthreads, it's not sufficient to lock the stdio functions