diff options
Diffstat (limited to 'libio/oldstdfiles.c')
-rw-r--r-- | libio/oldstdfiles.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/libio/oldstdfiles.c b/libio/oldstdfiles.c index 64c792f..baf6550 100644 --- a/libio/oldstdfiles.c +++ b/libio/oldstdfiles.c @@ -30,24 +30,24 @@ so the objects defined are not valid C++ objects. On the other hand, we don't need a C++ compiler to build this file.) */ +#define _IO_USE_OLD_IO_FILE #include "libioP.h" #ifdef _IO_MTSAFE_IO -#define DEF_STDFILE(INAME, NAME, FD, CHAIN, FLAGS) \ +#define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ - struct _IO_FILE_plus INAME \ + struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD), &_IO_old_file_jumps}; #else -#define DEF_STDFILE(INAME, NAME, FD, CHAIN, FLAGS) \ - struct _IO_FILE_plus INAME \ +#define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ + struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD), &_IO_old_file_jumps}; #endif -DEF_STDFILE(_IO_stdin_, _IO_stdin_, 0, 0, _IO_NO_WRITES); -DEF_STDFILE(_IO_stdout_, _IO_stdout_, 1, &_IO_stdin_.file, - _IO_NO_READS); -DEF_STDFILE(_IO_stderr_, _IO_stderr_, 2, &_IO_stdout_.file, - _IO_NO_READS+_IO_UNBUFFERED); +DEF_STDFILE(_IO_stdin_, 0, 0, _IO_NO_WRITES); +DEF_STDFILE(_IO_stdout_, 1, &_IO_stdin_.file, _IO_NO_READS); +DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_.file, + _IO_NO_READS+_IO_UNBUFFERED); #if defined __GNUC__ && __GNUC__ >= 2 @@ -78,9 +78,14 @@ _IO_check_libio () if (&_IO_stdin_used == NULL) { /* We are using the old one. */ - stdin = &_IO_stdin_.file; - stdout = &_IO_stdout_.file; - stderr = _IO_list_all = &_IO_stderr_.file; + _IO_stdin = stdin = &_IO_stdin_.file; + _IO_stdout = stdout = &_IO_stdout_.file; + _IO_stderr = stderr = _IO_list_all = &_IO_stderr_.file; + _IO_stdin->_vtable_offset = _IO_stdout->_vtable_offset = + _IO_stderr->_vtable_offset = stdin->_vtable_offset = + stdout->_vtable_offset = stderr->_vtable_offset = + ((int) sizeof (struct _IO_FILE) + - (int) sizeof (struct _IO_FILE_complete)); } } |