diff --git a/src/kernel/libroot/posix/glibc/libio/Jamfile b/src/kernel/libroot/posix/glibc/libio/Jamfile index 4d22fa49ed..b8ee9fa531 100644 --- a/src/kernel/libroot/posix/glibc/libio/Jamfile +++ b/src/kernel/libroot/posix/glibc/libio/Jamfile @@ -1,15 +1,17 @@ SubDir OBOS_TOP src kernel libroot posix glibc libio ; SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc include arch $(OBOS_ARCH) ; -SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc stdio-common ; -SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc libio ; +#SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc stdio-common ; +#SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc libio ; SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc include ; SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc locale ; SubDirHdrs $(OBOS_TOP) src kernel libroot posix glibc ; SubDirCcFlags -imacrolibc-symbols.h ; -# ToDo: for now, all wide character functions are disabled +# For now, all wide character functions are disabled, +# obprintf() is also disabled, because we don't have +# obstack functionality KernelMergeObject posix_gnu_libio.o : <$(SOURCE_GRIST)>clearerr.c @@ -22,24 +24,19 @@ KernelMergeObject posix_gnu_libio.o : <$(SOURCE_GRIST)>fileno.c <$(SOURCE_GRIST)>filedoalloc.c <$(SOURCE_GRIST)>fileops.c + <$(SOURCE_GRIST)>flockfile.c <$(SOURCE_GRIST)>fputc.c <$(SOURCE_GRIST)>fputc_u.c -# <$(SOURCE_GRIST)>fputwc.c -# <$(SOURCE_GRIST)>fputwc_u.c # <$(SOURCE_GRIST)>freopen.c <$(SOURCE_GRIST)>fseek.c <$(SOURCE_GRIST)>fseeko.c <$(SOURCE_GRIST)>ftello.c <$(SOURCE_GRIST)>fwide.c - <$(SOURCE_GRIST)>fwprintf.c -# <$(SOURCE_GRIST)>fwscanf.c <$(SOURCE_GRIST)>genops.c <$(SOURCE_GRIST)>getc.c <$(SOURCE_GRIST)>getc_u.c <$(SOURCE_GRIST)>getchar.c <$(SOURCE_GRIST)>getchar_u.c -# <$(SOURCE_GRIST)>getwc.c -# <$(SOURCE_GRIST)>getwc_u.c <$(SOURCE_GRIST)>iofclose.c <$(SOURCE_GRIST)>iofdopen.c <$(SOURCE_GRIST)>iofflush.c @@ -49,18 +46,16 @@ KernelMergeObject posix_gnu_libio.o : <$(SOURCE_GRIST)>iofopen.c <$(SOURCE_GRIST)>iofputs.c <$(SOURCE_GRIST)>iofputs_u.c -# <$(SOURCE_GRIST)>iofputws.c -# <$(SOURCE_GRIST)>iofputws_u.c <$(SOURCE_GRIST)>iofread.c <$(SOURCE_GRIST)>iofread_u.c # <$(SOURCE_GRIST)>iofsetpos.c <$(SOURCE_GRIST)>ioftell.c <$(SOURCE_GRIST)>iofwrite.c <$(SOURCE_GRIST)>iofwrite_u.c -# <$(SOURCE_GRIST)>iofwide.c + <$(SOURCE_GRIST)>iofwide.c + <$(SOURCE_GRIST)>iogetdelim.c <$(SOURCE_GRIST)>iogetline.c -# <$(SOURCE_GRIST)>iogets.c - <$(SOURCE_GRIST)>iogetwline.c + <$(SOURCE_GRIST)>iogets.c <$(SOURCE_GRIST)>iopadn.c <$(SOURCE_GRIST)>ioputs.c <$(SOURCE_GRIST)>ioseekoff.c @@ -68,33 +63,46 @@ KernelMergeObject posix_gnu_libio.o : <$(SOURCE_GRIST)>iosetbuffer.c <$(SOURCE_GRIST)>iosetvbuf.c <$(SOURCE_GRIST)>ioungetc.c -# <$(SOURCE_GRIST)>ioungetwc.c <$(SOURCE_GRIST)>iovdprintf.c <$(SOURCE_GRIST)>iovsprintf.c <$(SOURCE_GRIST)>iovsscanf.c -# <$(SOURCE_GRIST)>iovswscanf.c -# <$(SOURCE_GRIST)>iowpadn.c - <$(SOURCE_GRIST)>obprintf.c +# <$(SOURCE_GRIST)>obprintf.c <$(SOURCE_GRIST)>peekc.c <$(SOURCE_GRIST)>putc.c <$(SOURCE_GRIST)>putc_u.c <$(SOURCE_GRIST)>putchar.c <$(SOURCE_GRIST)>putchar_u.c -# <$(SOURCE_GRIST)>putwc.c -# <$(SOURCE_GRIST)>putwc_u.c -# <$(SOURCE_GRIST)>putwchar.c -# <$(SOURCE_GRIST)>putwchar_u.c <$(SOURCE_GRIST)>rewind.c <$(SOURCE_GRIST)>setbuf.c <$(SOURCE_GRIST)>setlinebuf.c <$(SOURCE_GRIST)>stdfiles.c <$(SOURCE_GRIST)>stdio.c <$(SOURCE_GRIST)>strops.c -# <$(SOURCE_GRIST)>swprintf.c -# <$(SOURCE_GRIST)>swscanf.c <$(SOURCE_GRIST)>vasprintf.c <$(SOURCE_GRIST)>vscanf.c <$(SOURCE_GRIST)>vsnprintf.c + <$(SOURCE_GRIST)>wfile_stubs.c + + # wide character + +# <$(SOURCE_GRIST)>fputwc.c +# <$(SOURCE_GRIST)>fputwc_u.c +# <$(SOURCE_GRIST)>fwprintf.c +# <$(SOURCE_GRIST)>fwscanf.c +# <$(SOURCE_GRIST)>getwc.c +# <$(SOURCE_GRIST)>getwc_u.c +# <$(SOURCE_GRIST)>iofputws.c +# <$(SOURCE_GRIST)>iofputws_u.c +# <$(SOURCE_GRIST)>iogetwline.c +# <$(SOURCE_GRIST)>ioungetwc.c +# <$(SOURCE_GRIST)>iovswscanf.c +# <$(SOURCE_GRIST)>iowpadn.c +# <$(SOURCE_GRIST)>putwc.c +# <$(SOURCE_GRIST)>putwc_u.c +# <$(SOURCE_GRIST)>putwchar.c +# <$(SOURCE_GRIST)>putwchar_u.c +# <$(SOURCE_GRIST)>swprintf.c +# <$(SOURCE_GRIST)>swscanf.c # <$(SOURCE_GRIST)>vswprintf.c # <$(SOURCE_GRIST)>vwprintf.c # <$(SOURCE_GRIST)>vwscanf.c diff --git a/src/kernel/libroot/posix/glibc/libio/fileops.c b/src/kernel/libroot/posix/glibc/libio/fileops.c index ffe1590f43..4cff5e447c 100644 --- a/src/kernel/libroot/posix/glibc/libio/fileops.c +++ b/src/kernel/libroot/posix/glibc/libio/fileops.c @@ -42,12 +42,14 @@ #ifdef __STDC__ #include #endif +#if 0 #if _LIBC # include "../wcsmbs/wcsmbsload.h" # include "../iconv/gconv_charset.h" # include "../iconv/gconv_int.h" # include #endif +#endif #ifndef errno extern int errno; #endif @@ -55,13 +57,12 @@ extern int errno; # define __set_errno(Val) errno = (Val) #endif - #ifdef _LIBC -# define open(Name, Flags, Prot) __open (Name, Flags, Prot) +/*# define open(Name, Flags, Prot) __open (Name, Flags, Prot) # define close(FD) __close (FD) # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence) # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes) -# define write(FD, Buf, NBytes) __write (FD, Buf, NBytes) +# define write(FD, Buf, NBytes) __write (FD, Buf, NBytes)*/ # define _IO_do_write _IO_new_do_write /* For macro uses. */ #else # define _IO_new_do_write _IO_do_write @@ -79,11 +80,11 @@ extern int errno; # define _IO_new_file_xsputn _IO_file_xsputn #endif - +#if 0 #ifdef _LIBC extern struct __gconv_trans_data __libio_translit attribute_hidden; #endif - +#endif /* An fstream can be in at most one of put mode, get mode, or putback mode. Putback mode is a variant of get mode. @@ -179,6 +180,7 @@ _IO_new_file_close_it (fp) _IO_setg (fp, NULL, NULL, NULL); _IO_setp (fp, NULL, NULL); } +#if 0 #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T else { @@ -188,6 +190,7 @@ _IO_new_file_close_it (fp) _IO_wsetg (fp, NULL, NULL, NULL); _IO_wsetp (fp, NULL, NULL); } +#endif #endif INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp); @@ -250,12 +253,9 @@ _IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64) } libc_hidden_def (_IO_file_open) + _IO_FILE * -_IO_new_file_fopen (fp, filename, mode, is32not64) - _IO_FILE *fp; - const char *filename; - const char *mode; - int is32not64; +_IO_new_file_fopen(_IO_FILE *fp, const char *filename, const char *mode, int is32not64) { int oflags = 0, omode; int read_write; @@ -263,7 +263,7 @@ _IO_new_file_fopen (fp, filename, mode, is32not64) int i; _IO_FILE *result; #ifdef _LIBC - const char *cs; +// const char *cs; const char *last_recognized; #endif @@ -329,7 +329,7 @@ _IO_new_file_fopen (fp, filename, mode, is32not64) result = _IO_file_open (fp, filename, omode|oflags, oprot, read_write, is32not64); - +#if 0 #ifdef _LIBC if (result != NULL) { @@ -405,6 +405,7 @@ _IO_new_file_fopen (fp, filename, mode, is32not64) } } #endif /* GNU libc */ +#endif return result; } @@ -449,28 +450,26 @@ INTDEF2(_IO_new_file_setbuf, _IO_file_setbuf) _IO_FILE * -_IO_file_setbuf_mmap (fp, p, len) - _IO_FILE *fp; - char *p; - _IO_ssize_t len; +_IO_file_setbuf_mmap(_IO_FILE *fp, char *p, _IO_ssize_t len) { - _IO_FILE *result; + _IO_FILE *result; - /* Change the function table. */ - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; + /* Change the function table. */ + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &INTUSE(_IO_file_jumps); + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; - /* And perform the normal operation. */ - result = _IO_new_file_setbuf (fp, p, len); + /* And perform the normal operation. */ + result = _IO_new_file_setbuf(fp, p, len); - /* If the call failed, restore to using mmap. */ - if (result == NULL) - { - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps_mmap; - fp->_wide_data->_wide_vtable = &_IO_wfile_jumps_mmap; - } +#if HAVE_MMAP + /* If the call failed, restore to using mmap. */ + if (result == NULL) { + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &_IO_file_jumps_mmap; + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps_mmap; + } +#endif - return result; + return result; } static int new_do_write __P ((_IO_FILE *, const char *, _IO_size_t)); @@ -703,22 +702,25 @@ mmap_remap_check (_IO_FILE *fp) } else { - /* Life is no longer good for mmap. Punt it. */ - (void) __munmap (fp->_IO_buf_base, - fp->_IO_buf_end - fp->_IO_buf_base); - punt: - fp->_IO_buf_base = fp->_IO_buf_end = NULL; - _IO_setg (fp, NULL, NULL, NULL); - if (fp->_mode <= 0) - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - else - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps; - fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; + /* Life is no longer good for mmap. Punt it. */ + __munmap (fp->_IO_buf_base, fp->_IO_buf_end - fp->_IO_buf_base); - return 1; - } +punt: + fp->_IO_buf_base = fp->_IO_buf_end = NULL; + _IO_setg (fp, NULL, NULL, NULL); + + if (fp->_mode <= 0) + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &INTUSE(_IO_file_jumps); + else + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &_IO_wfile_jumps; + + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; + + return 1; + } } + /* Special callback replacing the underflow callbacks if we mmap the file. */ int _IO_file_underflow_mmap (_IO_FILE *fp) @@ -737,78 +739,81 @@ _IO_file_underflow_mmap (_IO_FILE *fp) return EOF; } -static void -decide_maybe_mmap (_IO_FILE *fp) -{ - /* We use the file in read-only mode. This could mean we can - mmap the file and use it without any copying. But not all - file descriptors are for mmap-able objects and on 32-bit - machines we don't want to map files which are too large since - this would require too much virtual memory. */ - struct _G_stat64 st; - if (_IO_SYSSTAT (fp, &st) == 0 - && S_ISREG (st.st_mode) && st.st_size != 0 - /* Limit the file size to 1MB for 32-bit machines. */ - && (sizeof (ptrdiff_t) > 4 || st.st_size < 1*1024*1024) - /* Sanity check. */ - && (fp->_offset == _IO_pos_BAD || fp->_offset <= st.st_size)) - { - /* Try to map the file. */ - void *p; +static void +decide_maybe_mmap(_IO_FILE *fp) +{ + /* We use the file in read-only mode. This could mean we can + * mmap the file and use it without any copying. But not all + * file descriptors are for mmap-able objects and on 32-bit + * machines we don't want to map files which are too large since + * this would require too much virtual memory. + */ + struct _G_stat64 st; + + if (_IO_SYSSTAT(fp, &st) == 0 + && S_ISREG (st.st_mode) && st.st_size != 0 + /* Limit the file size to 1MB for 32-bit machines. */ + && (sizeof(ptrdiff_t) > 4 || st.st_size < 1*1024*1024) + /* Sanity check. */ + && (fp->_offset == _IO_pos_BAD || fp->_offset <= st.st_size)) + { + /* Try to map the file. */ + void *p; # ifdef _G_MMAP64 - p = _G_MMAP64 (NULL, st.st_size, PROT_READ, MAP_SHARED, fp->_fileno, 0); + p = _G_MMAP64(NULL, st.st_size, PROT_READ, MAP_SHARED, fp->_fileno, 0); # else - p = __mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fp->_fileno, 0); + p = __mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fp->_fileno, 0); # endif - if (p != MAP_FAILED) - { - /* OK, we managed to map the file. Set the buffer up and use a - special jump table with simplified underflow functions which - never tries to read anything from the file. */ - if ( + if (p != MAP_FAILED) { + /* OK, we managed to map the file. Set the buffer up and use a + * special jump table with simplified underflow functions which + * never tries to read anything from the file. + */ + + if ( # ifdef _G_LSEEK64 _G_LSEEK64 # else __lseek # endif - (fp->_fileno, st.st_size, SEEK_SET) != st.st_size) - { - (void) __munmap (p, st.st_size); - fp->_offset = _IO_pos_BAD; - } - else - { - INTUSE(_IO_setb) (fp, p, (char *) p + st.st_size, 0); + (fp->_fileno, st.st_size, SEEK_SET) != st.st_size) { + (void) __munmap (p, st.st_size); + fp->_offset = _IO_pos_BAD; + } else { + INTUSE(_IO_setb) (fp, p, (char *) p + st.st_size, 0); - if (fp->_offset == _IO_pos_BAD) - fp->_offset = 0; + if (fp->_offset == _IO_pos_BAD) + fp->_offset = 0; - _IO_setg (fp, p, p + fp->_offset, p + st.st_size); - fp->_offset = st.st_size; + _IO_setg (fp, p, p + fp->_offset, p + st.st_size); + fp->_offset = st.st_size; - if (fp->_mode <= 0) - _IO_JUMPS ((struct _IO_FILE_plus *)fp) = &_IO_file_jumps_mmap; - else - _IO_JUMPS ((struct _IO_FILE_plus *)fp) = &_IO_wfile_jumps_mmap; - fp->_wide_data->_wide_vtable = &_IO_wfile_jumps_mmap; + if (fp->_mode <= 0) + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &_IO_file_jumps_mmap; + else + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &_IO_wfile_jumps_mmap; - return; - } + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps_mmap; + + return; + } + } } - } - /* We couldn't use mmap, so revert to the vanilla file operations. */ + /* We couldn't use mmap, so revert to the vanilla file operations. */ - if (fp->_mode <= 0) - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - else - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps; - fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; + if (fp->_mode <= 0) + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &INTUSE(_IO_file_jumps); + else + _IO_JUMPS((struct _IO_FILE_plus *)fp) = &_IO_wfile_jumps; + + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; } + int _IO_file_underflow_maybe_mmap (_IO_FILE *fp) { diff --git a/src/kernel/libroot/posix/glibc/libio/flockfile.c b/src/kernel/libroot/posix/glibc/libio/flockfile.c new file mode 100644 index 0000000000..84a5193da3 --- /dev/null +++ b/src/kernel/libroot/posix/glibc/libio/flockfile.c @@ -0,0 +1,34 @@ +/* +** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. +** Distributed under the terms of the OpenBeOS License. +*/ + + +#include "libioP.h" + + +#undef _IO_flockfile +#undef _IO_funlockfile + + +void +_IO_flockfile(_IO_FILE *stream) +{ + __libc_lock_lock_recursive(*stream->_lock); +} + + +void +_IO_funlockfile(_IO_FILE *stream) +{ + __libc_lock_unlock_recursive(*stream->_lock); +} + + +int +_IO_ftrylockfile(_IO_FILE *stream) +{ + // ToDo: that code has probably never been tested! + //return __libc_lock_trylock_recursive(*stream->_lock); + return 1; +} diff --git a/src/kernel/libroot/posix/glibc/libio/freopen.c b/src/kernel/libroot/posix/glibc/libio/freopen.c index 244a90d84e..bf2d7688c3 100644 --- a/src/kernel/libroot/posix/glibc/libio/freopen.c +++ b/src/kernel/libroot/posix/glibc/libio/freopen.c @@ -68,8 +68,8 @@ freopen (filename, mode, fp) { INTUSE(_IO_file_close_it) (fp); _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - if (fp->_vtable_offset == 0 && fp->_wide_data != NULL) - fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps); +// if (fp->_vtable_offset == 0 && fp->_wide_data != NULL) +// fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps); result = INTUSE(_IO_file_fopen) (fp, filename, mode, 1); if (result != NULL) result = __fopen_maybe_mmap (result); diff --git a/src/kernel/libroot/posix/glibc/libio/freopen64.c b/src/kernel/libroot/posix/glibc/libio/freopen64.c index 8f69fce2ce..09a2c06ec8 100644 --- a/src/kernel/libroot/posix/glibc/libio/freopen64.c +++ b/src/kernel/libroot/posix/glibc/libio/freopen64.c @@ -54,8 +54,8 @@ freopen64 (filename, mode, fp) } INTUSE(_IO_file_close_it) (fp); _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - if (fp->_vtable_offset == 0 && fp->_wide_data != NULL) - fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps); +// if (fp->_vtable_offset == 0 && fp->_wide_data != NULL) +// fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps); result = INTUSE(_IO_file_fopen) (fp, filename, mode, 0); if (result != NULL) result = __fopen_maybe_mmap (result); diff --git a/src/kernel/libroot/posix/glibc/libio/fwide.c b/src/kernel/libroot/posix/glibc/libio/fwide.c index c435e5ec17..8574fddf5f 100644 --- a/src/kernel/libroot/posix/glibc/libio/fwide.c +++ b/src/kernel/libroot/posix/glibc/libio/fwide.c @@ -23,34 +23,36 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ + #include #include #include + int -fwide (fp, mode) - _IO_FILE *fp; - int mode; +fwide(_IO_FILE *fp, int mode) { - int result; + int result; - /* Normalize the value. */ - mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1); + /* Normalize the value. */ + mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1); - if (mode == 0 || fp->_mode != 0) - /* The caller simply wants to know about the current orientation - or the orientation already has been determined. */ - return fp->_mode; + if (mode == 0 || fp->_mode != 0) { + // The caller simply wants to know about the current orientation + // or the orientation already has been determined. + return fp->_mode; + } - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_cleanup_region_start((void (*) __P ((void *)))_IO_funlockfile, fp); + _IO_flockfile(fp); - result = _IO_fwide (fp, mode); + result = _IO_fwide(fp, mode); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_funlockfile(fp); + _IO_cleanup_region_end(0); - return result; + return result; } diff --git a/src/kernel/libroot/posix/glibc/libio/genops.c b/src/kernel/libroot/posix/glibc/libio/genops.c index c88a26f5f9..ce0614cc68 100644 --- a/src/kernel/libroot/posix/glibc/libio/genops.c +++ b/src/kernel/libroot/posix/glibc/libio/genops.c @@ -23,16 +23,16 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ /* Generic or default I/O operations. */ #include "libioP.h" -#ifdef __STDC__ #include -#endif #include + #ifdef _IO_MTSAFE_IO static _IO_lock_t list_all_lock = _IO_lock_initializer; #endif @@ -43,6 +43,7 @@ static int _IO_list_all_stamp; static _IO_FILE *run_fp; +#if 0 static void flush_cleanup (void *not_used) { @@ -52,10 +53,11 @@ flush_cleanup (void *not_used) _IO_lock_unlock (list_all_lock); #endif } +#endif + void -_IO_un_link (fp) - struct _IO_FILE_plus *fp; +_IO_un_link(struct _IO_FILE_plus *fp) { if (fp->file._flags & _IO_LINKED) { @@ -226,17 +228,18 @@ _IO_switch_to_put_mode (fp) } #endif + int -__overflow (f, ch) - _IO_FILE *f; - int ch; +__overflow(_IO_FILE *file, int character) { - /* This is a single-byte stream. */ - if (f->_mode == 0) - _IO_fwide (f, -1); - return _IO_OVERFLOW (f, ch); + /* This is a single-byte stream. */ + if (file->_mode == 0) + _IO_fwide(file, -1); + + return _IO_OVERFLOW(file, character); } -libc_hidden_def (__overflow) +libc_hidden_def(__overflow) + static int save_for_backup __P ((_IO_FILE *fp, char *end_p)) #ifdef _LIBC @@ -319,71 +322,75 @@ save_for_backup (fp, end_p) return 0; } -int -__underflow (fp) - _IO_FILE *fp; -{ -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1) - return EOF; -#endif - - if (fp->_mode == 0) - _IO_fwide (fp, -1); - if (_IO_in_put_mode (fp)) - if (INTUSE(_IO_switch_to_get_mode) (fp) == EOF) - return EOF; - if (fp->_IO_read_ptr < fp->_IO_read_end) - return *(unsigned char *) fp->_IO_read_ptr; - if (_IO_in_backup (fp)) - { - _IO_switch_to_main_get_area (fp); - if (fp->_IO_read_ptr < fp->_IO_read_end) - return *(unsigned char *) fp->_IO_read_ptr; - } - if (_IO_have_markers (fp)) - { - if (save_for_backup (fp, fp->_IO_read_end)) - return EOF; - } - else if (_IO_have_backup (fp)) - INTUSE(_IO_free_backup_area) (fp); - return _IO_UNDERFLOW (fp); -} -libc_hidden_def (__underflow) int -__uflow (fp) - _IO_FILE *fp; +__underflow(_IO_FILE *file) { #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1) - return EOF; + if (file->_vtable_offset == 0 && _IO_fwide(file, -1) != -1) + return EOF; #endif - if (fp->_mode == 0) - _IO_fwide (fp, -11); - if (_IO_in_put_mode (fp)) - if (INTUSE(_IO_switch_to_get_mode) (fp) == EOF) - return EOF; - if (fp->_IO_read_ptr < fp->_IO_read_end) - return *(unsigned char *) fp->_IO_read_ptr++; - if (_IO_in_backup (fp)) - { - _IO_switch_to_main_get_area (fp); - if (fp->_IO_read_ptr < fp->_IO_read_end) - return *(unsigned char *) fp->_IO_read_ptr++; + if (file->_mode == 0) + _IO_fwide(file, -1); + + if (_IO_in_put_mode(file) && INTUSE(_IO_switch_to_get_mode)(file) == EOF) + return EOF; + + if (file->_IO_read_ptr < file->_IO_read_end) + return *(unsigned char *)file->_IO_read_ptr; + + if (_IO_in_backup(file)) { + _IO_switch_to_main_get_area(file); + + if (file->_IO_read_ptr < file->_IO_read_end) + return *(unsigned char *)file->_IO_read_ptr; } - if (_IO_have_markers (fp)) - { - if (save_for_backup (fp, fp->_IO_read_end)) - return EOF; - } - else if (_IO_have_backup (fp)) - INTUSE(_IO_free_backup_area) (fp); - return _IO_UFLOW (fp); + if (_IO_have_markers(file)) { + if (save_for_backup(file, file->_IO_read_end)) + return EOF; + } else if (_IO_have_backup(file)) + INTUSE(_IO_free_backup_area)(file); + + return _IO_UNDERFLOW(file); } -libc_hidden_def (__uflow) +libc_hidden_def(__underflow) + + +int +__uflow(_IO_FILE *file) +{ +#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T + if (file->_vtable_offset == 0 && _IO_fwide(file, -1) != -1) + return EOF; +#endif + + if (file->_mode == 0) + _IO_fwide(file, -11); + + if (_IO_in_put_mode(file) && INTUSE(_IO_switch_to_get_mode)(file) == EOF) + return EOF; + + if (file->_IO_read_ptr < file->_IO_read_end) + return *(unsigned char *)file->_IO_read_ptr++; + + if (_IO_in_backup(file)) { + _IO_switch_to_main_get_area(file); + + if (file->_IO_read_ptr < file->_IO_read_end) + return *(unsigned char *)file->_IO_read_ptr++; + } + + if (_IO_have_markers(file)) { + if (save_for_backup(file, file->_IO_read_end)) + return EOF; + } else if (_IO_have_backup(file)) + INTUSE(_IO_free_backup_area)(file); + + return _IO_UFLOW(file); +} +libc_hidden_def(__uflow) + void _IO_setb (f, b, eb, a) diff --git a/src/kernel/libroot/posix/glibc/libio/iofclose.c b/src/kernel/libroot/posix/glibc/libio/iofclose.c index 62d12244c5..25e8ed853f 100644 --- a/src/kernel/libroot/posix/glibc/libio/iofclose.c +++ b/src/kernel/libroot/posix/glibc/libio/iofclose.c @@ -68,6 +68,7 @@ _IO_new_fclose (fp) _IO_cleanup_region_end (0); if (fp->_mode > 0) { +#if 0 #if _LIBC /* This stream has a wide orientation. This means we have to free the conversion functions. */ @@ -75,6 +76,7 @@ _IO_new_fclose (fp) __gconv_release_step (cc->__cd_in.__cd.__steps); __gconv_release_step (cc->__cd_out.__cd.__steps); +#endif #endif } else diff --git a/src/kernel/libroot/posix/glibc/libio/iofdopen.c b/src/kernel/libroot/posix/glibc/libio/iofdopen.c index fc2625b840..56256b5141 100644 --- a/src/kernel/libroot/posix/glibc/libio/iofdopen.c +++ b/src/kernel/libroot/posix/glibc/libio/iofdopen.c @@ -23,30 +23,21 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ + #include "libioP.h" -#ifdef __STDC__ -# include -#endif +#include #include #ifdef _LIBC # include #endif -#ifndef _IO_fcntl -#ifdef _LIBC -#define _IO_fcntl __fcntl -#else -#define _IO_fcntl fcntl -#endif -#endif _IO_FILE * -_IO_new_fdopen (fd, mode) - int fd; - const char *mode; +_IO_new_fdopen (int fd, const char *mode) { int read_write; int posix_mode = 0; @@ -99,7 +90,7 @@ _IO_new_fdopen (fd, mode) break; } #ifdef F_GETFL - fd_flags = _IO_fcntl (fd, F_GETFL); + fd_flags = fcntl(fd, F_GETFL); #ifndef O_ACCMODE #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) #endif @@ -132,7 +123,7 @@ _IO_new_fdopen (fd, mode) if ((posix_mode & O_APPEND) && !(fd_flags & O_APPEND)) { #ifdef F_SETFL - if (_IO_fcntl (fd, F_SETFL, fd_flags | O_APPEND) == -1) + if (fcntl(fd, F_SETFL, fd_flags | O_APPEND) == -1) #endif return NULL; } diff --git a/src/kernel/libroot/posix/glibc/libio/iofputs.c b/src/kernel/libroot/posix/glibc/libio/iofputs.c index 1201735a38..011a19acd8 100644 --- a/src/kernel/libroot/posix/glibc/libio/iofputs.c +++ b/src/kernel/libroot/posix/glibc/libio/iofputs.c @@ -35,6 +35,7 @@ _IO_fputs (str, fp) { _IO_size_t len = strlen (str); int result = EOF; + CHECK_FILE (fp, EOF); _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); _IO_flockfile (fp); diff --git a/src/kernel/libroot/posix/glibc/libio/iofwide.c b/src/kernel/libroot/posix/glibc/libio/iofwide.c index 225237ef66..d9a11c3a66 100644 --- a/src/kernel/libroot/posix/glibc/libio/iofwide.c +++ b/src/kernel/libroot/posix/glibc/libio/iofwide.c @@ -42,7 +42,7 @@ # include #endif - +#if 0 /* Prototypes of libio's codecvt functions. */ static enum __codecvt_result do_out (struct _IO_codecvt *codecvt, __mbstate_t *statep, @@ -87,22 +87,24 @@ struct __gconv_trans_data __libio_translit attribute_hidden = .__trans_fct = __gconv_transliterate }; #endif - +#endif /* Return orientation of stream. If mode is nonzero try to change - the orientation first. */ -#undef _IO_fwide -int -_IO_fwide (fp, mode) - _IO_FILE *fp; - int mode; -{ - /* Normalize the value. */ - mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1); + * the orientation first. + */ - if (mode == 0) - /* The caller simply wants to know about the current orientation. */ - return fp->_mode; +#undef _IO_fwide + +int +_IO_fwide(_IO_FILE *fp, int mode) +{ + /* Normalize the value. */ + mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1); + + if (mode == 0) { + /* The caller simply wants to know about the current orientation. */ + return fp->_mode; + } #if defined SHARED && defined _LIBC \ && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) @@ -112,20 +114,25 @@ _IO_fwide (fp, mode) return -1; #endif - if (fp->_mode != 0) - /* The orientation already has been determined. */ - return fp->_mode; + if (fp->_mode != 0) { + /* The orientation already has been determined. */ + return fp->_mode; + } - /* Set the orientation appropriately. */ - if (mode > 0) - { - struct _IO_codecvt *cc = fp->_codecvt = &fp->_wide_data->_codecvt; + /* Set the orientation appropriately. */ + if (mode > 0) { + // wide-orientation is currently disabled! + return -1; + } +#if 0 + struct _IO_codecvt *cc = fp->_codecvt = &fp->_wide_data->_codecvt; - fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end; - fp->_wide_data->_IO_write_ptr = fp->_wide_data->_IO_write_base; + fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end; + fp->_wide_data->_IO_write_ptr = fp->_wide_data->_IO_write_base; - /* Get the character conversion functions based on the currently - selected locale for LC_CTYPE. */ + /* Get the character conversion functions based on the currently + * selected locale for LC_CTYPE. + */ #ifdef _LIBC { struct gconv_fcts fcts; @@ -208,14 +215,15 @@ _IO_fwide (fp, mode) which allows the functions without knowing the position. */ fp->_offset = _IO_SYSSEEK (fp, 0, _IO_seek_cur); } +#endif - /* Set the mode now. */ - fp->_mode = mode; + /* Set the mode now. */ + fp->_mode = mode; - return mode; + return mode; } - +#if 0 static enum __codecvt_result do_out (struct _IO_codecvt *codecvt, __mbstate_t *statep, const wchar_t *from_start, const wchar_t *from_end, @@ -496,3 +504,4 @@ do_max_length (struct _IO_codecvt *codecvt) return MB_CUR_MAX; #endif } +#endif diff --git a/src/kernel/libroot/posix/glibc/libio/iogetdelim.c b/src/kernel/libroot/posix/glibc/libio/iogetdelim.c index edc5228693..d515e3b525 100644 --- a/src/kernel/libroot/posix/glibc/libio/iogetdelim.c +++ b/src/kernel/libroot/posix/glibc/libio/iogetdelim.c @@ -23,12 +23,11 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ -#ifdef __STDC__ -#include -#endif #include "libioP.h" +#include #include #include @@ -39,11 +38,7 @@ null terminator), or -1 on error or EOF. */ _IO_ssize_t -_IO_getdelim (lineptr, n, delimiter, fp) - char **lineptr; - _IO_size_t *n; - int delimiter; - _IO_FILE *fp; +_IO_getdelim(char **lineptr, _IO_size_t *n, int delimiter, _IO_FILE *fp) { int result; _IO_ssize_t cur_len = 0; diff --git a/src/kernel/libroot/posix/glibc/libio/iogets.c b/src/kernel/libroot/posix/glibc/libio/iogets.c index 95e8368dbb..08a382278c 100644 --- a/src/kernel/libroot/posix/glibc/libio/iogets.c +++ b/src/kernel/libroot/posix/glibc/libio/iogets.c @@ -77,5 +77,5 @@ weak_alias (_IO_gets, gets) #endif #ifdef _LIBC -link_warning (gets, "the `gets' function is dangerous and should not be used.") +//link_warning (gets, "the `gets' function is dangerous and should not be used.") #endif diff --git a/src/kernel/libroot/posix/glibc/libio/ioputs.c b/src/kernel/libroot/posix/glibc/libio/ioputs.c index 8a9a595f90..047db0c0a0 100644 --- a/src/kernel/libroot/posix/glibc/libio/ioputs.c +++ b/src/kernel/libroot/posix/glibc/libio/ioputs.c @@ -23,31 +23,34 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ + #include "libioP.h" #include + int -_IO_puts (str) - const char *str; +_IO_puts(const char *str) { - int result = EOF; - _IO_size_t len = strlen (str); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdout); - _IO_flockfile (_IO_stdout); + int result = EOF; + _IO_size_t len = strlen(str); - if ((_IO_stdout->_vtable_offset != 0 || _IO_fwide (_IO_stdout, -1) == -1) - && _IO_sputn (_IO_stdout, str, len) == len - && _IO_putc_unlocked ('\n', _IO_stdout) != EOF) - result = len + 1; + _IO_cleanup_region_start((void (*) __P ((void *))) _IO_funlockfile, _IO_stdout); + _IO_flockfile(_IO_stdout); - _IO_funlockfile (_IO_stdout); - _IO_cleanup_region_end (0); - return result; + if ((_IO_stdout->_vtable_offset != 0 || _IO_fwide(_IO_stdout, -1) == -1) + && _IO_sputn(_IO_stdout, str, len) == len + && _IO_putc_unlocked('\n', _IO_stdout) != EOF) + result = len + 1; + + _IO_funlockfile(_IO_stdout); + _IO_cleanup_region_end(0); + + return result; } #ifdef weak_alias -weak_alias (_IO_puts, puts) +weak_alias(_IO_puts, puts) #endif diff --git a/src/kernel/libroot/posix/glibc/libio/ioseekoff.c b/src/kernel/libroot/posix/glibc/libio/ioseekoff.c index fe3f57e74e..bcaaf3b07d 100644 --- a/src/kernel/libroot/posix/glibc/libio/ioseekoff.c +++ b/src/kernel/libroot/posix/glibc/libio/ioseekoff.c @@ -52,7 +52,11 @@ _IO_seekoff_unlocked (fp, offset, dir, mode) callback may not know to do the right thing about it. This may be over-kill, but it'll do for now. TODO */ if (mode != 0 && ((_IO_fwide (fp, 0) < 0 && _IO_have_backup (fp)) +#if 0 || (_IO_fwide (fp, 0) > 0 && _IO_have_wbackup (fp)))) +#else + )) +#endif { if (dir == _IO_seek_cur && _IO_in_backup (fp)) { @@ -63,8 +67,10 @@ _IO_seekoff_unlocked (fp, offset, dir, mode) } if (_IO_fwide (fp, 0) < 0) INTUSE(_IO_free_backup_area) (fp); +#if 0 else INTUSE(_IO_free_wbackup_area) (fp); +#endif } return _IO_SEEKOFF (fp, offset, dir, mode); diff --git a/src/kernel/libroot/posix/glibc/libio/ioseekpos.c b/src/kernel/libroot/posix/glibc/libio/ioseekpos.c index 37d32af340..0351024aa7 100644 --- a/src/kernel/libroot/posix/glibc/libio/ioseekpos.c +++ b/src/kernel/libroot/posix/glibc/libio/ioseekpos.c @@ -23,48 +23,46 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ + #include -_IO_off64_t -_IO_seekpos_unlocked (fp, pos, mode) - _IO_FILE *fp; - _IO_off64_t pos; - int mode; -{ - /* If we have a backup buffer, get rid of it, since the __seekoff - callback may not know to do the right thing about it. - This may be over-kill, but it'll do for now. TODO */ - if (_IO_fwide (fp, 0) <= 0) - { - if (_IO_have_backup (fp)) - INTUSE(_IO_free_backup_area) (fp); - } - else - { - if (_IO_have_wbackup (fp)) - INTUSE(_IO_free_wbackup_area) (fp); - } - return _IO_SEEKPOS (fp, pos, mode); +_IO_off64_t +_IO_seekpos_unlocked(_IO_FILE *fp, _IO_off64_t pos, int mode) +{ + /* If we have a backup buffer, get rid of it, since the __seekoff + * callback may not know to do the right thing about it. + * This may be over-kill, but it'll do for now. TODO + */ + + if (_IO_fwide(fp, 0) <= 0) { + if (_IO_have_backup(fp)) + INTUSE(_IO_free_backup_area)(fp); + } else { +#if 0 + if (_IO_have_wbackup(fp)) + INTUSE(_IO_free_wbackup_area)(fp); +#endif + } + + return _IO_SEEKPOS(fp, pos, mode); } _IO_off64_t -_IO_seekpos (fp, pos, mode) - _IO_FILE *fp; - _IO_off64_t pos; - int mode; +_IO_seekpos(_IO_FILE *fp, _IO_off64_t pos, int mode) { - _IO_off64_t retval; + _IO_off64_t retval; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_cleanup_region_start((void (*) __P ((void *)))_IO_funlockfile, fp); + _IO_flockfile(fp); - retval = _IO_seekpos_unlocked (fp, pos, mode); + retval = _IO_seekpos_unlocked(fp, pos, mode); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); - return retval; + _IO_funlockfile(fp); + _IO_cleanup_region_end(0); + return retval; } diff --git a/src/kernel/libroot/posix/glibc/libio/libioP.h b/src/kernel/libroot/posix/glibc/libio/libioP.h index 64d3025345..8ea7b4e54d 100644 --- a/src/kernel/libroot/posix/glibc/libio/libioP.h +++ b/src/kernel/libroot/posix/glibc/libio/libioP.h @@ -482,6 +482,7 @@ extern int _IO_new_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *)); extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *)); +#if 0 #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T # define _IO_do_flush(_f) \ ((_f)->_mode <= 0 \ @@ -490,11 +491,13 @@ extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *)); : INTUSE(_IO_wdo_write)(_f, (_f)->_wide_data->_IO_write_base, \ ((_f)->_wide_data->_IO_write_ptr \ - (_f)->_wide_data->_IO_write_base))) -#else +#endif // was #else +#endif + # define _IO_do_flush(_f) \ INTUSE(_IO_do_write)(_f, (_f)->_IO_write_base, \ (_f)->_IO_write_ptr-(_f)->_IO_write_base) -#endif + #define _IO_old_do_flush(_f) \ _IO_old_do_write(_f, (_f)->_IO_write_base, \ (_f)->_IO_write_ptr-(_f)->_IO_write_base) diff --git a/src/kernel/libroot/posix/glibc/libio/oldfileops.c b/src/kernel/libroot/posix/glibc/libio/oldfileops.c index 2efbadb44e..cb1bb2e15d 100644 --- a/src/kernel/libroot/posix/glibc/libio/oldfileops.c +++ b/src/kernel/libroot/posix/glibc/libio/oldfileops.c @@ -29,7 +29,7 @@ /* This is a compatibility file. If we don't build the libc with versioning don't compile this file. */ #include -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) +#if 1 /*SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)*/ #ifndef _POSIX_SOURCE # define _POSIX_SOURCE @@ -53,11 +53,11 @@ extern int errno; #ifdef _LIBC -# define open(Name, Flags, Prot) __open (Name, Flags, Prot) +/*# define open(Name, Flags, Prot) __open (Name, Flags, Prot) # define close(FD) __close (FD) # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence) # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes) -# define write(FD, Buf, NBytes) __write (FD, Buf, NBytes) +# define write(FD, Buf, NBytes) __write (FD, Buf, NBytes)*/ #endif /* An fstream can be in at most one of put mode, get mode, or putback mode. @@ -775,7 +775,7 @@ struct _IO_jump_t _IO_old_file_jumps = JUMP_INIT(close, INTUSE(_IO_file_close)), JUMP_INIT(stat, INTUSE(_IO_file_stat)) }; - +/* compat_symbol (libc, _IO_old_do_write, _IO_do_write, GLIBC_2_0); compat_symbol (libc, _IO_old_file_attach, _IO_file_attach, GLIBC_2_0); compat_symbol (libc, _IO_old_file_close_it, _IO_file_close_it, GLIBC_2_0); @@ -789,5 +789,5 @@ compat_symbol (libc, _IO_old_file_seekoff, _IO_file_seekoff, GLIBC_2_0); compat_symbol (libc, _IO_old_file_underflow, _IO_file_underflow, GLIBC_2_0); compat_symbol (libc, _IO_old_file_write, _IO_file_write, GLIBC_2_0); compat_symbol (libc, _IO_old_file_xsputn, _IO_file_xsputn, GLIBC_2_0); - +*/ #endif diff --git a/src/kernel/libroot/posix/glibc/libio/oldiofdopen.c b/src/kernel/libroot/posix/glibc/libio/oldiofdopen.c index 9015504970..363b73206f 100644 --- a/src/kernel/libroot/posix/glibc/libio/oldiofdopen.c +++ b/src/kernel/libroot/posix/glibc/libio/oldiofdopen.c @@ -23,21 +23,18 @@ however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders - in files containing the exception. */ + in files containing the exception. +*/ + #include #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) #define _IO_USE_OLD_IO_FILE -#ifdef __STDC__ -# include -#endif +#include #include "libioP.h" #include -#ifndef _IO_fcntl -# define _IO_fcntl __fcntl -#endif _IO_FILE * _IO_old_fdopen (fd, mode) @@ -74,7 +71,7 @@ _IO_old_fdopen (fd, mode) if (mode[0] == '+' || (mode[0] == 'b' && mode[1] == '+')) read_write &= _IO_IS_APPENDING; #ifdef F_GETFL - fd_flags = _IO_fcntl (fd, F_GETFL); + fd_flags = fcntl(fd, F_GETFL); #ifndef O_ACCMODE #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) #endif @@ -102,7 +99,7 @@ _IO_old_fdopen (fd, mode) if ((posix_mode & O_APPEND) && !(fd_flags & O_APPEND)) { #ifdef F_SETFL - if (_IO_fcntl (fd, F_SETFL, fd_flags | O_APPEND) == -1) + if (fcntl(fd, F_SETFL, fd_flags | O_APPEND) == -1) #endif return NULL; } diff --git a/src/kernel/libroot/posix/glibc/libio/oldstdfiles.c b/src/kernel/libroot/posix/glibc/libio/oldstdfiles.c index 83749db871..a34c936b11 100644 --- a/src/kernel/libroot/posix/glibc/libio/oldstdfiles.c +++ b/src/kernel/libroot/posix/glibc/libio/oldstdfiles.c @@ -25,8 +25,8 @@ This exception applies to code released by its copyright holders in files containing the exception. */ -#include -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) +//#include +//#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) /* This file provides definitions of _IO_stdin, _IO_stdout, and _IO_stderr for C code. Compare stdstreams.cc. @@ -56,8 +56,8 @@ DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_, _IO_NO_READS+_IO_UNBUFFERED); #include -extern const int _IO_stdin_used; -weak_extern (_IO_stdin_used); +//extern const int _IO_stdin_used; +//weak_extern (_IO_stdin_used); #undef stdin #undef stdout @@ -76,7 +76,8 @@ static void _IO_check_libio __P ((void)) __attribute__ ((constructor)); static void _IO_check_libio () { - if (&_IO_stdin_used == NULL) + _kern_debug_output("Hey dude!\n"); + //if (&_IO_stdin_used == NULL) { /* We are using the old one. */ _IO_stdin = stdin = (_IO_FILE *) &_IO_stdin_; @@ -93,4 +94,4 @@ _IO_check_libio () #endif -#endif +//#endif diff --git a/src/kernel/libroot/posix/glibc/libio/stdfiles.c b/src/kernel/libroot/posix/glibc/libio/stdfiles.c index cbc1407900..1f43b29c4f 100644 --- a/src/kernel/libroot/posix/glibc/libio/stdfiles.c +++ b/src/kernel/libroot/posix/glibc/libio/stdfiles.c @@ -35,7 +35,7 @@ #include "libioP.h" #ifdef _IO_MTSAFE_IO -# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T +/*# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ static struct _IO_wide_data _IO_wide_data_##FD \ @@ -44,13 +44,15 @@ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ &INTUSE(_IO_file_jumps)}; # else +*/ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \ &INTUSE(_IO_file_jumps)}; -# endif +//# endif #else +/* # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static struct _IO_wide_data _IO_wide_data_##FD \ @@ -59,11 +61,12 @@ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ &INTUSE(_IO_file_jumps)}; # else +*/ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \ &INTUSE(_IO_file_jumps)}; -# endif +//# endif #endif DEF_STDFILE(_IO_2_1_stdin_, 0, 0, _IO_NO_WRITES); diff --git a/src/kernel/libroot/posix/glibc/libio/wfile_stubs.c b/src/kernel/libroot/posix/glibc/libio/wfile_stubs.c new file mode 100644 index 0000000000..074fc85ffa --- /dev/null +++ b/src/kernel/libroot/posix/glibc/libio/wfile_stubs.c @@ -0,0 +1,46 @@ +/* Copyright (C) 1993,95,97,98,99,2000,2001,2002 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + + As a special exception, if you link the code in this file with + files compiled with a GNU compiler to produce an executable, + that does not cause the resulting executable to be covered by + the GNU Lesser General Public License. This exception does not + however invalidate any other reasons why the executable file + might be covered by the GNU Lesser General Public License. + This exception applies to code released by its copyright holders + in files containing the exception. +*/ + + +#include + + +struct _IO_jump_t _IO_wfile_jumps = { + JUMP_INIT_DUMMY, + NULL +}; +INTVARDEF(_IO_wfile_jumps) + +struct _IO_jump_t _IO_wfile_jumps_mmap = { + JUMP_INIT_DUMMY, + NULL +}; + +struct _IO_jump_t _IO_wfile_jumps_maybe_mmap = { + JUMP_INIT_DUMMY, + NULL +};