From 1d7dd82d694755b854c500b1563287390149afc7 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 8 Feb 2005 19:38:47 +0000 Subject: [PATCH] 2005-02-08 Antony King * arm/syscalls.c: Change CHECK_INIT to pass reentrant struct instead of file pointer. --- libgloss/ChangeLog | 5 +++++ libgloss/arm/syscalls.c | 24 ++++++++---------------- 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 + + * arm/syscalls.c: Change CHECK_INIT to pass reentrant struct + instead of file pointer. + 2005-02-01 Hans-Peter Nilsson * 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)