[PATCH 04/14] Add _REENT_STDIN(ptr)

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

Add a _REENT_STDIN() macro to encapsulate access to the _stdin
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 b995b56d2..c802b3737 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -167,11 +167,11 @@ typedef _ssize_t ssize_t;
 
 #define	TMP_MAX		26
 
-#define	stdin	(_REENT->_stdin)
+#define	stdin	_REENT_STDIN(_REENT)
 #define	stdout	(_REENT->_stdout)
 #define	stderr	(_REENT->_stderr)
 
-#define _stdin_r(x)	((x)->_stdin)
+#define _stdin_r(x)	_REENT_STDIN(x)
 #define _stdout_r(x)	((x)->_stdout)
 #define _stderr_r(x)	((x)->_stderr)
 
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index 70a987100..801fe20f4 100644
--- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h
@@ -720,6 +720,7 @@ struct _reent
 
 #define _REENT_EMERGENCY(_ptr)	((_ptr)->_emergency)
 #define _REENT_ERRNO(_ptr)	((_ptr)->_errno)
+#define _REENT_STDIN(_ptr)	((_ptr)->_stdin)
 
 #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 0d3e636f9..5e9202820 100644
--- a/newlib/libc/include/wchar.h
+++ b/newlib/libc/include/wchar.h
@@ -320,13 +320,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)
+#define getwchar()	fgetwc(_REENT_STDIN(_REENT))
 #define putwchar(wc)	fputwc((wc), _REENT->_stdout)
 
 #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)
+#define getwchar_unlocked()	fgetwc_unlocked(_REENT_STDIN(_REENT))
 #define putwchar_unlocked(wc)	fputwc_unlocked((wc), _REENT->_stdout)
 #endif
 
diff --git a/newlib/libc/machine/spu/stdio.c b/newlib/libc/machine/spu/stdio.c
index 1dcc88b60..756628303 100644
--- a/newlib/libc/machine/spu/stdio.c
+++ b/newlib/libc/machine/spu/stdio.c
@@ -67,8 +67,8 @@ __sinit (struct _reent *s)
 {
   s->__cleanup = __cleanup;
 
-  s->_stdin = &s->__sf[0];
-  s->_stdin->_fp = SPE_STDIN;
+  _REENT_STDIN(s) = &s->__sf[0];
+  _REENT_STDIN(s)->_fp = SPE_STDIN;
 
   s->_stdout = &s->__sf[1];
   s->_stdout->_fp = SPE_STDOUT;
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index c7a4a941e..d2292d3e0 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -218,8 +218,8 @@ found:
 static void
 cleanup_stdio (struct _reent *ptr)
 {
-  if (ptr->_stdin != &__sf[0])
-    CLEANUP_FILE (ptr, ptr->_stdin);
+  if (_REENT_STDIN(ptr) != &__sf[0])
+    CLEANUP_FILE (ptr, _REENT_STDIN(ptr));
   if (ptr->_stdout != &__sf[1])
     CLEANUP_FILE (ptr, ptr->_stdout);
   if (ptr->_stderr != &__sf[2])
-- 
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.