Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2005-02-08 22:38:47 +0300
committerJeff Johnston <jjohnstn@redhat.com>2005-02-08 22:38:47 +0300
commit1d7dd82d694755b854c500b1563287390149afc7 (patch)
tree05e3cd99b8311e5cc5d055357d32fdf9e61ae21d
parent01d9b1612c8658d4ebe4243462edea09dffc03e9 (diff)
2005-02-08 Antony King <antony.king@st.com>
* arm/syscalls.c: Change CHECK_INIT to pass reentrant struct instead of file pointer.
-rw-r--r--libgloss/ChangeLog5
-rw-r--r--libgloss/arm/syscalls.c24
2 files changed, 13 insertions, 16 deletions
diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog
index 4a7aed0cc..680fe7985 100644
--- a/libgloss/ChangeLog
+++ b/libgloss/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-08 Antony King <antony.king@st.com>
+
+ * arm/syscalls.c: Change CHECK_INIT to pass reentrant struct
+ instead of file pointer.
+
2005-02-01 Hans-Peter Nilsson <hp@axis.com>
* cris/Makefile.in (ALL_INSTALL_FILES): New macro.
diff --git a/libgloss/arm/syscalls.c b/libgloss/arm/syscalls.c
index 42e69b7b0..e89022806 100644
--- a/libgloss/arm/syscalls.c
+++ b/libgloss/arm/syscalls.c
@@ -55,20 +55,17 @@ register char * stack_ptr asm ("sp");
/* following is copied from libc/stdio/local.h to check std streams */
extern void _EXFUN(__sinit,(struct _reent *));
-#define CHECK_INIT(fp) \
- do \
- { \
- if ((fp)->_data == 0) \
- (fp)->_data = _REENT; \
- if (!(fp)->_data->__sdidinit) \
- __sinit ((fp)->_data); \
- } \
+#define CHECK_INIT(ptr) \
+ do \
+ { \
+ if ((ptr) && !(ptr)->__sdidinit) \
+ __sinit (ptr); \
+ } \
while (0)
/* Adjust our internal handles to stay away from std* handles. */
#define FILE_HANDLE_OFFSET (0x20)
-static int std_files_checked;
static int monitor_stdin;
static int monitor_stdout;
static int monitor_stderr;
@@ -119,13 +116,8 @@ do_AngelSWI (int reason, void * arg)
static int
remap_handle (int fh)
{
- if (!std_files_checked)
- {
- CHECK_INIT(stdin);
- CHECK_INIT(stdout);
- CHECK_INIT(stderr);
- std_files_checked = 1;
- }
+ CHECK_INIT(_REENT);
+
if (fh == STDIN_FILENO)
return monitor_stdin;
if (fh == STDOUT_FILENO)