[PATCH 05/14] Add _REENT_STDOUT(ptr)

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
From: Matt Joyce <[email protected]>

Add a _REENT_STDOUT() macro to encapsulate access to the _stdout
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.
---
 newlib/libc/include/stdio.h     | 4 ++--
 newlib/libc/include/sys/reent.h | 1 +
 newlib/libc/include/wchar.h     | 4 ++--
 newlib/libc/machine/spu/stdio.c | 4 ++--
 newlib/libc/stdio/findfp.c      | 4 ++--
 5 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
index c802b3737..95cc55fa9 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -168,11 +168,11 @@ typedef _ssize_t ssize_t;
 #define	TMP_MAX		26
 
 #define	stdin	_REENT_STDIN(_REENT)
-#define	stdout	(_REENT->_stdout)
+#define	stdout	_REENT_STDOUT(_REENT)
 #define	stderr	(_REENT->_stderr)
 
 #define _stdin_r(x)	_REENT_STDIN(x)
-#define _stdout_r(x)	((x)->_stdout)
+#define _stdout_r(x)	_REENT_STDOUT(x)
 #define _stderr_r(x)	((x)->_stderr)
 
 /*
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index 801fe20f4..652a330cb 100644
--- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h
@@ -721,6 +721,7 @@ struct _reent
 #define _REENT_EMERGENCY(_ptr)	((_ptr)->_emergency)
 #define _REENT_ERRNO(_ptr)	((_ptr)->_errno)
 #define _REENT_STDIN(_ptr)	((_ptr)->_stdin)
+#define _REENT_STDOUT(_ptr)	((_ptr)->_stdout)
 
 #define _REENT_INIT_PTR(var) \
   { memset((var), 0, sizeof(*(var))); \
diff --git a/newlib/libc/include/wchar.h b/newlib/libc/include/wchar.h
index 5e9202820..7c37427e6 100644
--- a/newlib/libc/include/wchar.h
+++ b/newlib/libc/include/wchar.h
@@ -321,13 +321,13 @@ int	_wscanf_r (struct _reent *, const wchar_t *, ...);
 #define getwc(fp)	fgetwc(fp)
 #define putwc(wc,fp)	fputwc((wc), (fp))
 #define getwchar()	fgetwc(_REENT_STDIN(_REENT))
-#define putwchar(wc)	fputwc((wc), _REENT->_stdout)
+#define putwchar(wc)	fputwc((wc), _REENT_STDOUT(_REENT))
 
 #if __GNU_VISIBLE
 #define getwc_unlocked(fp)	fgetwc_unlocked(fp)
 #define putwc_unlocked(wc,fp)	fputwc_unlocked((wc), (fp))
 #define getwchar_unlocked()	fgetwc_unlocked(_REENT_STDIN(_REENT))
-#define putwchar_unlocked(wc)	fputwc_unlocked((wc), _REENT->_stdout)
+#define putwchar_unlocked(wc)	fputwc_unlocked((wc), _REENT_STDOUT(_REENT))
 #endif
 
 _END_STD_C
diff --git a/newlib/libc/machine/spu/stdio.c b/newlib/libc/machine/spu/stdio.c
index 756628303..769b8f1c9 100644
--- a/newlib/libc/machine/spu/stdio.c
+++ b/newlib/libc/machine/spu/stdio.c
@@ -70,8 +70,8 @@ __sinit (struct _reent *s)
   _REENT_STDIN(s) = &s->__sf[0];
   _REENT_STDIN(s)->_fp = SPE_STDIN;
 
-  s->_stdout = &s->__sf[1];
-  s->_stdout->_fp = SPE_STDOUT;
+  _REENT_STDOUT(s) = &s->__sf[1];
+  _REENT_STDOUT(s)->_fp = SPE_STDOUT;
 
   s->_stderr = &s->__sf[2];
   s->_stderr->_fp = SPE_STDERR;
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index d2292d3e0..04e3517a7 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -220,8 +220,8 @@ cleanup_stdio (struct _reent *ptr)
 {
   if (_REENT_STDIN(ptr) != &__sf[0])
     CLEANUP_FILE (ptr, _REENT_STDIN(ptr));
-  if (ptr->_stdout != &__sf[1])
-    CLEANUP_FILE (ptr, ptr->_stdout);
+  if (_REENT_STDOUT(ptr) != &__sf[1])
+    CLEANUP_FILE (ptr, _REENT_STDOUT(ptr));
   if (ptr->_stderr != &__sf[2])
     CLEANUP_FILE (ptr, ptr->_stderr);
 }
-- 
2.35.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.