diff options
Diffstat (limited to 'libio')
-rw-r--r-- | libio/libioP.h | 11 | ||||
-rw-r--r-- | libio/oldiofdopen.c | 20 | ||||
-rw-r--r-- | libio/oldiofopen.c | 12 | ||||
-rw-r--r-- | libio/oldiopopen.c | 14 |
4 files changed, 34 insertions, 23 deletions
diff --git a/libio/libioP.h b/libio/libioP.h index 1e66feaa78..3973b03cbd 100644 --- a/libio/libioP.h +++ b/libio/libioP.h @@ -348,6 +348,17 @@ struct _IO_FILE_plus const struct _IO_jump_t *vtable; }; +#ifdef _IO_USE_OLD_IO_FILE +/* This structure is used by the compatibility code as if it were an + _IO_FILE_plus, but has enough space to initialize the _mode argument + of an _IO_FILE_complete. */ +struct _IO_FILE_complete_plus +{ + struct _IO_FILE_complete file; + const struct _IO_jump_t *vtable; +}; +#endif + /* Special file type for fopencookie function. */ struct _IO_cookie_file { diff --git a/libio/oldiofdopen.c b/libio/oldiofdopen.c index 824a2fb0cc..b256000c2c 100644 --- a/libio/oldiofdopen.c +++ b/libio/oldiofdopen.c @@ -48,7 +48,7 @@ _IO_old_fdopen (fd, mode) int posix_mode = 0; struct locked_FILE { - struct _IO_FILE_plus fp; + struct _IO_FILE_complete_plus fp; #ifdef _IO_MTSAFE_IO _IO_lock_t lock; #endif @@ -112,24 +112,24 @@ _IO_old_fdopen (fd, mode) if (new_f == NULL) return NULL; #ifdef _IO_MTSAFE_IO - new_f->fp.file._lock = &new_f->lock; + new_f->fp.file._file._lock = &new_f->lock; #endif - _IO_old_init (&new_f->fp.file, 0); - _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps; - _IO_old_file_init (&new_f->fp); + _IO_old_init (&new_f->fp.file._file, 0); + _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp) = &_IO_old_file_jumps; + _IO_old_file_init ((struct _IO_FILE_plus *) &new_f->fp); #if !_IO_UNIFIED_JUMPTABLES new_f->fp.vtable = NULL; #endif - if (_IO_old_file_attach (&new_f->fp.file, fd) == NULL) + if (_IO_old_file_attach (&new_f->fp.file._file, fd) == NULL) { - INTUSE(_IO_un_link) (&new_f->fp); + INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) &new_f->fp); free (new_f); return NULL; } - new_f->fp.file._flags &= ~_IO_DELETE_DONT_CLOSE; + new_f->fp.file._file._flags &= ~_IO_DELETE_DONT_CLOSE; - new_f->fp.file._IO_file_flags = - _IO_mask_flags (&new_f->fp.file, read_write, + new_f->fp.file._file._IO_file_flags = + _IO_mask_flags (&new_f->fp.file._file, read_write, _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING); return (_IO_FILE *) &new_f->fp; diff --git a/libio/oldiofopen.c b/libio/oldiofopen.c index 29c0a18a21..0370c762f6 100644 --- a/libio/oldiofopen.c +++ b/libio/oldiofopen.c @@ -42,7 +42,7 @@ _IO_old_fopen (filename, mode) { struct locked_FILE { - struct _IO_FILE_plus fp; + struct _IO_FILE_complete_plus fp; #ifdef _IO_MTSAFE_IO _IO_lock_t lock; #endif @@ -51,17 +51,17 @@ _IO_old_fopen (filename, mode) if (new_f == NULL) return NULL; #ifdef _IO_MTSAFE_IO - new_f->fp.file._lock = &new_f->lock; + new_f->fp.file._file._lock = &new_f->lock; #endif - _IO_old_init (&new_f->fp.file, 0); - _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps; - _IO_old_file_init (&new_f->fp); + _IO_old_init (&new_f->fp.file._file, 0); + _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp) = &_IO_old_file_jumps; + _IO_old_file_init ((struct _IO_FILE_plus *) &new_f->fp); #if !_IO_UNIFIED_JUMPTABLES new_f->fp.vtable = NULL; #endif if (_IO_old_file_fopen ((_IO_FILE *) &new_f->fp, filename, mode) != NULL) return (_IO_FILE *) &new_f->fp; - INTUSE(_IO_un_link) (&new_f->fp); + INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) &new_f->fp); free (new_f); return NULL; } diff --git a/libio/oldiopopen.c b/libio/oldiopopen.c index b818af4180..01e8efed08 100644 --- a/libio/oldiopopen.c +++ b/libio/oldiopopen.c @@ -100,7 +100,7 @@ extern int _IO_dup2 __P ((int fd, int fd2)); struct _IO_proc_file { - struct _IO_FILE_plus file; + struct _IO_FILE_complete_plus file; /* Following fields must match those in class procbuf (procbuf.h) */ _IO_pid_t pid; struct _IO_proc_file *next; @@ -219,18 +219,18 @@ _IO_old_popen (command, mode) if (new_f == NULL) return NULL; #ifdef _IO_MTSAFE_IO - new_f->fpx.file.file._lock = &new_f->lock; + new_f->fpx.file.file._file._lock = &new_f->lock; #endif - fp = &new_f->fpx.file.file; - INTUSE(_IO_init) (fp, 0); - _IO_JUMPS (&new_f->fpx.file) = &_IO_old_proc_jumps; - _IO_old_file_init (&new_f->fpx.file); + fp = &new_f->fpx.file.file._file; + _IO_old_init (fp, 0); + _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fpx.file) = &_IO_old_proc_jumps; + _IO_old_file_init ((struct _IO_FILE_plus *) &new_f->fpx.file); #if !_IO_UNIFIED_JUMPTABLES new_f->fpx.file.vtable = NULL; #endif if (_IO_old_proc_open (fp, command, mode) != NULL) return fp; - INTUSE(_IO_un_link) (&new_f->fpx.file); + INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) &new_f->fpx.file); free (new_f); return NULL; } |