diff options
Diffstat (limited to 'contrib/libstdc++/libio')
-rw-r--r-- | contrib/libstdc++/libio/ChangeLog | 2802 | ||||
-rw-r--r-- | contrib/libstdc++/libio/Makefile.am | 67 | ||||
-rw-r--r-- | contrib/libstdc++/libio/Makefile.in | 406 | ||||
-rw-r--r-- | contrib/libstdc++/libio/_G_config.h | 136 | ||||
-rw-r--r-- | contrib/libstdc++/libio/filedoalloc.c | 101 | ||||
-rw-r--r-- | contrib/libstdc++/libio/fileops.c | 1049 | ||||
-rw-r--r-- | contrib/libstdc++/libio/genops.c | 1123 | ||||
-rw-r--r-- | contrib/libstdc++/libio/iofclose.c | 97 | ||||
-rw-r--r-- | contrib/libstdc++/libio/iofopen.c | 78 | ||||
-rw-r--r-- | contrib/libstdc++/libio/iofwide.c | 476 | ||||
-rw-r--r-- | contrib/libstdc++/libio/iolibio.h | 82 | ||||
-rw-r--r-- | contrib/libstdc++/libio/libio.h | 511 | ||||
-rw-r--r-- | contrib/libstdc++/libio/libioP.h | 821 | ||||
-rw-r--r-- | contrib/libstdc++/libio/stdfiles.c | 71 | ||||
-rw-r--r-- | contrib/libstdc++/libio/stdio.c | 43 | ||||
-rw-r--r-- | contrib/libstdc++/libio/wfiledoalloc.c | 108 | ||||
-rw-r--r-- | contrib/libstdc++/libio/wfileops.c | 754 | ||||
-rw-r--r-- | contrib/libstdc++/libio/wgenops.c | 756 |
18 files changed, 0 insertions, 9481 deletions
diff --git a/contrib/libstdc++/libio/ChangeLog b/contrib/libstdc++/libio/ChangeLog deleted file mode 100644 index d0055fdd8c51..000000000000 --- a/contrib/libstdc++/libio/ChangeLog +++ /dev/null @@ -1,2802 +0,0 @@ -2002-11-19 Release Manager - - * GCC 3.2.1 Released. - -2002-11-19 Release Manager - - * GCC 3.2.1 Released. - -2002-11-18 Release Manager - - * GCC 3.2.1 Released. - -2002-08-14 Release Manager - - * GCC 3.2 Released. - -2002-07-25 Release Manager - - * GCC 3.1.1 Released. - -2002-05-14 Release Manager - - * GCC 3.1 Released. - -2002-05-14 Release Manager - - * GCC 3.1 Released. - -2001-02-03 Alexandre Oliva <aoliva@redhat.com> - Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> - - * Makefile.am (mkinstalldirs): Set. - -2001-01-28 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (LIBIO_SRCS): Remove stdio.c. - -2000-10-29 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (INCLUDES): Change to $(top_builddir)/include. - -2000-10-29 Mark Mitchell <mark@codesourcery.com> - - * iofopen.c (_IO_new_fopen): Don't define `_IO_wide_data wd' - if _GLIBCPP_USE_WCHAR_T is not defined. - * iofwide.c: Don't define codecvt functions when - _GLIBCPP_USE_WCHAR_T is not defined. - (_IO_fwide): Don't try to put the stream in wide mode when - _GLIBCPP_USE_WCHAR_T is not defined. - * libio.h (_IO_wide_data): Define it as an incomplete struct - when _GLIBCPP_USE_WCHAR_T is not defined. - * wfiledoalloc.c: Don't define anything when - _GLIBCPP_USE_WCHAR_T is not defined. - * wfileops.c: Likewise. - * wgenops.c: Likewise. - - * _G_config.h (_G_USING_THUNKS): Allow overrides from - OS-configuration files. - * libioP.h: Test _G_USING_THUNKS with #if, rather than #ifdef. - -2000-10-17 Benjamin Kosnik <bkoz@gnu.org> - - * libioP.h: Break up extern "C" bits around includes. - * libio.h: Only include C headers, or else _C_legacy namespaces - will be nested. - * libioP.h: Same here. - -2000-10-11 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am: Add includes from GLIBCPP_EXPORT_INCLUDES. - -2000-10-10 Benjamin Kosnik <bkoz@gnu.org> - - * _G_config.h (__need_ptrdiff_t): Add. - -2000-10-08 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (INCLUDES): Simplify. - * libioP.h (JUMP1): If compiling c++, use std headers. - * _G_config.h: Same. - -2000-10-07 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (CONFIG_INCLUDES): Remove. - -2000-10-06 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (libio_la_DEPENDENCIES): Remove extaneous cruft. - (libio_la_SOURCES): Remove. - -2000-10-05 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (INCLUDES): Add glibcpp_includedir. - -2000-10-04 Benjamin Kosnik <bkoz@gnu.org> - - * _G_config.h : Re-guard the __mbstate_t declaration. - -2000-09-27 Benjamin Kosnik <bkoz@gnu.org> - - * libioP.h: Remove fcntl.h include. - -2000-08-22 Benjamin Kosnik <bkoz@gnu.org> - - * iofwide.c (_IO_fwide): Simplify, as nl_langinfo is assumed. - -2000-08-14 Benjamin Kosnik <bkoz@gnu.org> - - * *: Merge with mainline glibc sources. - * filedoalloc.c (_IO_file_doallocate): Don't call - _IO_cleanup_registration_needed, even if not libc. - * iofwide.c (_IO_fwide): Correct placement of defines. - * cleanup.c: Remove. - -2000-08-04 benjamin kosnik <bkoz@haight.constant.com> - - * genops.c (_IO_unbuffer_write): Don't call _IO_SETBUF if the - stream is not orientated. - -2000-08-04 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (LIBIO_SRCS): Add c_codecvt.c - -2000-07-12 benjamin kosnik <bkoz@gnu.org> - - * _G_config.h: Smoke less crack, don't define _G_HAVE_ST_BLKSIZE. - -2000-04-25 Benjamin Kosnik <bkoz@gnu.org> - - * libio.h: Change decls for seekoff/seekpos. - * Makefile.am: Add bits to not generate _G_config.h on linux. - * gen-params: Remove sigset_t declaration. - -2000-02-29 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (libio_headers): Strip out deadweight. - -2000-02-21 Benjamin Kosnik <bkoz@cygnus.com> - - * gen-params (CONFIG_NM): Specifically add in nm as the - default CONFIG_NM. - -2000-02-10 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am: Add bits for _G_config.h generation. - * gen-params: New file. - -2000-02-07 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am: Change license. - -1999-07-28 Benjamin Kosnik <bkoz@gnu.org> - - * Makefile.am (libio_la_SOURCES): Remove cleanup.c, so that - _IO_cleanup will not be undefined. - -1998-11-26 Manfred Hollstein <manfred@s-direktnet.de> - - * configure.in (compiler_name): Add check to detect if this - language's compiler has been built. - -1998-10-12 Alexandre Oliva <oliva@dcc.unicamp.br> - - * config.shared (depend.new): delete libc-lock.h from - dependencies, and fix _G_config.h -> $(_G_CONFIG_H) rule - * depend: Rebuilt. - -Sun Oct 11 01:51:42 1998 Jeffrey A Law (law@cygnus.com) - - * config.shared (depend.new): Fix typo. - * depend: Rebuilt. - -1998-09-09 Manfred Hollstein <manfred@s-direktnet.de> - - * configure.in (INSTALLDIR): Fix comment about changing INSTALLDIR's - value; don't change its value if --enable-version-specific-runtime-libs - has been specified. - -Wed Sep 2 21:05:39 1998 H.J. Lu (hjl@gnu.org) - - * configure.in: Fix INSTALLDIR replacement for cross-compile. - -Sun Aug 30 22:27:02 1998 Lutz Wohlrab <lutz.wohlrab@informatik.tu-chemnitz.de> - - * dbz/Makefile.in: Avoid assumptions about "tr" behaves when - LANG is set to something other than English. - -Sun Aug 30 22:17:00 1998 H.J. Lu (hjl@gnu.org) - - * config.shared: Set libsubdir. - -1998-08-25 14:34 Ulrich Drepper <drepper@cygnus.com> - - * libio/iogetline.c (_IO_getline_info): Don't read anything for - N == 0. Patch by HJ Lu. - -1998-08-23 Mark Mitchell <mark@markmitchell.com> - - * iomanip.h: Use __extension__ for `extern' explicit template - instantiations. - -1998-08-17 Ulrich Drepper <drepper@cygnus.com> - - * strfile.h: Define __PMT if not already defined. - -1998-08-03 Andreas Jaeger <aj@arthur.rhein-neckar.de> - - * libioP.h: Use __PMT in typedefs. - * strfile.h: Likewise. - -1998-06-29 Ulrich Drepper <drepper@cygnus.com> - - * libio.h: Rewrite __PMT change so that it works with platforms - defining __P but not __PMT. - - * libio.h (__PMT): New macro. Defined like __P. Use is for - function pointers. - -1998-06-27 Manfred Hollstein <manfred@s-direktnet.de> - - * Makefile.in (install): Remove superfluous /include. - -1998-06-26 Manfred Hollstein <manfred@s-direktnet.de> - - * config.shared (FLAGS_TO_PASS): Add gcc_version_trigger. - (Makefile): Add dependency upon $(gcc_version_trigger). - -1998-06-24 Manfred Hollstein <manfred@s-direktnet.de> - - * Makefile.in (install): Install _G_config.h depending on new flag - --enable-version-specific-runtime-libs. - * config/linux.mt (gxx_include_dir): Remove definition here as we use - gcc's default anyway. - -1998-06-24 Manfred Hollstein <manfred@s-direktnet.de> - - * config.shared (FLAGS_TO_PASS): Add gcc_version. - -1998-06-19 Manfred Hollstein <manfred@s-direktnet.de> - - * config.shared (FLAGS_TO_PASS): Add libsubdir. - -1998-06-07 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> - - * genops.c (__underflow): Read character from read pointer as unsigned. - (__uflow): Likewise. - -1998-05-22 Ulrich Drepper <drepper@cygnus.com> - - * strops.c (_IO_str_underflow): Read newly available character - from buffer as unsigned. - -Sun Apr 19 22:13:36 1998 H.J. Lu (hjl@gnu.org) - - * isgetline.cc (istream::get): Fix a typo. - -Thu Mar 5 09:23:28 1998 Manfred Hollstein <manfred@s-direktnet.de> - - * configure.in: Make locating frag files failsafe even for the - special case if configuring and building in srcdir. - -1998-02-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> - - Changes for _G_IO_IO_FILE_VERSION == 0x20001: - * libioP.h (_IO_showmanyc_t, _IO_SHOWMANYC, _IO_imbue_t, - _IO_IMBUE): New definitions. - (struct _IO_jump_t): Add __showmanyc and __imbue fields. - (_IO_file_fopen): Add new fourth argument. - * filebuf.cc (filebuf::open): Pass new fourth argument to - _IO_file_fopen. - * iolibio.h (_IO_freopen): Likewise. - * streambuf.cc (streambuf::showmanyc, streambuf::imbue): New - functions. - * streambuf.h (_IO_wchar_t): Define to _G_wchar_t. - (ios::fill): Remove casts. - (struct streambuf): Add showmanyc and imbue members. - - * iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >= - 1]: Initialize new fields is_char of struct printf_info. - (ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 1]: - Likewise. - -Sun Feb 22 17:24:53 1998 Jeffrey A Law (law@cygnus.com) - - * config.shared: Bring back changes from Ian and Fred that were - accidentally clobbered. Should eliminate the need for Dave's - recent change. - -Tue Feb 17 21:56:25 1998 H.J. Lu (hjl@gnu.org) - - * config/linux.mt (IO_OBJECTS): Add iogetline.o. - * config/linuxlibc1.mt: Ditto. - - * iogetline.c (_IO_getline_info): Renamed from _IO_getline. - (_IO_getline): Just call _IO_getline_info. - - * isgetline.cc (istream::getline, istream::get, _sb_readline): - Call _IO_getline_info instead of _IO_getline and get the EOF - information. - * sbgetline.cc (streambuf::sgetline): Ditto. - - * libioP.h (_IO_getline_info): New declaration. - - * iogetline.c (_IO_getline): Handle the case when there is no - buffer. - -Fri Feb 13 00:57:20 1998 Krister Walfridsson (cato@df.lth.se) - - * fileops.c: #include <unistd.h>. - * ioprims.c: Likewise. - -1998-02-10 Mark Mitchell <mmitchell@usa.net> - - * iostream.cc (ostream::operator<<(long double)): Don't use - labeled initializers. - -Fri Feb 6 01:35:56 1998 Manfred Hollstein <manfred@s-direktnet.de> - - * config.shared (FLAGS_TO_PASS): Don't emit PICFLAG. - (.c.o): Check value of enable_shared, not PICFLAG. - (.C.o): Dito. - (.cc.o): Dito. - (stamp-picdir): Dito. - -Thu Feb 5 17:41:26 1998 Dave Brolley <brolley@cygnus.com> - - * config.shared (LIBS): Change to -L../../libstdc++ (was -L../libstdc++) - if ${DOING_GPERF} is true. - -1998-01-20 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) - - * iostream.cc (istream::operator>>(long double&)) - [!_G_HAVE_LONG_DOUBLE_IO]: Scan value into separate variable, in - case long double is bigger than double. - (ostream::operator<<(double)) [_G_HAVE_PRINTF_FP]: Fix order of - initializers of struct printf_info to match declaration order, - to work around g++ bug. - (ostream::operator<<(long double)) [_G_HAVE_PRINTF_FP]: Likewise. - - * gen-params: Add missing quotes. Avoid useless use of command - substitution. - -Sun Feb 1 13:29:47 1998 H.J. Lu (hjl@gnu.org) - - * filebuf.cc (filebuf::open): Call _IO_file_open if - _G_HAVE_IO_FILE_OPEN is 1. - - * libio.h (_IO_fpos64_t, _IO_off64_t): Defined if - _G_IO_IO_FILE_VERSION == 0x20001. - - * libioP.h (_IO_file_open): New declaration. - - * libio.h (_IO_FILE, _IO_stdin_, _IO_stdout_, _IO_stderr_, - _IO_seekoff, _IO_seekpos): Add support for libio in glibc 2.1. - * libioP.h (_IO_seekoff_t, _IO_seekpos_t, _IO_seek_t, - _IO_seekoff, _IO_seekpos, _IO_default_seekoff, - _IO_default_seekpos, _IO_default_seek, _IO_file_seekoff, - _IO_file_seek, _IO_str_seekoff, _IO_pos_BAD, _IO_pos_as_off, - _IO_pos_0): Ditto. - * streambuf.h (streamoff, streampos): Ditto. - - * gen-params (__extension__): Use only if gcc version >= 2.8. - -Sun Feb 1 13:08:18 1998 Krister Walfridsson (cato@df.lth.se) - - * dbz/dbz.c (putconf): Handle systems which use "long long" as type - for "off_t". - * dbz/dbzmain.c (mkfiles): Likewise. - -Wed Jan 28 10:27:11 1998 Manfred Hollstein <manfred@s-direktnet.de> - - * config.shared (FLAGS_TO_PASS): Add gxx_include_dir. - - * stdio/configure.in, tests/configure.in: Update with yesterday's - toplevel configure.in changes. - * testsuite/configure.in: Likewise. - - * config.shared: Fix typo in yesterday's changes. - -Tue Jan 27 23:26:07 1998 Manfred Hollstein <manfred@s-direktnet.de> - - * config.shared: Emit everything which needs to be re-definable - via file descriptor 1; the generic stuff is emitted using redirection - onto fd 2. - - * configure.in (package_makefile_rules_frag): New variable - which is used in the call to config.shared; redirect file descriptor 2 - to ${package_makefile_rules_frag}. - -Tue Jan 27 10:35:22 1998 H.J. Lu (hjl@gnu.org) - - * configure.in (topsrcdir): New. - (CHECK_SUBDIRS, configdirs): Check ${topsrcdir}/gcc instead. - (config-ml.in): Use ${topsrcdir}/config-ml.in. - - * tests/configure.in (topsrcdir): New. - (CHECK): Check ${topsrcdir}/gcc instead. - -Fri Jan 16 00:48:03 1998 Manfred Hollstein <manfred@lts.sel.alcatel.de> - - * config.shared (FLAGS_TO_PASS): Add SHELL. - -Thu Jan 15 00:21:58 1998 Ian Lance Taylor <ian@cygnus.com> - - * configure.in: For *-*-cygwin32*, add a -I for winsup to both - XCINCLUDES and XCXXINCLUDES. - * config.shared: Use ${host_includes} when setting CXXINCLUDES in - the DOING_LIBGXX case. - * Makefile.in (_G_config.h): Pass $(CINCLUDES) in CC and - $(CXXINCLUDES) in CXX when running gen-params. - -Tue Jan 13 21:32:08 1998 H.J. Lu (hjl@gnu.org) - - * configure.in (CHECK_SUBDIRS): Set to testsuite only if - ${srcdir}/../gcc exists. - (configdirs): Include testsuite only if ${srcdir}/../gcc exists. - - * tests/Makefile.in (check): Depend on $(CHECK). - - * tests/configure.in (CHECK): Set to "check-iostream - check-stdio" if ${srcdir}/../../gcc doesn't exists. - -Thu Jan 8 18:09:03 1998 Fred Fish <fnf@cygnus.com> - - * config.shared (THIS_FILE): Really found via TOLIBIO instead - of TOLIBCXX, which is empty when configuring gperf. - (LIBS): When linking gperf, find libstdc++ relative to TO_TOPDIR - instead of hardcoded "../". - -1997-12-12 Brendan Kehoe <brendan@lisa.cygnus.com> - - Don't make gperf depend upon libg++. - * config.shared (TOLIBGCXX) [DOING_GPERF]: Delete. - (LIBS) [DOING_GPERF]: Make it just `-L../libstdc++ -lstdc++'. - -Thu Dec 11 11:20:59 1997 H.J. Lu (hjl@gnu.org) - - * configure.in (target frags): Add *-linux-gnu. - -Fri Dec 5 16:22:15 1997 H.J. Lu (hjl@gnu.org) - - * streambuf.cc (streambuf::~streambuf): Don't delete _lock - for _IO_stdin/_IO_stdout/_IO_stderr. - -Thu Nov 27 01:32:43 1997 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (install): Change gxx_includedir to gcc_include_dir. - * config.shared (gxx_includedir): Remove default definition. - * config/linux.mt: Change gxx_includedir to gxx_include_dir. - * config/linuxaxp1.mt: Likewise. - -Wed Nov 26 16:08:50 1997 Richard Henderson (rth@cygnus.com) - - * configure.in (target frags): Add powerpc*-linux-gnulibc1. - (stdio-lock): Similarly. - - * configure.in (target frags): Add alpha*-linux-gnulibc1. - (pic frags): Its alpha*- not alpha-. - (stdio-lock): Kill everything. Add alpha*-linux-gnulibc1. - * libio.h: Check __GLIBC_MINOR__ to find stdio-lock.h. If not - _IO_MTSAFE_IO & GLIBC, make sure the lock pointer is still there. - * libioP.h: Check __GLIBC_MINOR__ to find libc-lock.h. - - * config/linuxaxp1-libc-lock.h: New file. - * config/linuxaxp1-stdio-lock.h: New file. - * config/linuxaxp1.mt: New file. - - * gen-params (va_list): Check for and use __gnuc_va_list. - (NULL): Work around some linux kernel headers and redefine NULL. - -Mon Nov 24 17:04:18 1997 Michael Meissner <meissner@cygnus.com> - - * stdiostream.cc (sys_read): Declare ch with int type, rather than - without a type. - -Tue Nov 18 09:53:58 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * stdstrbufs.cc (DEF_STDFILE): Use STD_VTABLE. - -Tue Nov 11 01:40:17 1997 Oleg Krivosheev <kriol@fnal.gov> - - * iomanip.h: Fix guiding decls. - -1997-11-05 Brendan Kehoe <brendan@lisa.cygnus.com> - - * libio.h (__P): Name its arg `p' instead of `params'. - Avoids problems with an unchanged Solaris math.h header. - -Wed Oct 29 23:01:47 1997 Jason Merrill <jason@yorick.cygnus.com> - - * gen-params: Override NULL. - -1997-10-27 03:53 Ulrich Drepper <drepper@cygnus.com> - - * stdio-lock.h: Removed. Was never needed. - -Wed Oct 22 19:19:32 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * libio.h (_IO_LOCK_T): Handle glibc 2 when _IO_MTSAFE_IO is - not defined. - - * iovsscanf.c (vsscanf): Make it weak alias of _IO_vsscanf if - __linux__ is defined instead of __ELF__ - - * config/linuxlibc1.mt (USER_INCLUDES): Add libio.h. - -1997-10-15 Ulrich Drepper <drepper@cygnus.com> - - * configure.in: Create compatibility code in bits/libc-lock.h file. - -Thu Oct 9 07:08:41 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * libio.h (_IO_LOCK_T): Handle glibc 2 when _IO_MTSAFE_IO is - not defined. - - * filedoalloc.c (_IO_file_doallocate): Don't call - _IO_cleanup_registration_needed if __linux__ is defined. - - * iofclose.c (fclose): Make it weak alias of _IO_fclose if - __ELF__ is defined. - - * iovsprintf.c (vsprintf): Make it weak alias of _IO_vsprintf - if __ELF__ is defined. - - * iovsscanf.c (vsscanf): Make it weak alias of _IO_vsscanf if - __ELF__ is defined. - - * config/linuxlibc1.mt (MT_CFLAGS): Defined as -D_G_HAVE_MMAP. - (IO_OBJECTS): Add filedoalloc.o fileops.o genops.o iofclose.o - iovsprintf.o iovsscanf.o strops.o. - -Fri Oct 3 10:13:13 1997 Jason Merrill <jason@yorick.cygnus.com> - - * iostream.cc, libio.h: Convert other uses of #ifdef - _G_HAVE_PRINTF_FP to #if. - -1997-10-02 Brendan Kehoe <brendan@lisa.cygnus.com> - - * iostream.cc (operator<<): Use `#if _G_HAVE_PRINTF_FP', not ifdef. - -Thu Oct 2 10:36:49 1997 Jason Merrill <jason@yorick.cygnus.com> - - * gen-params: Fix __printf_fp test. - * config/linuxlibc1.mt (gxx_includedir): Don't define. - -Thu Oct 2 10:36:26 1997 Ulrich Drepper <drepper@rtl.cygnus.com> - - * config/linuxlibc1.mt (_G_CONFIG_H): Don't define. - * gen-params: Add test for __printf_fp. - -Sun Sep 28 12:09:04 1997 Mark Mitchell <mmitchell@usa.net> - - * iomanip.h: Use new friend <> syntax. - -Sun Sep 28 12:04:21 1997 Jason Merrill <jason@yorick.cygnus.com> - - * libio.h: Don't use _IO_LOCK_T if it's not defined. - -Fri Sep 26 20:56:41 1997 - - Based on a patch by H.J. Lu (hjl@gnu.ai.mit.edu). - - * Makefile.in (STDIO_OBJECTS): New. Defined as stdfiles.o. - (LIBIO_OBJECTS): Add $(STDIO_OBJECTS). - (PICFLAG): New, empty. moved to here from config.shared. - - * config.shared (DISTCLEAN): Add target-mkfrag. - (PICFLAG): Removed. - - * configure.in (*-linux-gnulibc1): Remove warning. - (*-linux-gnu): Use linux.mt mtsafe.mt. - (alpha-*-linux*): Use mh-elfalphapic. - - * gen-params (_G_ullong): Also check unsigned long long int. - (_G_llong): Also check long long int. - - * libio.h (_IO_lock_t): Add support for the Linux libc 5. - (_IO_peekc): Defined as _IO_peekc_unlocked if _IO_MTSAFE_IO - is not defined. - - * iostream.cc (__cvt_double): Fix a typo in declaration. - (info): Use expr != 0 to initialize the bit fields. Don't - initialize "extra" for the Linux libc 5. - - * streambuf.h (_G_NEED_STDARG_H): Changed from _IO_NEED_STDARG_H. - - * config/linux.mt (STDIO_OBJECTS): New, empty. - (MT_CFLAGS): Removed. - - * config/linuxlibc1.mt: Rewrite. it's identical to linux.mt but - IO_OBJECTS mentions files not in early libc5 versions. - - * config/mtsafe.mt: New. - - * dbz/Makefile.in (check): Support make -j. - - * tests/tFile.cc (tempfile): Fix a typo. - -1997-09-19 11:52 Jim Wilson <wilson@cygnus.com> - - * Makefile.in (LIBIO_OBJECTS): Depend on _G_CONFIG_H. - -1997-09-17 04:08 Ulrich Drepper <drepper@cygnus.com> - - * iostream.cc: Add forward declaration for __cvt_double. - * libio.h: Define _IO_USE_DTOA is _G_HAVE_PRINTF_FP is not defined. - * strops.c (_IO_str_count): Correct last change. - -1997-09-17 02:50 Ulrich Drepper <drepper@cygnus.com> - - * libioP.h: Define __set_errno if not already defined. - -1997-09-15 02:37 Ulrich Drepper <drepper@cygnus.com> - - * config/linux.mt: Rewrite for use with glibc 2. - * config/linuxlibc1.mt: Old content of linux.mt, fir libc4 and - libc5. - - * config.shared (COMPILE.c): Allow new flags in MT_CFLAGS be - passed. - (COMPILE.cc): Likewise. - - * configure.in (*-linux*): Remove goal. We now have... - (*-linux-gnulibc1): For libc4 and libc5. Emit warning. - (*-linux-gnu)): For glibc 2. - Create links to find headers for multi-threading if necessary. - - * fileops.c: Make thread-safe by using _IO_cleanup_region_start - etc to handle cancelation. Acquire locks in functions which are - called directly. - (_IO_file_read, _IO_file_write): Remove dead code. - - * include/empty.h: Define stub macros for locking. - - * iolibio.h: Add prototypes for obstack printing functions. - - * ioseekoff.c (_IO_seekoff): Lock stream before working. - * ioseekpos.c (_IO_seekpos): Likewise. - - * iostream.cc: Add support for long double I/O. - Use __printf_fp from glibc is available. - Use _IO_cleanup_region_start to handle cancelation correctly. - * iostream.h (class ostream): Change opfx and osfx to lock/unlock - stream - (class istream): Likewise for ipfx, ipfx0, ipfx1, and isfx. - Declare new function lock and unlock for ostream and istream. - * osform.cc: Use _IO_cleanup_region_start to handle cancelation - correctly. - - * libio.h: Update from glibc version. Pretty printing. - * libioP.h: Likewise. - - * outfloat.c: Only compile if _IO_USE_DTOA is defined. - - * stdio/feof.c: Make thread safe. - * stdio/ferror.c: Likewise. - * stdio/getc.c : Likewise. - * stdio/putc.c : Likewise. - * stdio/stdio.h: Declare function of thread-safe API. - - * stdio/obprintf.c: New file. - * stdio/vasprintf.c: New file. - - * stdio-lock.h: Removed. - - * stdstrbufs.c: Add definitions for thread-safe streams. - - * streambuf.cc: Initialize lock. - - * strops.c (_IO_str_count): Undo last change. - - * tests/tFile.cc: Support parallel builds by avoiding fixed - name for test file. - -Thu Sep 11 18:43:56 1997 Jason Merrill <jason@yorick.cygnus.com> - - * Makefile.in (iostream.list): Remove STDIO_WRAP_OBJECTS. - -Mon Sep 8 01:30:27 1997 Weiwen Liu <liu@hepunix.physics.yale.edu> - - * libio.h: Fix typo. - -Sun Sep 7 23:00:18 1997 Jim Wilson (wilson@cygnus.com) - - * linux.mt (LIBIOSTREAM_DEP): Change stdio.list to stmp-stdio. - -Fri Sep 5 09:58:43 1997 Brendan Kehoe <brendan@lisa.cygnus.com> - - * Makefile.in (iostream.list): Instead of adding stdio.list, add - STDIO_WRAP_OBJECTS. - (iostream.list): Lose dependency on stmp-stdio, not necessary for - our stuff. The stdio stuff is present here just for uniformity - with glibc. - -Thu Sep 4 17:26:22 1997 Brendan Kehoe <brendan@lisa.cygnus.com> - - * parsestream.cc (general_parsebuf): Cast return of malloc to char*. - -1997-09-04 16:11 Ulrich Drepper <drepper@cygnus.com> - - Change compared to version initially intended to in: - * strops.c (_IO_str_count): Still use _IO_write_ptr, not - _IO_write_end, for now. - - * iofeof.c, ioferror.c, iofflush_u.c, iogetc.c, ioputc.c, peekc.c, - stdio-lock.h: New files. - - * include: New dir. - * include/empty.h: New header. - - * filedoalloc.c: Update and reformat copyright. - Don't use DEFUN. - Use __set_errno throughout the code to support multi-threaded - programs. - Correct layout to follow the Coding Standard. - Add casts to prevent warnings. - * fileops.c: Likewise. - * genops.c: Likewise. - * iofclose.c: Likewise. - * iofdopen.c: Likewise. - * iofflush.c: Likewise. - * iofgetpos.c: Likewise. - * iofgets.c: Likewise. - * iofopen.c: Likewise. - * iofprintf.c: Likewise. - * iofputs.c: Likewise. - * iofread.c: Likewise. - * iofsetpos.c: Likewise. - * ioftell.c: Likewise. - * iofwrite.c: Likewise. - * iogetdelim.c: Likewise. - * iogetline.c: Likewise. - * iogets.c: Likewise. - * iopadn.c: Likewise. - * iopopen.c: Likewise. - * ioputs.c: Likewise. - * ioseekoff.c: Likewise. - * iosetbuffer.c: Likewise. - * iosetvbuf.c: Likewise. - * iosprintf.c: Likewise. - * ioungetc.c: Likewise. - * iovsprintf.c: Likewise. - * iovsscanf.c: Likewise. - * libio.h: Likewise. - * libioP.h: Likewise. - * stdfiles.c: Likewise. - * strfile.h: Likewise. - * strops.c: Likewise. - - * Makefile.in (IO_OBJECTS): Add peekc.o, iogetc.o, ioputc.o, - iofeof.o, and ioferror.o. - (iostream.list): Depend upon stmp-stdio. Add the entries - from stdio.list to iostream.list. - (stmp-stdio): New name for what was the stdio/stdio.list rule. - All it now does is cd down into stdio and build stdio.list. - - * configure.in (ALL): Add libiostream.a. - - * libio.h [_IO_MTSFE_IO]: Include header declaring locking code. - Otherwise define opaque _IO_lock_t. - Define _IO_cookie_file. - Rename _IO_getc to _IO_getc_unlocked, _IO_peekc to _IO_peekc_unlocked, - _IO_putc to _IO_putc_unlocked, _IO_feof to _IO_feof_unclocked, and - _IO_ferror to _IO_ferror_unlocked. - Add prototypes for _IO_getc, _IO_putc, _IO_feof, _IO_ferror, - and _IO_peekc_locked. - Add declarations for _IO_flockfile, _IO_funlockfile, and - _IO_ftrylockfile. If !_IO_MTSAFE_IO define _IO_flockfile, - _IO_funlockfile, _IO_ftrylockfile, _IO_cleanup_region_start, and - _IO_cleanup_region_end as empty macros. - - * libioP.h: Change type of finish function to take an additional int - argument and change declaration of finish functions. - Add prototypes for _IO_seekoff and _IO_seekpos. - If _G_HAVE_MMAP is defined use stream buffers allocated with mmap. - Redefine FREE_BUF and ALLOC_BUF macros to help in both situations. - (FILEBUF_LITERAL): If we compile for a thread-safe library also - initialize lock member. - - * filedoalloc.c: Take care for systems already defining _POSIX_SOURCE. - Keep name space clean on systems which require this. - (_IO_file_doallocate): Adopt ALLOC_BUF call for changed semantic. - - * fileops.c: Keep name space clean on systems which require this. - (_IO_file_attach): Don't fail if seek failed because it's used on a - pipe. - (_IO_file_underflow): Update buffer pointers before calling `read' - since the `read' might not return anymore. - (_IO_file_overflow): If stream allows no writes set error flag. - (_IO_seekoff): Make sure that after flushing the file pointer in - the underlying file is exact. - (_IO_file_read): Don't restart `read' syscall if it return EINTR. - This violates POSIX. - (_IO_file_write): Likewise for `write'. - (_IO_cleanup): Install as exit handler in glibc. - - * genops.c (_IO_setb): Correctly use FREE_BUF. - (_IO_default_doallocate): Correctly use ALLOC_BUF. - (_IO_init): Initialize lock in stream structure. - (_IO_default_finish): Destroy lock. - (_IO_get_column): Don't compile since it's not needed. - (_IO_nobackup_default): Likewise. - - * iopopen.c: Take care for systems already defining _POSIX_SOURCE. - Correct _IO_fork and _IO_dup2 prototypes. - - * iofclose.c: Acquire lock before starting the work. - * iofflush.c: Likewise. - * iofgetpos.c: Likewise. - * iofgets.c: Likewise. - * iofputs.c: Likewise. - * iofread.c: Likewise. - * iofsetpos.c: Likewise. - * ioftell.c: Likewise. - * iofwrite.c: Likewise. - * iogetdelim.c: Likewise. - * iogets.c: Likewise. - * ioputs.c: Likewise. - * iosetbuffer.c: Likewise. - * iosetvbuf.c: Likewise. - * ioungetc.c: Likewise. - - * iofdopen.c: Create and initialize lock for new stream. - * iofopen.c: Likewise. - * iopopen.c (_IO_popen): Likewise. - * iovsprintf.c: Likewise. - * iovsscanf.c: Likewise. - - * genops.c: Make weak aliases for various functions. - * iofclose.c: Likewise. - * iofdopen.c: Likewise. - * iofflush.c: Likewise. - * iofgetpos.c: Likewise. - * iofgets.c: Likewise. - * iofopen.c: Likewise. - * iofputs.c: Likewise. - * iofread.c: Likewise. - * iofsetpos.c: Likewise. - * ioftell.c: Likewise. - * iofwrite.c: Likewise. - * iogetdelim.c: Likewise. - * iogets.c: Likewise. - * ioputs.c: Likewise. - * iosetbuffer.c: Likewise. - * iosetvbuf.c: Likewise. - * ioungetc.c: Likewise. - * iovsprintf.c: Likewise. - * iovsscanf.c: Likewise. - - * iofflush_u.c: New file. fflush_unlocked implementation. - - * iostream.h [_G_HAVE_LONG_DOUBLE_IO]: Declare real long double - output operator. - - * peekc.c: New file. Implement _IO_peekc_locked function. - - * stdfiles.c: If we compile for a thread-safe library also define - lock variable. - -Tue Aug 26 12:24:01 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * testsuite/Makefile.in (check): Don't depend on site.exp. - (just-check): Depend on site.exp. - -Wed Aug 20 02:01:34 1997 Jason Merrill <jason@yorick.cygnus.com> - - * iostream.h: Add copy assignment ops for _IO_?stream_withassign. - -Tue Jul 22 10:31:41 1997 Brendan Kehoe <brendan@lisa.cygnus.com> - - * config.shared (CHECK_SUBDIRS): Use install-sh, not install.sh. - -Wed Jun 25 12:20:55 1997 Brendan Kehoe <brendan@lisa.cygnus.com> - - * config.shared (DOING_GPERF): Look for this, defining TOLIBGXX - and LIBS for it. - -Wed Jun 18 11:03:34 1997 Bob Manson <manson@charmed.cygnus.com> - - * config.shared (FLAGS_TO_PASS): Don't include RUNTEST. - -Tue Jun 17 22:23:48 1997 Bob Manson <manson@charmed.cygnus.com> - - * config.shared (FLAGS_TO_PASS): Pass RUNTEST and RUNTESTFLAGS. - -Fri May 16 21:08:53 1997 Bob Manson <manson@charmed.cygnus.com> - - * iovfprintf.c: Declare __cvt_double before use. - - * floatconv.c (d2b): Use _G_int32_t instead of int for the - e and bits parameters. - (_IO_strtod): Use _G_int32_t. - - * gen-params: Look for NO_USE_DTOA and USE_INT32_FLAGS. - - * strops.c (_IO_str_init_static): use _G_int32_t appropriately. - - * libio.h: If _G_NO_USE_DTOA is set, then don't define - _IO_USE_DTOA. - - * config/mn10200.mt: Don't use dtoa, it only works - for "real" doubles. - -Thu May 15 17:44:12 1997 Bob Manson <manson@charmed.cygnus.com> - - * configure.in: Set CHECK_SUBDIRS to testsuite if we're doing - a cross compile. - - * config.shared(check): Only run make check in the directories - specified by CHECK_SUBDIRS. Set CHECK_SUBDIRS to SUBDIRS - if it has no previous value. - -Thu May 1 17:35:19 1997 Jason Merrill <jason@yorick.cygnus.com> - - * Makefile.in (test, tpipe): Add $(CFLAGS). - -Wed Apr 30 12:16:29 1997 Jason Merrill <jason@yorick.cygnus.com> - - * configure.in: Don't turn on multilib here. - -Sat Apr 26 13:38:21 1997 Bob Manson <manson@charmed.cygnus.com> - - * configure.in (configdirs): Add testsuite directory. - - * testsuite/ChangeLog: - * testsuite/Makefile.in: - * testsuite/libio.tests/tiomanip.exp: - * testsuite/libio.tests/tstdiomisc.exp: - * testsuite/libio.tests/tiomisc.exp: - * testsuite/libio.tests/tFile.exp: - * testsuite/libio.tests/tfformat.exp: - * testsuite/libio.tests/tiformat.exp: - * testsuite/libio.tests/hounddog.exp: - * testsuite/libio.tests/putbackdog.exp: - * testsuite/configure.in: - * testsuite/lib/libio.exp: - * testsuite/config/default.exp: - New files for DejaGnu-style testsuite. - -Fri Apr 4 03:16:44 1997 Ulrich Drepper <drepepr@cygnus.com> - - * configure.in: Enable multilibing by default. - Update multilib template to read config-ml.in. - - * floatconv.c: Enable use in cross targets which use the - newlib ieeefp.h header. - -Thu Jan 23 09:16:16 1997 Brendan Kehoe <brendan@lisa.cygnus.com> - - * libioP.h (_IO_file_attach): Delete redundant decl. - -Tue Jan 21 22:13:45 1997 Brendan Kehoe <brendan@lisa.cygnus.com> - - * streambuf.h (class ios): Take out STREAMSIZE member, since we - only need (and should only have) the global one. - -Tue Jan 7 14:02:40 1997 Jason Merrill <jason@yorick.cygnus.com> - - * iostream.h (long long fns): Use __extension__. - - * gen-params: Use _G_llong and _G_ullong instead of long long for - deduced types. - -Fri Dec 6 13:13:30 1996 Jason Merrill <jason@yorick.cygnus.com> - - * dbz/dbz.c: Use off_t. - -Sat Nov 23 15:44:37 1996 Jason Merrill <jason@yorick.cygnus.com> - - * Makefile.in (install): Don't install _G_config.h with other headers. - -Mon Nov 18 17:12:41 1996 Jason Merrill <jason@yorick.cygnus.com> - - * config.shared (SUBDIRS): Use -O instead of -O3 for debugging. - -Sun Nov 3 12:43:34 1996 Jason Merrill <jason@yorick.cygnus.com> - - * iostream.cc (write_int): Treat string literals as const. - -Thu Sep 26 10:09:18 1996 Michael Meissner <meissner@tiktok.cygnus.com> - - * depend: Regenerate. - -Wed Sep 25 22:54:45 1996 Jason Merrill <jason@yorick.cygnus.com> - - * config.shared (depend.new): Deal with headers that don't end in .h. - -Thu Aug 29 17:05:53 1996 Michael Meissner <meissner@tiktok.cygnus.com> - - * configure.in (i[345]86-*-*): Recognize i686 for pentium pro. - -Mon Aug 5 01:26:32 1996 Jason Merrill <jason@yorick.cygnus.com> - - * config{ure.in,.shared} (DISTCLEAN): Add multilib.out. - -Fri Aug 2 17:39:35 1996 Jason Merrill <jason@yorick.cygnus.com> - - * libio.h (NULL): Use __null. - * libioP.h (NULL): Ditto. - * streambuf.h (NULL): Ditto. - * ioextend.cc (get_array_element): Use NULL instead of (void*)0. - -Fri Jul 5 18:26:41 1996 Jim Wilson <wilson@cygnus.com> - - * strfile.h (struct _IO_streambuf): New struct type. - (struct _IO_strfile): Use it. - -Tue Jun 18 18:24:21 1996 Jason Merrill <jason@yorick.cygnus.com> - - * fstream.h (fstreambase): Make __my_fb mutable. - From Joe Buck. - -Tue Jun 18 11:03:53 1996 Brendan Kehoe <brendan@lisa.cygnus.com> - - * dbz/fake.c (main): Set return type to int. - * dbz/dbzmain.c (main): Likewise. - * dbz/byteflip.c (main): Likewise. - -Mon Jun 17 14:05:36 1996 Jason Merrill <jason@yorick.cygnus.com> - - * gen-params: Check if clog conflicts with system libraries. - * stdstreams.cc: If it does, use __IO_clog. - * iostream.h: Likewise. - -Tue Jun 11 13:39:31 1996 Brendan Kehoe <brendan@lisa.cygnus.com> - - * stdiostream.h (istdiostream (FILE*)): Put istream base - initializer before init for __f. - (ostdiostream (FILE*)): Likewise for ostream base init. - -Tue May 14 11:47:21 1996 Per Bothner <bothner@andros.cygnus.com> - - * strfile.h (_IO_str_fields): Removed _len field. - (_IO_STR_DYNAMIC, _IO_STR_FROZEN): new macros. - * strstream.h (strstreambuf::is_static): Removed. - (strstreambuf::frozen): Use _IO_STR_DYNAMIC instead of is_static. - * strstream.h, strstream.cc: Remove support for !_IO_NEW_STREAMS. - * strstream.cc (strstreambuf::init_dynamic): Don't set _s._len. - * strops.c (_IO_str_init_static): Better handling of the - negative (== unbounded) size case. - (_IO_str_overflow, _IO_str_underflow, _IO_str_count): Re-write - to not use _s._len, and otherwise cleanup/fix. - * strstream.h, strstream.cc (strstreambase::strstreambase()): Call - ios::init here. - (other constructors): Simplify - init already called. - -Tue May 14 10:55:21 1996 Per Bothner <bothner@deneb.cygnus.com> - - Change so that strstreambuf default constructor does no allocation. - * strstream.h (strstreambuf::init_dynamic): Default initial size = 0. - * strstream.cc (strstreambuf::init_dynamic): Don't allocate a - buffer (yet) if initial_size is 0. - * strops.c (_IO_str_overflow): Add 100 to size of re-allocated - buffer, to handle case when initial size is 0. - - * iostdio.h (remove, rename, tmpfile, tempnam): Comment out. - -Mon May 13 23:19:39 1996 Per Bothner <bothner@deneb.cygnus.com> - - * fileops.c (_IO_file_close_it): Just call _IO_do_flush rather - than _IO_file_sync, to avoid useless lseek. - -Tue May 14 10:48:48 1996 Jason Merrill <jason@yorick.cygnus.com> - - * floatconv.c (_IO_strtod): Force rv into the stack. - - * config.shared (gxx_includedir): Now $(includedir)/g++. - -Sat Apr 27 02:37:49 1996 Jason Merrill <jason@yorick.cygnus.com> - - * libioP.h (JUMP*): Implement for thunks. - (_IO_jump_t): Add second dummy field for thunks. - -Thu Apr 25 13:20:00 1996 Jason Merrill <jason@yorick.cygnus.com> - - * config.shared (CXX): Use gcc, not g++. - -Wed Apr 24 10:29:50 1996 Doug Evans <dje@blues.cygnus.com> - - * config.shared (depend.new): Delete $(srcdir)/ from foo.{c,cc} - for SunOS VPATH. - * depend: Regenerated. - -Fri Apr 19 17:24:51 1996 Jason Merrill <jason@yorick.cygnus.com> - - * Version 2.8.0b3. - -Wed Apr 10 17:16:01 1996 Jason Merrill <jason@yorick.cygnus.com> - - * configure.in (ALL): Don't build iostream.a. - -Mon Apr 8 14:44:11 1996 Per Bothner <bothner@kalessin.cygnus.com> - - * iosetvbuf.c (_IO_setvbuf): Clear _IO_UNBUFFERED unless _IONBF. - -Mon Apr 8 15:08:23 1996 Ian Lance Taylor <ian@cygnus.com> - - * configure.in: Permit --enable-shared to specify a list of - directories. - -Fri Apr 5 17:48:56 1996 Per Bothner <bothner@kalessin.cygnus.com> - - * config.shared (MOSTLYCLEAN): Also remove ${EXTRA_MOSTLYCLEAN}. - -Fri Mar 22 23:25:00 1996 Ulrich Drepper <drepepr@gnu.ai.mit.edu> - - * genops.c (_IO_sputbackc, _IO_sungetc): Clear EOF flag if putsh - back was successful. - -Wed Mar 27 11:54:08 1996 Jason Merrill <jason@yorick.cygnus.com> - - * Version 2.8.0b2. - -Fri Mar 22 15:39:36 1996 Per Bothner <bothner@kalessin.cygnus.com> - - * fileops.c (_IO_do_write): Revert previous fix. (It fails to - handle the case that fp->_IO_read_end != fp->_IO_write_base.) - (_IO_file_overflow): Instead, if _IO_read_ptr is at the end of - the buffer, reset all the read pointers to _IO_buf_base. - -Tue Mar 12 12:03:17 1996 Per Bothner <bothner@kalessin.cygnus.com> - - * fileops.c (_IO_do_write): Even if to_do==0, must re-set buffer - pointers. Bug and solution from Luke Blanshard <luke@cs.wisc.edu>. - -Wed Feb 28 10:00:24 1996 Jason Merrill <jason@yorick.cygnus.com> - - * Version 2.8.0b1. - -Tue Feb 27 18:08:16 1996 Per Bothner <bothner@kalessin.cygnus.com> - - * iopopen.c (_IO_proc_open): Use (char*)0 rather than imprecise NULL. - - * streambuf.h (ios): Add ios::binary; deprecate ios::bin. - * filebuf.cc (filebuf::open): Handle ios::binary. - -Fri Feb 9 12:40:19 1996 Brendan Kehoe <brendan@lisa.cygnus.com> - - * cleanup.c (_IO_cleanup_registration_needed) [!_G_HAVE_ATEXIT]: Init - to NULL. - * filedoalloc.c (_IO_cleanup_registration_needed): Remove decl. - -Thu Feb 8 08:12:50 1996 Brendan Kehoe <brendan@cygnus.com> - - * filedoalloc.c (_IO_cleanup_registration_needed): Revert previous - change, since cleanup.c only defines it if _G_HAVE_ATEXIT. - -Wed Feb 7 15:10:17 1996 Brendan Kehoe <brendan@lisa.cygnus.com> - - * filedoalloc.c (_IO_cleanup_registration_needed): Declare as extern. - -Tue Dec 12 17:21:13 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * indstream.h, instream.cc (indirectbuf::uflow): New method. - * indstream.cc (indirectbuf::underflow): Fix to use sgetc, not sbumpc. - Fixes bug reported by Kevin Beyer <beyer@cs.wisc.edu>. - - * indstream.cc (indirectbuf::seekpos): Add paranoia test. - -Fri Dec 8 14:55:34 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * stream.h: Add warning to not use these functions. - * stream.cc (str, chr): Re-implement here (from libg++). - -Tue Nov 28 15:07:01 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * config.shared: Use test instead of [ to avoid DEC Unix lossage. - -Thu Nov 23 14:51:43 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * iopopen.c: Move #include <sys/types.h> ahead of #include <signal.h> - to deal with BSDI's literal implementation of Posix. - -Sat Nov 25 11:21:55 1995 Doug Evans <dje@canuck.cygnus.com> - - * Makefile.in (install): Set rootme. - * config.shared (TOPDIR): Set with ${foo-...} rather than ${foo=...}. - (INSTALL): Handle absolute, dot, relative-not-dot values of srcdir. - (TEXIDIR): Likewise. - -Tue Nov 21 14:12:05 1995 Ian Lance Taylor <ian@cygnus.com> - - * configure.in: Check ${with_cross_host} rather than comparing - ${host} and ${target}. - -Mon Nov 20 13:55:29 1995 Brendan Kehoe <brendan@lisa.cygnus.com> - - * configure.in: Match *-sco3.2v[45]*. - -Wed Nov 15 20:19:31 1995 Brendan Kehoe <brendan@lisa.cygnus.com> - - * config.shared (FLAGS_TO_PASS): Also pass SHLIB and SHCURSES. - -Tue Nov 14 01:41:08 1995 Doug Evans <dje@canuck.cygnus.com> - - * config.shared (TO_REAL_TOPDIR): Define. - (MULTITOP): Deleted. - (MULTISRCTOP, MULTIBUILDTOP): New. - (TOPDIR): Change MULTITOP to MULTIBUILDTOP, and use TO_REAL_TOPDIR. - (INSTALL): Add with_multisrctop, TO_REAL_TOPDIR. - (TEXIDIR): Use TO_REAL_TOPDIR. - (LIBS): Delete MULTITOP. - (FLAGS_TO_PASS): Add NM. - (CXXINCLUDES): Delete MULTITOP. - (depend.new): Delete adding MULTITOP to ../ build tree references. - Add MULTISRCTOP to ../ source tree references. - * configure.in: Delete call to cfg-ml-com.in. Call config-ml.in - instead of cfg-ml-pos.in. - -Sun Nov 12 16:30:48 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * Makefile.in (VERSION): Set to 2.7.1. - * configure.in: Add warning for Linux. - * config.shared (DISTCLEAN): Add EXTRA_DISTCLEAN. - - * editbuf.h (edit_mark::index_in_buffer): Avoid unused param warning. - - * iostream.cc (istream::operator>> (char*)): Improve ANSI compliance. - -Fri Nov 10 08:41:37 1995 Brendan Kehoe <brendan@lisa.cygnus.com> - - * config.shared (check): Add missing semicolon. - -Thu Nov 9 17:27:22 1995 Jason Merrill <jason@yorick.cygnus.com> - - * configure.in (ALL): Remove $(OSPRIM_OBJECTS). - * config.shared (check): Set LD_LIBRARY_PATH. - * NEWS: Fix typo. - * iogetdelim.c (_IO_getdelim): Index *lineptr, rather than lineptr. - From alan@spri.levels.unisa.edu.au (Alan Modra). - -Mon Nov 6 15:03:33 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * streambuf.cc, editbuf.cc, isgetline.cc, parsestream.cc: - Fixes to avoid -Wall warnings. - -Fri Nov 3 16:41:41 1995 Brendan Kehoe <brendan@lisa.cygnus.com> - - * gen-params [!__STDC__]: Include varargs.h instead of stdarg.h. - -Thu Nov 2 15:04:03 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * config.shared: Re-write if X then Y else true fi to (not X) || Y. - -Wed Nov 1 13:26:44 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * iostream.h (istream::ipfx): Add default argument value. - Reported by Yotam Medini <yotam_medini@tmai.com>. - - * libioP.h (_IO_blen): Fix typo. - Reported by Bryan T. Vold <btv@ldl.healthpartners.com>. - -Fri Oct 27 19:26:20 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * Makefile.in (_G_config.h): Set CC to $(CC) rather than to $(CXX), - now that CXX defaults to g++ and CC default to gcc (when found). - * config.shared: Simplify CXX and CC, since they get overridden - by ../configure anyway. - -Wed Oct 25 19:45:50 1995 Brendan Kehoe <brendan@lisa.cygnus.com> - - * iostdio.h: Wrap including the file with #ifndef _IOSTDIO_H. - -Wed Oct 25 11:14:25 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * libio.h (_IO_seekoff, _IO_seekpos): New declarations. - * libioP.h (_IO_seekoff, _IO_seekpos): Remove declarations. - * libioP.h: Cleanup; remove old !_IO_UNIFIED_JUMPTABLES stuff. - - * filebuf.cc (filebuf::~filebuf): Only call SYSYCLOSE if currently - open. Bug found by Martin Gerbershagen <ger@ezis-ulm.de>. - - * streambuf.h (streambuf::pubseekoff, streambuf::pubseekpos): - Added, from ANSI draft. - * filebuf.cc (filebuf::open), iostream.cc (variables places), SFile.cc: - Use pubseekoff/pubseekpos rather than sseekoff/sseekpos. - - * Makefile.in (install): Don't install libiostream.a. - - * filedoalloc.c: Also #include <unistd.h>. - -Mon Oct 9 18:09:54 1995 Jason Molenda <crash@phydeaux.cygnus.com> - - * config.shared (SUFFIXES): add .c. - -Tue Sep 26 16:08:01 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * procbuf.cc: Move #pragma implementation to beginning. - -Wed Sep 20 17:53:33 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * procbuf.h, procbuf.cc: Add #pragma interface/implementation stuff. - -Wed Sep 20 18:59:00 1995 John Eaton <jwe@bevo.che.wisc.edu> - - * procbuf.h: Protect from being included multiple times. - -Wed Sep 20 15:47:14 1995 John Eaton <jwe@bevo.che.wisc.edu> - - * procbuf.h (procbuf): Add '_next' pointer field for compatibility - with _IO_proc_file. - -Wed Sep 20 13:54:02 1995 Ian Lance Taylor <ian@cygnus.com> - - * config.shared: Add support for maintainer-clean target as a - synonym for realclean. - * dbz/Makefile.in: Likewise. - -Mon Sep 11 12:11:19 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * iopopen.c: #include <sys/types.h> before <sys/wait.h>. - This is in accordance with Posix, and needed for ISC. - -Fri Sep 8 00:11:55 1995 Brendan Kehoe <brendan@lisa.cygnus.com> - - * gen-params: Use double quotes in the eval setting $TYPE to - $VALUE, to preserve any single quotes in $VALUE. - -Mon Aug 21 11:39:09 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * gen-params: Test for an appropriate version of gcc before using - mode attributes. - - * config.shared: Add $(PICDIR) to $ALL. - -Mon Aug 7 17:51:40 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * gen-params: Generate new macro _G_HAVE_SYS_CDEFS. - * libio.h: If _G_HAVE_SYS_CDEFS, get __P from <sys/cdefs.h>. - -Fri Aug 4 23:21:17 1995 Paul Eggert <eggert@twinsun.com> - - * gen-params: When following typedef changes, allow typedefs - that do not have a space before the defined type name, - e.g. `typedef void *__gnuc_va_list;' as in Linux. Also, - not require a space in the definiens, e.g. `typedef void*foo;'. - -Thu Aug 3 17:54:15 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * iostream.h, iostream.cc (istream::sync): Added missing method. - -Thu Aug 3 17:49:34 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * configure.in: Remove netbsd special case. - * config/netbsd.mt: Removed; no longer used. - -Tue Jun 20 16:07:12 1995 Paul Eggert <eggert@twinsun.com> - - * gen-params: Take transitive closure of `typedef' relation. - This is needed for BSD/OS 2.0, which has - fpos_t -> off_t -> quad_t -> long long. - -Mon Jul 24 18:28:10 1995 Doug Evans <dje@canuck.cygnus.com> - - * config.shared (TOPDIR): Delete extra '/', $rootme may be empty. - -Sat Jul 22 13:27:45 1995 Doug Evans <dje@canuck.cygnus.com> - - * config.shared (depend.new): Fix quoting in DO NOT EDIT line. - - * Makefile.in (_G_config.h): Add multilib support. - (install): Likewise. - * config.shared: Likewise. - * configure.in: Likewise. - -Wed Jun 28 17:40:25 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * PlotFile.h, SFile.h, builtinbuf.h, editbuf.h, fstream.h, - indstream.h, iomanip.h, iostream.h, parsestream.h, pfstream.h, - procbuf.h, stdiostream.h, stream.h, streambuf.h, strstream.h: Wrap - with extern "C++". - -Thu Jun 22 04:34:01 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * gen-params: Surround attributes with __. - -Mon Jun 19 00:33:22 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * config.shared (SUBDIRS): Massage broken shells that require - 'else true'. - -Sat Jun 17 11:25:38 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * streambuf.h: Declare inline members inline in class. - -Thu Jun 15 20:45:13 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * Makefile.in (VERSION): Update to version 2.7.0. - -Wed Jun 14 21:41:11 1995 Jason Merrill <jason@python.cygnus.com> - - * Makefile.in (STDIO_WRAP_OBJECTS): Remove stdfiles.o. - (LIBIO_OBJECTS): Add stdfiles.o. - -Wed Jun 7 16:11:36 1995 Jason Merrill <jason@python.cygnus.com> - - * config.shared (all): Appease bash. - -Wed Jun 7 11:16:38 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * configure.in (MOSTLYCLEAN): Remove stamp-picdir. - - * config.shared (MOSTLYCLEAN): Ditto. - (CLEAN): Don't. - -Mon Jun 5 18:29:39 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * config/mh-*pic: Removed. - - * configure.in (MOSTLYCLEAN): Remove pic objects. - (frags): Use toplevel pic fragments. - - * config.shared (CXXFLAGS): Use -O3. - (PICFLAG, PICDIR): New macros. - (all): Depend on $(PICDIR). - (FLAGS_TO_PASS): Pass PICFLAG. - (.x.o): Also build pic object. - (stamp-picdir): Create directory for pic objects. - (MOSTLYCLEAN): Remove pic objects. - (CLEAN): Remove stamp-picdir. - - * Makefile.in (iostream.list): Depend on stamp-picdir. - (c++clean): Don't remove _G_config.h. - -Mon Jun 5 15:03:47 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * strstream.h, strstream.cc (strstream::strstream()): Re-implement to - be like ostrstream::ostrestream(), and not leak memory. - - * streambuf.h: Use #if !_IO_UNIFIED_JUMPTABLES instead of #ifndef. - - * iolibio.h (_IO_rewind): Add missing flags when calling _IO_seekoff. - -Thu May 25 22:30:21 1995 J.T. Conklin <jtc@rtl.cygnus.com> - - * config/netbsd.mt (G_CONFIG_ARGS): Add defn for off_t. Another - layer of typedefs has been added and the gen-params script can - not handle it. - -Wed May 10 03:02:58 1995 Jason Merrill <jason@python.cygnus.com> - - * iolibio.h (_IO_rewind): Add new argument to _IO_seekoff. - - * config/linux.mt (LIBIOSTREAM_OBJECTS): Include $(STDIO_WRAP_OBJECTS). - (LIBIOSTREAM_DEP): Include stdio.list. - (LIBIOSTREAM_USE): Include `cat stdio.list`. - - * Makefile.in (LIBIOSTREAM_DEP): New variable. - (LIBIOSTREAM_USE): Ditto. - (libiostream.a): Use them. - (iostream.list): Ditto. - (stdio.list): New rule. - (stdio/stdio.list): Ditto. - -Tue May 9 18:29:38 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * libioP.h (_IO_jump_t): Change TYPE for __dummy from int to - _G_size_t. - -Sat May 6 13:50:37 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * libio.h (_IO_UNIFIED_JUMPTABLES): #define as true. - (_IO_FILE): Remove _jumps field (#if _IO_UNIFIED_JUMPTABLES). - - * libioP.h (enum _IO_seekflags_): Removed. - - * libioP.h (_IO_setbuf_t): Change return value of setpos jumptable - function to match C++ streambuf::setpos. (Return NULL on failure.) - * fileops.c (_IO_file_setbuf), genops.c (_IO_default_setbuf), - filebuf.cc, iosetvbuf.c: Update to use new setbuf conventions. - - * streambuf.h (streambuf): Re-order virtual functions more logically. - * streambuf.cc (streambuf::uflow), streambuf.h: New virtual. - * libioP.h (struct _IO_jump_t): Define using new JUMP_FIELD macro. - And re-order in more logical order consistent with streambuf vtable. - * fileops.c (_IO_file_jumps), iopopen.c (_IO_proc_jumps), iovfprintf.c - (_IO_helper_jumps), streambuf.cc (_IO_streambuf_jumps), strops.c - (_IO_str_jumps): Update accordingly, using JUMP_INIT macro. - * stdfiles.c: Set vtable to point to _IO_file_jumps. - * filebuf.cc, iopopen.c, iovfprintf.c (helper_vfprintf), iovsprintf.c, - iovsscanf.c: Use macros and #if to set jumptables. - - * streambuf.c: _IO_streambuf_jumps and the _IO_sb_* methods are not - needed #if _IO_UNIFIED_JUMPTABLES. - * filebuf.cc (filebuf::__new): Also no longer needed. - * fstream.cc (fstreambase::__fb_init, fstreambase::fstreambase): Fix. - * stdstrbufs.c: Use filebuf vtable instead of builtinbuf's. - * builtinbuf.h, builtinbuf.cc (builtinbuf): Commented out #if - _IO_UNIFIED_JUMPTABLES - no longer needed. - * strstream.cc (SET_STR_JUMPS): Does nothing now. - - * builtinbuf.cc, fileops.c, genops.c, iofgetpos.c, iofsetpos.c, - ioftell.c, iopopen.c, ioseekoff.c, ioseekpos.c, iosetvbuf.c, - iovfprintf.c, iovfscanf.c, strops.c: Use DEFUN and DEFUN_VOID. - * filebuf.cc, fileops.c, genops.c, iopopen.c, ioseekoff.c, ioseekpos.c, - iosetvbuf.c, iovfscanf.c: Use new JUMP_* and IO_OVERFLOW/... macros. - - * libioP.h (_IO_seekpos_t): Third arg is now an int (using _IOS_INPUT - and _IOS_OUTPUT), not an enum _IO_seekflags_. Flags values are - changed, and their sense inverted (to match streambuf::seekpos). - * libioP.h (_IO_seekoff_t): Similarly match streambuf::seekoff. - * filebuf.cc, fileops.c (_IO_file_fopen, _IO_file_seekoff), genops.c - (_IO_default_seekpos, _IO_default_seekpos), iofgetpos.c, iofsetpos.c, - iolibio.h (_IO_fseek), ioftell.c, ioseekoff.c, ioseekpos.c, - iostream.cc, streambuf.cc, strops.c (_IO_str_seekoff), strstream.cc: - New seekpos/seekoff conventions. - * iostreamP.h (convert_to_seekflags): Removed - no longer needed. - - * iolibio.h (_IO_fread): New declaration. - - * dbz/Makefile.in: Re-arrange for cleaner dependencies. - -Fri May 5 15:55:22 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * libioP.h (_IO_JUMPS. JUMP_FIELD, JUMP0, JUMP1, JUMP2, JUMP3, - JUMP_INIT, _IO_FINISH, _IO_OVERFLOW, ... _IO_SYSSTAT): New macros - in preparation for new unified jumptable/vtable implementation. - * cleanup.c, filedoalloc.c, iofclose.c, iofflush.c, iofiledoalloc.c, - ioprims.c, iosetbuffer.c, iostrerror.c, ioungetc.c: Use DEFUN. - * filedoalloc.c, iofclose, iofflush, iosetbuffer.c: Use new macros. - - * iofopen.c, iofdopen.c: Use macros and #if for new jumptables. - - * gen-params: Do not #include <sys/types.h>. - Add missing quote in 'eval'. - Do add #include <sys/types.h> in test for <sys/resource.h>. - * config/netbsd.mt: New file, defining _G_CONFIG_ARGS (for fpos_t). - * configure.in: Use netbsd.mt for NetBSD. - -Wed May 3 15:03:47 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * libioP.h (DEFUN, DEFUN_VOID, AND): New macros, from ansidecl.h. - * iofdopen.c, iofgets.c, iofopen.c, iofputs.c, iofread.c, iofwrite.c, - iogetdelim.c, iogetline.c, iogets.c, ioignore.c, iopadn.c, ioperror.c, - ioputs.c, iovsprintf.c, iovsscanf.c, outfloat.c: Use DEFUN. - -Mon May 1 16:22:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * gen-params: #include <sys/types.h>. Don't use __WCHAR_TYPE__ in - definition of _G_wchar_t. Use __attribute__ ((mode)) to get - specific-sized ints under gcc, don't worry about int8 or int64 - otherwise. Provide defaults if deduction fails. - -Thu Apr 27 18:27:53 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * streambuf.h (ios::~ios): Delete _arrays. - (_IO_NEW_STREAMS): Turn on. - * libio.h (__adjust_column): Remove bogus declaration. - * genops.c (_IO_set_column): Fix typo (in commented-out code). - -Tue Apr 25 17:14:29 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * config.shared (CXXINCLUDES): Use a shell variable with a - different name from the make variable. - * configure.in: Update accordingly. - -Mon Apr 17 17:19:40 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * streambuf.h (__adjust_column): Remove redundant declaration. - -Sat Apr 15 11:39:25 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * config.shared (do-clean-dvi): Also remove *.cps. - - * gen-params: Use ${SED} instead of sed. - - * libio.h: Remove #if'd out stuff (confuses makedepend). - - * stdstreams.cc (STD_STR): Standard streams start with ios::dec set. - -Fri Apr 14 23:46:31 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * iostream.h, iostream.cc (istream::read, ostream::write): - Use streamsize for the length parameter. - - * streambuf.h: Removed redundant __overflow and __underflow. - - * fstream.h, fstream.cc: Add void fstreambase::attach(int). - - * iosscanf.c (_IO_sscanf): Fix non-__STDC__ missing declaration. - -Mon Apr 3 15:40:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * indstream.*: Fix prototypes of xsputn and xsgetn. - - * fileops.c: Avoid ??? trigraph. - -Mon Mar 27 16:16:38 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * iomanip.h (operator<< (ostream&, const omanip<TP>&): Define - separately. - (operator>> (istream&, const imanip<TP>&): Ditto. - -Mon Mar 27 08:56:00 1995 Brendan Kehoe (brendan@lisa.cygnus.com) - - * builtinbuf.cc (builtinbuf::setbuf): Cast NULL to streambuf*, to - avoid warning/error about conversion from void*. - * indstream.cc (indirectbuf::seekoff): Likewise. - (indirectbuf::seekpos): Likewise. - * filebuf.cc (filebuf::setbuf): Likewise. - (filebuf::close): Cast NULL to filebuf*. - -Wed Mar 1 14:23:18 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * configure.in (DISTCLEAN): Add, with target-mkfrag. - -Fri Feb 24 01:01:08 1995 Jason Merrill <jason@python.cygnus.com> - - * configure.in (frags): Don't require so many dashes in the - canonical target name. - -Sat Feb 18 13:18:30 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * streambuf.cc (streambuf::sync): Always return 0, even for - non-flushed output. This is required by the ANSI/ISO draft. - * genops.c (_IO_sync): Likewise always return 0. - -Fri Feb 17 16:33:28 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * fileops.c (_IO_file_close_it): Call _IO_file_sync, rather - than _IO_do_flush, because we want to adjust the file pointer - if reading and not at end (as in SVR4, and as in fflush). - Also, make sure to return error indication if sync fails. - (_IO_file_sync): Ignore seek error if it is ESPIPE. - (_IO_file_seekoff): If not readable, do dumb lseek. - * iofclose.c (_IO_fclose): If closing a non-filebuf, return -1 - if _IO_ERR_SEEN. - -Fri Feb 17 19:31:00 1995 Ian Lance Taylor <ian@cygnus.com> - - * gen-params: Check for struct tms in <sys/times.h>, defining - HAVE_SYS_TIMES accordingly. - -Wed Feb 15 21:05:11 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * strops.c (_IO_str_count): Use LEN macro. - (_IO_str_seekoff): Update _len field. - -Mon Feb 6 19:29:00 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * gen-params: Default to short, long and long long for 16, 32 and - 64 bit types, in case detection fails. - -Wed Jan 25 18:07:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * gen-params (_G_wint_t): Allow for broken promotions. - -Tue Jan 24 16:15:40 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * stdstrbufs.cc (_IO_fake_stdiobufs): Add an extra layer of struct, - to force correct alignment on i960s. - (DEF_STDIOBUF, _IO_{stdin,stdout,stderr}_buf): Update accordingly. - -Thu Jan 19 18:30:53 1995 Jason Merrill <jason@phydeaux.cygnus.com> - - * config.shared (CXXINCLUDES): Add libstdc++ to includes for - building libg++. - (LIBS): Also link with libstdc++ when building libg++ toys. - Don't set EXPORT_ALL_VARIABLES; users will have to set - LD_LIBRARY_PATH themselves. - -Fri Dec 30 16:38:13 1994 Mike Stump <mrs@cygnus.com> - - * config/linux.mt: Fix build problem on linux 1.0.8. - -Thu Dec 22 11:49:45 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/netware.mt: Use gcc to pre-link iostream.nlm's objects - instead of using nlmconv, so that references to functions in - libgcc.a are resolved. - - * configure.in: Append .mt to target makefile fragment file names. - - * floatconv.c (tens, tinytens, bigtens): Added const qualifier. - -Tue Dec 20 09:59:50 1994 Mike Stump <mrs@cygnus.com> - - * gen-params (VTABLE_LABEL_PREFIX): Since some systems have GNU nm - as nm, and they demangle by default, we have to notice this, and - try --no-cplus (linux) or --no-demangle when running nm. - -Wed Dec 14 18:13:58 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * gen-params: To determine vt-name-mangling using dummy.C add - #include and #prama interface/implementation to avoid problem with - assemblers that don't emit local symbols. Reported under HPUX 8 - by Thomas Arend <arend@blasius.Chemietechnik.Uni-Dortmund.DE>. - - * streambuf.h (ios::ios): Move inline definition after - that of ios::init (which ios::ios calls). - -Sun Dec 4 19:50:32 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * fileops.c (_IO_file_init, _IO_file_close_it, _IO_file_sync): - Set _offset to _IO_pos_BAD, to support applications that follow - POSIX.1 rules on mixing file handles. - - * fileops.c (_IO_file_overflow): Handle case that buffer was - allocated (perhaps by setvbuf) but _IO_write_base is still 0. - - * iostdio.h (setbuffer): #define as _IO_setbuffer. - * streambuf.h, filebuf.cc: Removed filebuf::do_write. - -Tue Nov 29 23:38:57 1994 Per Bothner (bothner@rtl.cygnus.com) - - * floatconv.c (setword0, setword1): Fix typo. - -Tue Nov 29 15:37:29 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * config.shared: Move -fno-implicit-template from CXXFLAGS - to LIBCXXFLAGS. Tests are better run without it. - - * floatconv.c (word0, word1): Re-place/re-implement using unions - instead of casts to avoid optimizer problems. - - * dbz/dbzmain.c: Renamed dirname -> dir_name to avoid OSF - header file braindamage. - -Sat Nov 5 19:44:00 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * config.shared (LIBCFLAGS): Define. - (LIBCXXFLAGS): Define. - (DOING_LIBGXX): Define TOLIBGXX. Change LIBS to use -lg++. Add - LD_LIBRARY_PATH and .EXPORT_ALL_VARIABLES:. - (FLAGS_TO_PASS): Add LIBC{,XX}FLAGS. - (XC{,XX}FLAGS): Set to LIBCFLAGS or CFLAGS depending on $LIBDIR. - (COMPILE.c): Define, use in .c.o rule. - (COMPILE.cc): Define, use in .cc.o rule. - -Sat Nov 5 15:12:12 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * Makefile.in (VERSION): Update to 0.67. - - * streambuf.h (ios::dont_close): Is now set by default. - * fstream.h, fstream.cc (__fb_init): New function. Clears - ios::dont_close. Change fstreambase constructors to call it. - * strstream.cc: *strstream constructors must clear ios::dont_close. - * iostream.cc: Simplify - don't need to set ios::dont_close. - * ioassign.cc: Simplify - assume ios::dont_close is always set. - - * fstream.h, fstream.cc: If _IO_NEW_STREAMS, put the - filebuf as a member __my_fb. - * strstream.{h,cc}: Likewile use a strstreambuf member __my_sb. - * streambuf.h, stdstreams.cc, ioextend.cc: - Fix if _IO_NEW_STREAMS to not use ios::dont_close. - - * streambuf.h (class ios): Move rdbuf later, to avoid - inability of g++ to inline. - * filebuf.cc (filebuf::~filebuf): Call _IO_do_flush. - - * config.shared: Emit rules to make depend. - * depend: New file. - -Fri Nov 4 17:19:11 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * README: Fix typos. - * libio.h: Add comment. Update Copyright notice. - -Fri Nov 4 21:46:30 1994 Paul Eggert <eggert@twinsun.com> - - * libio.h (__P): Change argument name spelling from - `paramlist' to `protos' for compatibility with BSDI 1.1. - -Thu Nov 3 00:45:16 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * config.shared (CXXFLAGS): Add -fno-implicit-templates. - -Mon Oct 24 15:57:35 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * config.shared: Define NOSTDIC and use it for libio too. - -Thu Oct 20 19:45:35 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * iogetdelim.c: #include <stdlib.h>. - -Thu Oct 20 17:09:52 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * iostream.h: Add classes _IO_istream_withassign and - _IO_ostream_withassign. Re-type cin, cout, cerr, clog. - (class iostream): Don't add extra _gcount field. - * ioassign.cc: New file. Implement operator= for cin etc. - * streambuf.h (class ios): Change return type of operator=. - * Makefile.in (IOSTREAM_OBJECTS): Add ioassign.o. - - * Makefile.in: Re-arrange, so linux.mt overrides can work. - - * fileops.c (_IO_file_seekoff): Optimize seeks within buffer. - -Wed Oct 19 14:25:47 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * gen-params (wint_t): Return to using __WCHAR_TYPE__ for - compatibility with gcc versions prior to 2.6.1. - -Tue Oct 18 17:08:18 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * Makefile.in: Define _G_CONFOG_H as _G_config.h for Linux. Use it. - (IO_OBJECTS): Add iogetdelim.o. - * config/linux.mt: New file. - * configure.in: Select config/linux.mt if Linux. - * iogetdelim.c: Verious cleanups, many from - Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>. - * libioP.h: Add _IO_getdelim. Use (void) for no-parameter functions. - -Thu Oct 13 16:30:56 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * libio.h: Rename USE_DTOA to _IO_USE_DTOA for namespace reasons. - * iostream.cc, iovfscanf.c, iovfprintf, floatconv.c: - Update USE_DTOA -> _IO_USE_DTOA. - - * libio.h (_IO_feof, _IO_ferror): Move to here ... - * iolibio: ... from here - - * iostream.cc (istream::get, istream::ignore, istream::read): - Set _gcount to 0 if ipfx0 failed. - - * iostream.cc (flush): Do virtual function call, rather than - going through jumptable. (To get correct method in derived class.) - Bug and fix from John Wiegley <jw@cis.ohio-state.edu>. - - * iofdopen.c (O_ACCMODE): Define using O_RDWR, not O_RDWRITE. - - * streambuf.h (ios::rdbuf(streambuf*)): New. - * streambuf.h (ios::operator=): Make private (i.e. dis-allow). - -Wed Oct 12 19:09:20 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * gen-params: Define _G_NO_NRV and _G_NO_EXTERN_TEMPLATES if not - compiling with g++. - -Thu Oct 6 16:03:43 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iostream.texi (ostrstream::str): Note that NUL is not written - automatically. - -Wed Oct 5 17:28:29 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iogetdelim.c (_IO_getdelim): New function. - -Wed Oct 5 15:40:22 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/netware.mt: New file, first cut at Netware NLM support. - * configure.in (*-*-netware*): Use config/netware.mt. - - * config.shared (NLMCONV, LD): New definition. - - * gen-params: check for nm in ${binutils}/nm.new. - * config.shared: Likewise. - -Tue Oct 4 12:20:01 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iomanip.h (omanip::operator<<): Make 2nd arg be const. - Bug and fix reported by Greg McGary <gkm@magilla.cichlid.com>. - - * strstream.cc (strstreambuf::pcount): Simplify, to match - ANSI/ISO specification. - -Mon Sep 26 15:19:52 1994 Jason Merrill (jason@deneb.cygnus.com) - - * gen-params: Include <wchar.h> and <wctype.h> if they exist. - -Thu Sep 8 14:41:41 1994 Jason Merrill (jason@deneb.cygnus.com) - - * iostream.h (class istream): Declare operator>>(long double&). - (class ostream): Define operator<<(long double). - - * iostream.cc (istream::operator>>(long double&)): Define. - -Wed Sep 7 14:42:29 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iostream.texi (Overflow): Fix bugs in example. - -Fri Sep 2 17:45:57 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iostream.tex: Document a little on how to write your - own streambuf-derived class, with an example. - -Tue Aug 30 13:03:57 1994 Brendan Kehoe (brendan@lisa.cygnus.com) - - * floatconv.c (s2b): Declare X and Y to be _G_int32_t. - (diff, quorem): Declare BORROW, Y, and Z likewise. - (ulp): Declare L likewise. - (_IO_strtod): Declare L and AADJ likewise. - (_IO_dtoa): Declare L and D likewise. Cast division of D by DS to - _G_int32_t. - -Mon Aug 29 16:01:54 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iosetvbuf.c (_IO_setvbuf): If setting _IOFBF and no - buffer was specified, call __doallocate. - - * fileops.c, floatconv.c: Add a bunch of parentheses to - shut up gcc warnings. Patch from H.J.Lu. - - * stdiostream.cc (stdiobuf::sys_read): Inline call to getc - for the normal case (size==1). - -Sat Aug 20 12:14:52 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (VERSION): Increase to 0.66. - -Fri Aug 19 17:28:41 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iolibio.h: Added _IO_printf prototype. - Added extern "C" { ... } wrappers #ifdef __cplusplus. - Bugs reported by Neal Becker <neal@ctd.comsat.com>. - -Wed Aug 17 18:17:15 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * fileops.c (_IO_file_seekoff): For _IO_seek_cur, adjust for - read-ahead before jumping to label dumb. - -Wed Aug 3 13:15:01 1994 H.J. Lu (hjl@nynexst.com) - - * libioP.h (CHECK_FILE(FILE,RET)): new, which checks for - FILE == NULL and _IO_MAGIC_MASK. - (COERCE_FILE(FILE)): merged into CHECK_FILE(FILE,RET) - with typo fixes. - - * iofread.c, iofwrite.c: add CHECK_FILE(fp, 0); - * iofclose.c: add CHECK_FILE(fp, EOF); remove _IO_MAGIC_MASK check. - - * iofflush.c, iofgetpos.c, iofputs.c, iofscanf.c, - iofsetpos.c, iofvbuf.c, ioungetc.c: - Add CHECK_FILE(fp, EOF) and remove COERCE_FILE(fp). - - * iofgets.c: add CHECK_FILE(fp, NULL) and remove COERCE_FILE(fp). - * iofprintf.c: add CHECK_FILE(fp, -1) and remove COERCE_FILE(fp). - * ioftell.c: add CHECK_FILE(fp, -1L) and remove COERCE_FILE(fp). - * iosetbuffer.c: add CHECK_FILE(fp, ) and remove COERCE_FILE(fp). - -Fri Aug 12 15:35:39 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iofdopen.c (_IO_fdopen): #define O_ACCMODE if it isn't. - Still set O_APPEND if "a" is given, but don't unset it - if it isn't. Added comment. - -Mon Aug 8 13:11:00 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * gen-params (VTABLE_LABEL_PREFIX): Changes in the implementation. - For look for _*vt[$_.]7*filebuf in the nm output, because that - matches what g++ produces and has produced. Thus it should be - somewhat more robust. - -Sun Aug 7 22:52:49 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * gen-params (CC): Remove no-longer-needed -I options - passed to xgcc (now they are implied by the -B options). - -Wed Jul 20 16:41:13 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (tooldir): Added definition, so we can do - 'make install' in this directory. - Bug reported by Klamer Schutte <schutte@tpd.tno.nl>. - -Mon Jul 18 18:02:34 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * gen-params (VTABLE_LABEL_PREFIX): Remove filename sppearing - by itself. Add comment explaining what is going on. - -Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@jalod) - - * libio.h: define _IO_uid_t and _IO_HAVE_ST_BLKSIZE - as _G_xxxxxxxx. - -Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@jalod) - - * iopopen.c: Don't include <errno.h>. It is included in "libioP.h". - - * iopopen.c (_IO_proc_close) : check if fp is on the list - before close it. - -Thu Jul 14 16:38:47 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * gen-params (CONFIG_NM): Make sed scripts to find vtable name - mangling more robost for different forms of nm output. - -Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@jalod) - - * iofopen.c (_IO_fopen): don't check [redundantly] fp == NULL after - IO_file_init(&fp->_file). - - * iomanip.h (template<class TP> class iapp): - change ostream to istream. - -Tue Jul 12 14:09:02 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (VERSION): Increase to 0.65. - * libioP.h (builtinbuf_vtable): Only define #ifdef __cplusplus. - - * gen-params (_G_int8_t): Only define if defined(__STDC__), - because K&R C compilers don't have signed char. - (_G_int64_t, _G_uint64_t): Only define if defined(__GNUC__) - because other compilers may not have long long. - -Sun Mar 06 13:10:21 1994 H.J. Lu (hjl@nynexst.com) - - * floatconv.c (_IO_dtoa ()): fix a small memory leak, set the - "on_stack" field to be 0 if "result" is not NULL. - -Sat Mar 05 13:18:20 1994 H.J. Lu (hjl@nynexst.com) - - * floatconv.c (_IO_dtoa ()): if the number of digits of the - floating point number is more than the previous one, free the - old string and allocate a new one. - [Minor optimization to avoid Bcopy. -PB] - -Mon Jul 11 10:53:41 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * fileops.c (_IO_file_underflow): 'count' should be unsigned, - since it contains the return value of read. Reported by - Teemu Torma <tot@trema.fi>. - -Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@nynexst.com) - - * floatconv.c (_IO_strtod ()): make "+" and "-" as error. - -Sat Jul 9 15:09:21 1994 Per Bothner (bothner@kalessin.cygnus.com) - - Make sure _IO_FILE::_flags is always initialized correctly, for the - C functions (fopen, fdopen, popen), and not just the C++ functions. - * fileops.c (_IO_file_init): Set _flags to CLOSED_FILEBUF_FLAGS. - * fileops.c (_IO_file_fopen): Remove bogus assignment. - * filebuf.cc (filebuf constructors): Don't pass CLOSED_FILEBUF_FLAGS - to streambuf constructor - _IO_file_init does it instead. - * filebuf.cc (CLOSED_FILEBUF_FLAGS): Removed. - * iopopen.c (_IO_proc_open): Use _IO_mask_flags. - -Thu Jun 30 08:49:53 1994 Jason Merrill (jason@deneb.cygnus.com) - - * dbz/Makefile.in (mostlyclean): Add target. - -Wed Jun 29 09:30:12 1994 Jason Merrill (jason@deneb.cygnus.com) - - * gen-params: Woops, can't run a C program to determine target - characteristics. Sigh. - -Tue Jun 28 03:11:33 1994 Jason Merrill (jason@deneb.cygnus.com) - - * gen-params: Add _G_{,u}int{8,16,64}_t, use a short C program to - determine what all these should be rather than trying to compare - the MAX numbers in the shell. - -Sun Jun 26 21:04:24 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * stdiostream.h, stdiostream.cc (stdiobuf::xsgetn): Removed. - Too hairy. If we want to optimize it, we should do so in - filebuf::xsgetn (or rather _IO_file_xsgetn). - - * stdiostream.h (class stdiobuf), stdiostream.cc: Fix parameter - and return types of virtual function to matcher base types (Oops!). - * streamstream.cc (stdiobuf::xsgetn, stdiobuf::xsputn): - Optimize to call fread.fwrite directly if !buffered. - * fileops.c: Fix comment. - -Fri Jun 24 11:28:18 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * stdiostream.h (istdiostream, ostdiostream): New classes. - - More robust final cleanup. - * cleanup.c (_IO_register_cleanup): Register _IO_cleanup, - rather than _IO_flush_all. - * filedoalloc.c: Update comment. - * genops.c (_IO_unbuffer_all): New. Makes all files unbuffered. - * genops.c (_IO_cleanup), libioP.h: New function. Call - _IO_flush_all, and then _IO_unbuffer_all. This is in case C++ - destructors try to do output *after* _IO_cleanup is called. - - Construct standard stdiobufs statically (using type punning). - * stdstrbufs.c; Unless _STDIO_USES_IOSTREAM declare standard - stdiobufs (for stdin, stdout, and stderr), using type punning - (struct _IO_fake_stdiobuf). This avoids constructor-time problems. - * stdstreams.cc: Remove the declarations of the stdiobufs. - Instead use the new (fake) ones in stdstrbufs.cc. We no longer - have to call ios::sync_with_stdio at constructor time. - - Preliminary support for new ANSI streambuf::uflow virtual. - * libioP.h (struct _IO_jump_t): Add __uflow field. - * genops.c (_IO_default_uflow), libioP.h: New function. - * fileops.c (_IO_file_jumps), iopopen.c (IO_proc_jumps), - iovfprintf.c (_IO_helper_jumps), strops.c (_IO_str_jumps), - streambuf.cc (_IO_streambuf_jumps): Add _IO_default_uflow. - * genops.c (__uflow): New function. - (save_for_backup): New function. Some code shared by - __underflow and __uflow, moved out from the former. - (_IO_default_uflow): New function. - * libio.h (_IO_getc): Call __uflow, not __underflow. - -Wed Jun 22 20:22:49 1994 Per Bothner (bothner@kalessin.cygnus.com) - - Make sure that the vtable of a streambuf is always valid, - which makes ios::rdbuf simpler and faster. - * gen-params: Add code to determine _G_VTABLE_LABEL_HAS_LENGTH, - _G_VTABLE_LABEL_PREFIX, _G_VTABLE_LABEL_PREFIX_ID, and - _G_USING_THUNKS, which describe how virtual function tables are named. - * stdfiles.c (FILEBUF_LITERAL): Moved to libioP.h. - * libioP.h (builtinbuf_vtable): New (complicated) declaration. - * filebuf.cc (filebuf::__new), strstream.cc (SET_STR_JUMPS): - Initialize vtable to builtinbuf_vtable, not NULL. - * stdstrbufs.cc: New file. Same as stdfiles.c, except that - vtable is initialized to builtinbuf_vtable, not NULL. - * streambuf.h (ios::rdbuf): Can now simplify/optimize, due to - above changes. Always, just return _strbuf. - * builtinbuf.h, builtinbuf.cc (builtinbuf::vtable, - builtinbuf::get_builtin_vtable): Removed. No longer needed. - * streambuf.h, builtinbuf.cc (ios::_IO_fix_vtable): No longer needed. - Only defined #ifdef _STREAM_COMPAT, for binary compatibility. - * Makefile.in: Move stdfiles.o from IO_OBJECTS to STDIO_WRAP_OBJECTS. - (IOSTREAM_OBJECT): Add stdstrbufs.o. - * Makefile.in (_G_config.h): Pass $(CXXFLAGS) as part of $(CXX). - -Fri Feb 11 11:08:01 1994 SBPM Marc GINGOLD (marc@david.saclay.cea.fr) - - * iovfprintf.c (helper_vfprintf): add - hp->_IO_file_flags = _IO_MAGIC|(_IO_IS_FILEBUF+_IO_NO_READS); - [This is needed because _IO_vfprintf checks for _IO_UNBUFFERED. -PB] - [Actually: don't set _IO_IS_FILEBUF. -PB] - -Wed Jun 22 13:49:22 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * stdiostream.cc, stdiostream.h (stdiobuf::buffered): New methods. - - * iofdopen.c (_IO_fdopen): Various minor improvements. - - * iovfscanf.c: Don't return EOF on control_failure. - -Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@nynexst.com) - - * iovfscanf.c: Enforce the sequence of the conversion specifications. - -Fri Jun 17 20:57:22 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iofdopen.c: Use fcntl to check that requested access mode is - compatible with existing access mode, and to change the - O_APPEND file status flag if need be. - -Thu Jun 16 17:33:50 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * streambuf.h (ios::init): Initialize all the fields. - This may be overkill, but the current ANSI working paper requires it. - * streambuf.h (ios::ios): Reimplement in terms of ios::init. - * iostream.cc (Non-default constructors istream::istream, - ostream::ostream, iostream::iostream): Cannot use a mem-initializer, - because it is ignored if initializing a derived class. Instead, - call ios::init. - -Wed Jun 15 13:35:37 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * stdstreams.cc (ISTREAM_DEF): Fix typo (it's a _fake_istream, not - a _fake_ostream). Reported by Jason Shirk <jshirk@gomez.intel.com>. - - * stdiostream.h, stdiostream.cc (stdiobuf::~stdiobuf): New. - Call _IO_do_flush. - * stdiostream.cc (stdiobuf::sync): Call _IO_do_flush rather - than filebuf::sync (to avoid bad seeks). - - * libioP.h (_IO_do_flush): Add missing parentheses. - -Fri Jun 3 19:16:57 1994 Jason Merrill (jason@deneb.cygnus.com) - - * config.shared (CXXFLAGS): Remove -fno-implicit-templates. - - * iomanip.h: Add explicit external instantiations. - -Wed Jun 1 14:14:44 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * libio.h (struct _IO_FILE_plus): Move definition from here ... - * libioP.h (struct _IO_FILE_plus): ... to here. Since this - file is private to the implementation, we can rename the fields - from the implementor's to the user's name anme space. - (This avoids a lossage on SCO, whose stdio.h has a #define _file.) - * iofdopen.c, iofopen.c, stdfiles.c: Fix field references accordingly. - * iopopen.c (struct_IO_proc_file): Rename fields from - implementor's name space to user's, and update usages. - * streambuf.h (streambuf::_vtable): Re-implement to not need - struct _IO_FILE_plus. - * strfile.h (struct _IO_strfile_): Likewise. - -Wed Jun 1 13:57:48 1994 Jason Merrill (jason@deneb.cygnus.com) - - * config.shared (CXXFLAGS): Use -fno-implicit-templates instead of - -fexternal-templates. - -Tue May 31 08:49:28 1994 Mike Stump (mrs@cygnus.com) - - * genops.c, iofclose.c, iofdopen.c, iofopen.c, iopopen.c: Be - consistent about protecting #include <stdlib.h>. - - * ioputs.c: Add #include <string.h>, to avoid warning on alpha. - - * iofdopen.c: Add #include <stdlib.h>, so that malloc works on - machines where sizeof(int) != sizeof(void *). - -Mon May 30 17:26:49 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * pfstream.cc (ipfstream::ipfstream, opfstream::opfstream): - Reverse sense of test of return value of procbuf::open. - (It returns NULL on failure.) - - * filedoalloc.c (_IO_file_doallocate): Remove dead code for - USE_MALLOC_BUF. Add code to return EOF if ALLOC_BUF fails. - -Sat May 28 13:47:47 1994 Jason Merrill (jason@deneb.cygnus.com) - - * iomanip.cc: Explicitly instantiate smanip<int> and - smanip<ios::fmtflags>. - -Wed May 25 16:04:12 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * strfile.h: Use __P instead of _PARAMS. - -Fri May 20 11:42:17 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * libio.h: Rename _PARAMS macro to __P for better glibc and BSD - compatibility. (Also define _PARAMS for backwards compatibility.) - * cleanup.c, iolibio.h, ioperror.c, iovfprintf.c, iovfscanf.c, - libioP.h: Use __P instead of _PARAMS. - * iostdio.h: Use __P instead of _ARGS. - - * fileops.c (_IO_file_read): Minor stylistic tweak. (It is - preferable to test errno *after* the error return.) - -Fri May 13 15:25:36 1994 Jason Merrill (jason@deneb.cygnus.com) - - * iostream.*: Add insertor and extractor for bool (just pretend - it's an int). - -Fri May 13 14:12:03 1994 Mike Stump (mrs@cygnus.com) - - * gen-params: Check for builtin bool support. - -Wed May 11 00:48:35 1994 Jason Merrill (jason@deneb.cygnus.com) - - Make libg++ build with gcc -ansi -pedantic-errors - * gen-params: #ifdef __STRICT_ANSI__, #define _G_NO_NRV. - * pfstream.cc (ipfstream::ipfstream): Wrap use of variable-size - array in #ifndef __STRICT_ANSI__. - -Fri May 6 12:42:21 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (VERSION): Increase to 0.64. - - * isgetline.cc (istream::getline): The delimiter should *not* - be included in the gcount(). - - * filedoalloc.c: #include <stdlib.h> (If __STDC__) to get malloc. - * iostream.h (ostream::put): Remove overloaded versions, to match - new working paper. (Actually just put inside _STREAM_COMPAT, for now.) - -Tue May 3 14:14:57 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * genops.c (_IO_default_finish): Make robust when called - multiple times on the same _IO_FILE*. (One way this can - happen is by the builtinbuf destructor being followed by the - streambuf destructor.) - -Mon May 2 13:55:26 1994 Jason Merrill (jason@deneb.cygnus.com) - - * gen-params: Actually determine wint_t rather than depending on - cpp to provide it or defaulting to the underlying type for - wchar_t. - -Sat Apr 30 14:47:30 1994 Jason Merrill (jason@deneb.cygnus.com) - - * gen-params: Add _G_wint_t, allow __*_TYPE__ to override values - at compile time, fix definition of _G_ARGS. - -Fri Apr 29 16:55:37 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * libio.h: Remove #pragma interface. (There is no implementation.) - -Mon Mar 28 14:22:26 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iostream.cc (ostream::operator<<(double)): Add/fix support - for printing '+' when ios::showpos is set. - (Fixes bug reported by Doug Moore <dougm@cs.rice.edu>.) - * iostream.cc (istream::read): Set eofbit as well as failbit on eof. - * iostream.cc (ostream::operator<<(int)): Fix conversion - to unsigned (used to lose on INT_MIN). - * iostream.cc (ostream::operator<<(long)): Use (unsigned long), - rather than (unsigned) for temporary. - - * config.shared, Makefile.in: Remove definitions and uses - of XTRAFLAGS. It is no longer needed, since it is - now implied by the -B flag. - -Fri Mar 25 00:31:22 1994 Jason Merrill (jason@deneb.cygnus.com) - - * builtinbuf.h: Add put /**/ around comment on trailing #endif. - - * Makefile.in (c++clean): Make clean in tests subdir, too. - -Wed Mar 23 16:42:09 1994 Doug Evans (dje@canuck.cygnus.com) - - * configure.in: Remove Makefile.tem before creating it. - Needed when configuring from read-only source trees. - -Wed Mar 16 14:06:42 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * stdstreams.cc: Fix so that stdiobuf are used for cin/cout/cerr, - unless _STDIO_USES_IOSTREAM is defined. - * filebuf.cc (filebuf::setbuf): Fix confusion about return - value from _IO_file_setbuf. - -Sun Mar 13 00:54:12 1994 Paul Eggert (eggert@twinsun.com) - - * config.shared: Ensure that `all' precedes `.PHONY'; - BSDI 1.1 needs this. - -Sat Mar 12 03:58:00 1994 Paul Eggert (eggert@twinsun.com) - - * config.shared: Output a definition of INSTALL that uses - $${rootme}, not ${rootme}. Most `make's don't care, but BSDI - 1.1 `make' does. - -Fri Mar 4 17:33:01 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iopopen.c: #define _POSIX_SOURCE. - * isgetline.c (istream::getline): Various fixes. - -Thu Mar 3 17:58:20 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * iostream.cc (write_int): Fix test for when to add initial '0' - when ios::oct and ios::showbase are set. - For hex, showbase adds initial 0x (or 0X) regardless of val==0. - Bugs reported by Phil Roth <proth@cs.uiuc.edu>. - -Mon Feb 21 13:18:20 1994 H.J. Lu (hjl@nynexst.com) - - * libio.h (_IO_PENDING_OUTPUT_COUNT(_fp)): return the - pending output count in _fp. - -Fri Feb 25 09:26:57 1994 Ian Lance Taylor (ian@cygnus.com) - - * gen-params: For HAVE_SYS_WAIT, compile dummy.c, not dummy.C. - -Tue Feb 22 11:19:09 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * streambuf.h, genops.c, libioP.h: Rename references to - _IO_FILE fields other_gbase => _IO_save_base, - _aux_limit => _IO_backup_base, and _other_egptr => _IO_save_end. - * libio.h: Remove no-longer needed macros _other_gbase, - _aux_limit, and _other_egptr. - * genops.c (__underflow, _IO_default_finishh, _IO_unsave_markers): - Check _IO_save_base for NULL before FREEing it or calling - _IO_free_backup_area. - -Thu Feb 17 15:26:59 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * gen-params: Improve deduction of _G_uint32 and _G_int32. - Should now work for 16-bit, 32-bit, or 64-bit targets. - * gen-params: Check for sys/wait.h using ${CC}, since it's - now used in a C file, not a C++ file. - * floatconv.c: Typedef _G_uint32_t as unsigned32, and use - unsigned32 in place of unsigned long. (Needed for Alpha.) - -Tue Feb 8 13:40:15 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * fileops.c (_IO_file_close_it): Simplify by using _IO_do_flush. - * fileops.c (_IO_file_finish): Don't call _IO_file_close_it - - do it inline. Call _IO_do_flush even if _IO_DELETE_DONT_CLOSE. - * fileops.c (_IO_file_attach): Set _IO_DELETE_DONT_CLOSE. - * genops.c (_IO_flush_all): Only call overflow if there is - something to write. - * iofclose.c (_IO_fclose): Check that magic number is correct, - and clear it when done. Avoids crashing some buggy applications. - * iogetline.c (_IO_getline): Don't gratuitously increment old_len. - * iogets.c (_IO_gets): Take care to get required ANSi semantics. - -Sun Feb 6 19:50:39 1994 Jason Merrill (jason@deneb.cygnus.com) - - * iomanip.cc: Explicitly instantiate operator<< and >>. - -Fri Feb 4 12:28:22 1994 Jason Merrill (jason@deneb.cygnus.com) - - * config.shared (CXXFLAGS): Use -fexternal-templates. - - * iomanip.h: Uncomment #pragma interface. - -Thu Jan 20 13:48:40 1994 Per Bothner (bothner@kalessin.cygnus.com) - - If no characters are read by fgets, ANSI C doesn't allow '\0' to - be written to the buffer, but it is required by ANSI C++ - for istream::get and istream::getline. Both use _IO_getline ... - * iogetline.c (_IO_getline): Don't write a '\0' at the end - of the read data. The input buffer length does not include - space for a '\0'. - * iofgets.c, iogets.c: Change appropriately. - Also check for _IO_ERR_SEEN, as required by ANSI. - * isgetline.cc: Update accordingly. - -Mon Jan 17 13:24:26 1994 Jason Merrill (jason@deneb.cygnus.com) - - * Makefile.in (c++clean): Added target for compiler testing - (i.e. make c++clean all). - -Mon Jan 10 11:20:42 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * libio.h (_IO_putc): Add parentheses. - Patch from Rik Faith <faith@cs.unc.edu>. - -Tue Jan 4 01:32:28 1993 Hongjiu Lu (hjl@nynexst.com) - - * genops.c (_IO_default_xsputn): - (_IO_default_xsgetn): - * ioignore.c: change "_IO_size_t count" to - "_IO_ssize_t count". - * iogetline.c: change "_IO_size_t len" to - "_IO_ssize_t len". - -Mon Dec 20 00:31:21 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * config.shared (CXXINCLUDES): Fix quoting of $(NOSTDINC). - -Sun Dec 19 21:03:45 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (VERSION): Increase to 0.63. - -Fri Dec 17 13:02:44 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iofread.c (_IO_fread): Return 0 if either size or count is 0. - * iofwrite.c (_IO_fwrite): Return 0 if either size or count is 0. - (This is consistent with fread, and most implementations, but not - with a literal reading of the ANSI spec.) - * iovfscanf.c (_IO_vfscanf): If got EOF while skipping spaces, - set seen_eof and break (instead of returning). - * sbscan.cc (streambuf::vscan): Set error state before returning. - * streambuf.h: Add a forward declarations for class istream - to work around a g++ vtable name mangling bug. (Patch from - harry@pdsrc.hilco.com via Jeffrey A Law <law@snake.cs.utah.edu>.) - * NEWS: New file. - -Sat Dec 11 16:21:08 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iovfprintf.c (struct helper_file, _IO_helper_overflow, - helper_vfprintf, _IO_helper_jumps): New structs and functions. - (_IO_vfprintf): Use helper_vfprintf to make printing to - unbuffered files more efficient. - * genops.c (_IO_default_underflow), libioP.h: New function. - - * iovsscanf.c (_IO_vsscanf): The input string's length marks - its logical end-of-file. - -Wed Dec 8 13:20:46 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * indstream.cc (indirectbuf::sync()): Don't crash if get_stream() - or put_stream() are NULL; sync() both streams even if error. - -Sun Dec 5 19:24:29 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * iostreamP.h (convert_to_seekflags): Use _IO_seek_set instead of - 0 inside the conditial expressions. - - * iofsetpos.c (_IO_fsetpos): Delete unused var `pos'. - -Sat Dec 4 15:57:26 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * filedoalloc.c (_IO_file_doallocate): Change type of couldbetty - to int, and type of size to _IO_size_t, instead of size_t. - (Change needed for Ultrix, which incorrectly deliberately doesn't - define size_t in <sys/types.h> if _POSIX_SOURCE is defined.) - -Thu Dec 2 22:43:03 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * fileops.c (_IO_file_finish): Remove redundant call to _IO_un_link. - * iofclose.c (_IO_fclose): Don't call fp->_jumps->__close; it's - too low-level. Instead call _IO_file_close_it. - * dbz/Makefile.in (rclean, distclean): Add some missing files. - -Wed Dec 1 13:19:14 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * config/hpux.mt (MATH_H_INLINES): No longer define. - Patch from Jeffrey A Law <law@snake.cs.utah.edu>. - -Fri Nov 26 13:28:36 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * config.shared (CINCLUDES): Define default if libg++. - * iofread.c: Use _IO_sgetn.c. - * iolibio.h (_IO_clearerr): Fix typo. - * genops.c (_IO_seekmark): Return 0 on success. - * floactconv.c (Binit): Change to static. - * iofclose.c (_IO_fclose): Check if file is _IO_stdin, _IO_stdout, - or _IO_stderr; if so don't try to free it. Fix from hjl@nynexst.com. - - * genops.c (_IO_default_sync), libioP.h: New function. - * libioP.h (_IO_default_close): Use _IO_default_sync -same interface. - - * Makefile.in: Increase version to 0.62. - * iopopen.c (_IO_proc_close): Use waitpid (available in libibarty, - if needed), rather than wait. Don't block/ignore SIGINT etc, - as this is counter to Posix.2. - * iopopen.c: Chain open proc_files, and have the child close - the ones that are open (as required by Posix.2). - - * fstream.h (fstreambase::rdbuf), strstream.h (strstreambase - ::rdbuf): Call ios::rdbuf() instead of getting _strbuf directly. - - * sbscan.cc (streambuf::vscan): Comment out duplicate default arg. - * floatconv.c: Recognize Alpha and i860 as little-endian. - * streambuf.cc: Return two bogus value returns from void functions. - * iolibio.h, iofwrite.c: Fix buffer type to (const void*). - * libio.h: Predefine of struct _IO_FILE to help non-g++-compilers. - * libioP.h, pfstream.cc, stdfiles.c, iovfscanf.c: Cleanup syntax junk. - * stdstreams.cc: Minor simplification. - * streambuf.h, builtinbuf.cc: Add non-const ios::_IO_fix_vtable() - for temporary binary compatibility. - - * filedoalloc.c, fileops.c: Add _POSIX_SOURCE. - * fileops.c, iofopen.c, iofputs.c, iostream.cc, strops.c, - strstream.cc, genops.c: Add some missing #includes. - * iofopen.c, iofdopen.c: Return NULL if malloc fails. - * iovfscanf.c: Fix return type in strtol prototype. - * fwrite.c: Remove bogus file. - -Wed Nov 17 14:09:42 1993 Per Bothner (bothner@cygnus.com) - - * builtinbuf.cc (ios::_IO_fix_vtable), streambuf.h: Make method - const, to reduce problems with -Wcast-qual. - -Tue Nov 16 19:30:42 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config.shared (CXXINCLUDE): use ${} instead of $() for NOSTDINC - -Tue Nov 16 14:15:45 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iopopen.c (_IO_proc_close): Re-structure to avoid - declarations after statements. - * floatconv.c: If not __STDC__, #define DBL_MANT_DIG. - * config/isc.mt (G_CONFIG_ARGS): Remove bogus spaces. - Patch from David A. Avery <daa@nic.cerf.net>. - -Tue Nov 16 15:58:31 1993 Mark Eichin (eichin@cygnus.com) - - * Makefile.in (_G_config.h): explicitly use $(SHELL) to run - gen-params, since we know it is a script (we're explicitly looking - in ${srcdir} for it) and /bin/sh might not be good enough. - -Mon Nov 15 13:26:22 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * builtinbuf.cc: Don't depend on initialization of static - variable builtinbuf::vtable, since that might happen after - we need it (for a static constructor). Instead, initialize - it when needed by inlining the code from get_builtin_vtable - into ios::_IO_fix_vtable(). - - * floatconv.c: Avoid using #elif, which some C compilers lack. - * iogetline.c, libioP.h: Make char parameter be int, to avoid - some default promotion anomalies. - -Fri Nov 5 11:49:46 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * config.shared (do-clean-dvi): Remove TeX work files. - * iopopen.c (extern _IO_fork): Don't use parameter type void. - * strops.c (_IO_str_init_static): Clear the allocate_buffer - function pointer, to mark the strfile as being static. - Bug fix from Mike Raisbeck <mike@pudding.rtr.COM>. - -Thu Nov 4 10:44:24 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * filebuf.cc (filebuf:): Use sseekoff rather than seekoff - (which loses if vtable pointer is NULL). - - * iostream.cc (ostream::operator<<(long long n)): Fix thinko. - - * Makefile.in (VERSION): Increase to 0.60. - * Makefile.in (IO_OBJECTS): Added iopopen.o. - * config.shared (DISTCLEAN): Also remove Make.pack. - * config.shared (CXXINCLUDES): Add $(NOSTDINC). - - * config.shared (INSTALL): Fix so it ues the correct install.sh - whether $srcdir is absolute or relative. - - * floatconv.c (DBL_MAX_10_EXP): Fix default value. - -Wed Nov 3 10:20:49 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * gen-params: Make more robust to allow random junk (NeXT - has spaces) before typedefs. - - * fileops.c (_IO_file_overflow): Reduce code duplication. - * Makefile.in (IO_OBJECTS): Remove ioputs.o. - - * iovfscanf.c, libio.h: Extra parameter to _IO_vfscanf, - for optionally setting an error indication.. - * iofscanf.c, ioscanf.c, iofscanf.c, iovsscanf.c: Fix calls to - _IO_vfscanf to pass an extra NULL. - * sbscan.cc (streambuf::vscan): If passed an extra stream, - set its error state (using new _IO_vfscanf parameter. - - * filedoalloc.c, fileops.c, genops.c, iogetline.c, ioignore.c, - libio.h, libioP.h, streambuf.cc streambuf.h, strfile.h, strops.c, - strstream.cc: Replace macros (_base, _ebuf, _eback, _gptr, _egptr, - _pbase, _pptr, _epptr) by field names (_IO_buf_base, _IO_buf_end, - _IO_read_base, _IO_read_pre, IO_read_end, _IO_write_base, - _IO_write_ptr, _IO_write_end). - * libio.h: Remove the old macros (which fixes a conflict. - -Mon Nov 1 15:22:12 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iostream.cc: Use _IO_sputn instead of sputn. _IO_sputn does - not require a vtable pointer, and is also slightly faster. - - * builtinbuf.{h,cc} (builtinbuf::setbuf): Fix return and - parameter types. - -Mon Oct 25 12:56:33 1993 Per Bothner (bothner@kalessin.cygnus.com) - - Kludge to make sure _IO_FILE buffers get flushed before exit. - * dbz/dbzmain.c, dbz/fake.c, dbz/byteflip.c: - Invoke DBZ_FINISH macro (if defined) before (normal) exits. - * dbz/Makefile.in (CFLAGS): Define DBZ_FINISH to call _IO_flush_all. - -Sat Oct 23 22:10:53 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (VERSION): Set to 0.60 for libg++ release. - * fileops.c (_IO_file_attach): Set _offset to _IO_pos_BAD. - * iostream.cc (ostream::flush): Fix thinkp. - * editbuf.cc, isgetsb.cc, isscan.cc, osform.cc, parsestream.cc, - pfstream.cc, sbform.cc, sbscan.cc, stdstreams.cc, stream.cc: - Replace #include "ioprivate.h" by #include "libioP.h" (and - sometimes stdarg.h, stdlib.h and/or string.h). - * ioprivate.h: Removed. - - -Thu Oct 21 19:24:02 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * PlotFile.h, SFile.h, editbuf.cc, editbuf.h, filebuf.cc, - fstream.cc, fstream.h, indstream.cc, indstream.h, iomanip.cc, - iomanip.h, ioprivate.h, iostream.cc, iostream.h, isgetline.cc, - isgetsb.cc, parsestream.cc, parsestream.h, pfstream.cc, - pfstream.h, procbuf.cc, procbuf.h, stdiostream.cc, stdiostream.h, - stdstreams.cc, streambuf.cc, streambuf.h, strstream.cc, - strstream.h: Remove old (duplicate) copyright notices. - - * iostream.cc: Fix calls to sync() to be safe in the presence - of vtable-less streambufs. - -Wed Oct 20 15:22:04 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * streambuf.h (streambuf::underflow, streambuf::overflow): - Don't make virtual functions pure. - * streambuf.cc (streambuf::underflow, streambuf::overflow): - Default definitions (return EOF). - * fstream.h: Add new (int fd, char* buf, int len) constructors. - These are deprecated, but added for AT&T compatibility. - * fstream.cc fstreambase::fstreambase(int fd, char *p, int l): New. - -Thu Oct 14 14:57:01 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * configure.in: use 'mv -f' instead of 'mv' - -Tue Oct 12 05:01:44 1993 Mike Stump (mrs@cygnus.com) - - * floatconv.c: Fix typo, change __STDC to __STDC__. - -Mon Oct 11 17:03:12 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * cleanup.c: It should be #if _G_HAVE_ATEXIT, not #ifdef. - - * floatconv.c, iostrerror.c, iovfprintf.c, iovfscanf.c, libioP.h: - Bunch of fixes to allow use of non-ANSI (K&R) C compilers. - - * Makefile.in (iostream.list): Use CC=$(CXX) to force use of gcc. - * README: New file. - -Fri Oct 8 16:19:58 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in: Move ioungetc.o from STDIO_WRAP_OBJECTS to - IO_OBJECTS (since it is needed for iovfscanf.c). - * iostrerror.c: Add declaration of strerror. - -Thu Oct 7 12:02:28 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * cleanup.c: New file, to cause flushing at exit. - * filedoalloc.c: Cause flushing on exit. - * Makefile.in (OSPRIM_OBJECTS): Add cleanup.o. - * gen-params: Check for atexit. - -Tue Oct 5 19:11:14 1993 Mike Stump (mrs@cygnus.com) - - * ioperror.c (_IO_strerror): Add missing ()s in _PARAMS usage. - -Tue Oct 5 10:33:37 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iofprintf.c, iofscanf.c, ioprintf.c, ioscanf.c, iosprintf.c, - iosscanf.c: Remove bogus semi-colon after va_dcl. - * ioperror.c: Fix typos in declaration. - -Mon Oct 4 17:12:22 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * configure.in (CLEAN): Define (as _G_config.h *.a). - - * fileops.c (_IO_file_read): Don't assume EINTR is defined. - * iosetbuf.c: Replace by generalized ... - * iosetbuffer.c: ... variant, derived from BSD. - * Makefile.in (STDIO_WRAP_OBJECTS): Change correspondingly. - * iosetvbuf.c (iosetvbuf): Minor ANSI tweak. - * iostdio.h (setbuf, setlinebuf): New #defines. - * iolibio.h (_IO_setbuf, _IO_setlinebuf): (Re-)define as macros. - * Makefile.in (LIBIO_OBJECTS): New macro. - -Tue Sep 28 14:15:52 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * libioP.h (_IO_proc_open, _IO_proc_close): Add missing return types. - * procbuf.cc: Belated fixes. - -Mon Sep 27 14:04:47 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in: List new files. Add STDIO_WRAP_OBJECTS macro. - * floatconv.c (d2b): Use Exp_msk11 instead of Exp_msk1. - * iofgetpos.c (_IO_fgetpos), iofsetpos.c (_IO_fsetpos): Clean up. - * iolibio.h: New file. Declarations of _IO_foo, for most foo - where foo is a stdio function. (Remove these from libio.h.) - * iostream.h (istream::istreambuf, ostream::ostreambuf): Move - obsolete functions inside #ifdef _STREAM_COMPAT. - * libio.h, libioP.h, streambuf.h, parsestream.h, stdiostream.h: - Use _IO_fpos_t rather than _IO_pos_t. - * iopopen.c: New file type, for pipe (popen-like) streams. - * procbuf.cc: Now just a C++ wrapper for the files in iopopen.c. - * streambuf.h (ios::unsetf): Return complete old value of flags. - * iogets.c (_IO_gets(), ioungetc.c (_IO_ungetc), ioperror.c - (_IO_perror), iostrerror.c (_IO_strerror): New files and - functions, for stdio implementation. - * iostdio.h: Add declarations for various recently-added functions. - -Sun Sep 12 14:24:55 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * streambuf.h (ios::showpos):: Fix typo. - -Fri Aug 27 12:05:47 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iopadn.c (_IO_padn): Change to return count of chars written. - * outfloat.c, iovfprintf.c: Change for new _IO_padn interface. - * iostream.cc (ostream::operator<<): Make sure to set badbit - on a failure (many places). Use _IO_padn more. - * iostream.cc (ostream& ostream::operator<<(const void *p): Move to - * osform.cc: ... here, to reduce linking-in-the-world syndrome. - * osform.cc: Use rdbuf(), instead of _strbuf directly. - - * genops.c (_IO_sgetn), libio.h: New function. - * streambuf.h (streambuf.h::sgetn): Use _IO_sgetn. - * SFile.cc (SFile::operator[]): Use sseekoff, not seekoff. - -Thu Aug 26 10:16:31 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config.shared (SUBDIRS): only recurse if the directory is configured - -Wed Aug 25 12:56:12 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * config/{hpux.mt, isc.mt, sco4.mt}: - Moved from ../libg++/config (since they affect _G_config.h). - * configure.in: Set target_make_frag to one of the above files. - -Fri Aug 20 00:53:14 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * iofopen.c (iofopen): Fix type passed to _IO_un_link(). - * Makefile.in (_G_config.h): Pass $CC (not $CXX) as CC. - - * configure.in (configdirs): Add dbz and stdio. - * fileops.c (_IO_file_seekoff): Convert more old functionality. - * iofdopen.c: Use mode parameter to set _flags. - * iofscanf.c, ioputs.c, ioscanf.c, iosprintf.c: New files. - * Makefile.in (IO_OBJECTS): Added new objects. - * iostdio.h: Add feof. fscanf, puts, sprintf, vsprintf. - * libio.h: Add _IO_vprintf macro. - * iofopen.c: Invoke _IO_un_link if failure. - * iovsprintf.c: Write terminating NUL. - - * libioP.h: Add COERCE_FILE macro (by default does nothing). - * iofclose.c, iofflush.c, iofgets.c, iofprintf.c, iofputs.c, - iofread.c, ioftell.c, iofwrite.c, iosetbuf.c, iosetvbuf.c: - Invoke COERCE_FILE macro. - * ioftell.c: Use _IO_seekoff. - -Wed Aug 18 22:49:56 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * sbform.cc (streambuf::form), sbscan.cc (streambuf::scan): - Remove cast to _IO_va_list. (Loses if array type.) - - * libio.h: Handle _IO_va_list for systems that need <stdarg.h>. - * floatconv.h: Fix typo (reported by H.J.Lu). - -Wed Aug 18 19:34:04 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * configure.in (INSTALLDIR): handle native vs. cross case - - * Makefile.in (install): don't use $TARGETLIB, set INSTALLDIR to - $(libdir) - -Wed Aug 18 12:10:03 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in: Rename iostream-files to iostream.list. - * configure.in: Add iostream.list to MOSTLYCLEAN. - -Tue Aug 17 18:56:59 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in: Depend on _G_config.h where appropriate. - * config.shared (CXXINCLUDES): If doing libg++, search ../libio. - -Tue Aug 17 17:34:24 1993 Per Bothner (bothner@kalessin.cygnus.com) - - New directory. Based on old libg++/iostream code, - but extensively re-written. diff --git a/contrib/libstdc++/libio/Makefile.am b/contrib/libstdc++/libio/Makefile.am deleted file mode 100644 index dbba6ff51d75..000000000000 --- a/contrib/libstdc++/libio/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -## Makefile for the libio subdirectory of the GNU C++ Standard library. -## -## Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. -## -## This file is part of the libstdc++ version 3 distribution. -## Process this file with automake to produce Makefile.in. - -## This file is part of the GNU ISO C++ Library. This library is free -## software; you can redistribute it and/or modify it under the -## terms of the GNU General Public License as published by the -## Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This 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 General Public License for more details. - -## You should have received a copy of the GNU General Public License along -## with this library; see the file COPYING. If not, write to the Free -## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -## USA. - -AUTOMAKE_OPTIONS = 1.3 cygnus - -mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs - -if GLIBCPP_BUILD_LIBIO -noinst_LTLIBRARIES = libio.la -else -noinst_LTLIBRARIES = -endif - -# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES -GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ -TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ -LIBIO_INCLUDES = @LIBIO_INCLUDES@ - -INCLUDES = \ - -nostdinc++ \ - $(GLIBCPP_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) - -libio_headers = \ - libio.h libioP.h iolibio.h - -if GLIBCPP_NEED_LIBIO -LIBIO_SRCS = \ - filedoalloc.c genops.c fileops.c stdfiles.c c_codecvt.c \ - iofclose.c iofopen.c -else -LIBIO_SRCS = -endif - -if GLIBCPP_NEED_WLIBIO -LIBIO_WSRCS = \ - wfiledoalloc.c wfileops.c wgenops.c iofwide.c -else -LIBIO_WSRCS = -endif - - -EXTRA_DIST = iostreamP.h - -libio_la_SOURCES = $(LIBIO_SRCS) $(LIBIO_WSRCS) - - -AM_CFLAGS = -D_GNU_SOURCE @DEBUG_FLAGS@ diff --git a/contrib/libstdc++/libio/Makefile.in b/contrib/libstdc++/libio/Makefile.in deleted file mode 100644 index a5384b89f042..000000000000 --- a/contrib/libstdc++/libio/Makefile.in +++ /dev/null @@ -1,406 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_alias = @build_alias@ -build_triplet = @build@ -host_alias = @host_alias@ -host_triplet = @host@ -target_alias = @target_alias@ -target_triplet = @target@ -AR = @AR@ -AS = @AS@ -ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ -AWK = @AWK@ -BASIC_FILE_H = @BASIC_FILE_H@ -CC = @CC@ -CCODECVT_C = @CCODECVT_C@ -CCODECVT_H = @CCODECVT_H@ -CLOCALE_H = @CLOCALE_H@ -CMESSAGES_H = @CMESSAGES_H@ -CPP = @CPP@ -CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ -CSTDIO_H = @CSTDIO_H@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -C_INCLUDE_DIR = @C_INCLUDE_DIR@ -DEBUG_FLAGS = @DEBUG_FLAGS@ -DLLTOOL = @DLLTOOL@ -EXEEXT = @EXEEXT@ -EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ -GCJ = @GCJ@ -GCJFLAGS = @GCJFLAGS@ -GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ -LIBMATHOBJS = @LIBMATHOBJS@ -LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ -LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ -LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ -LIBTOOL = @LIBTOOL@ -LIBUNWIND_FLAG = @LIBUNWIND_FLAG@ -LN_S = @LN_S@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ -OPT_LDFLAGS = @OPT_LDFLAGS@ -OS_INC_SRCDIR = @OS_INC_SRCDIR@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -SECTION_FLAGS = @SECTION_FLAGS@ -SECTION_LDFLAGS = @SECTION_LDFLAGS@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -WARN_FLAGS = @WARN_FLAGS@ -WERROR = @WERROR@ -baseline_file = @baseline_file@ -check_msgfmt = @check_msgfmt@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -glibcpp_CXX = @glibcpp_CXX@ -glibcpp_MOFILES = @glibcpp_MOFILES@ -glibcpp_POFILES = @glibcpp_POFILES@ -glibcpp_basedir = @glibcpp_basedir@ -glibcpp_builddir = @glibcpp_builddir@ -glibcpp_localedir = @glibcpp_localedir@ -glibcpp_prefixdir = @glibcpp_prefixdir@ -glibcpp_srcdir = @glibcpp_srcdir@ -glibcpp_thread_h = @glibcpp_thread_h@ -glibcpp_toolexecdir = @glibcpp_toolexecdir@ -glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ -gxx_include_dir = @gxx_include_dir@ -ifGNUmake = @ifGNUmake@ -libio_la = @libio_la@ -libtool_VERSION = @libtool_VERSION@ -toplevel_srcdir = @toplevel_srcdir@ - -AUTOMAKE_OPTIONS = 1.3 cygnus - -mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs -@GLIBCPP_BUILD_LIBIO_TRUE@noinst_LTLIBRARIES = @GLIBCPP_BUILD_LIBIO_TRUE@libio.la -@GLIBCPP_BUILD_LIBIO_FALSE@noinst_LTLIBRARIES = - -# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES -GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ -TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ -LIBIO_INCLUDES = @LIBIO_INCLUDES@ - -INCLUDES = \ - -nostdinc++ \ - $(GLIBCPP_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) - - -libio_headers = \ - libio.h libioP.h iolibio.h - -@GLIBCPP_NEED_LIBIO_TRUE@LIBIO_SRCS = @GLIBCPP_NEED_LIBIO_TRUE@\ -@GLIBCPP_NEED_LIBIO_TRUE@ filedoalloc.c genops.c fileops.c stdfiles.c c_codecvt.c \ -@GLIBCPP_NEED_LIBIO_TRUE@ iofclose.c iofopen.c -@GLIBCPP_NEED_LIBIO_FALSE@LIBIO_SRCS = -@GLIBCPP_NEED_WLIBIO_TRUE@LIBIO_WSRCS = @GLIBCPP_NEED_WLIBIO_TRUE@\ -@GLIBCPP_NEED_WLIBIO_TRUE@ wfiledoalloc.c wfileops.c wgenops.c iofwide.c -@GLIBCPP_NEED_WLIBIO_FALSE@LIBIO_WSRCS = - -EXTRA_DIST = iostreamP.h - -libio_la_SOURCES = $(LIBIO_SRCS) $(LIBIO_WSRCS) - -AM_CFLAGS = -D_GNU_SOURCE @DEBUG_FLAGS@ -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) - - -DEFS = @DEFS@ -I. -I$(srcdir) -I.. -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -libio_la_LDFLAGS = -libio_la_LIBADD = -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo fileops.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofclose.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofopen.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wfiledoalloc.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wfileops.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wgenops.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofwide.lo -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS = \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wfiledoalloc.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wfileops.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wgenops.lo \ -@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofwide.lo -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@fileops.lo \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@iofclose.lo \ -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@iofopen.lo -@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS = -CFLAGS = @CFLAGS@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = ChangeLog Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best -SOURCES = $(libio_la_SOURCES) -OBJECTS = $(libio_la_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .lo .o .obj .s -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --cygnus libio/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-noinstLTLIBRARIES: - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - -distclean-noinstLTLIBRARIES: - -maintainer-clean-noinstLTLIBRARIES: - -.c.o: - $(COMPILE) -c $< - -# FIXME: We should only use cygpath when building on Windows, -# and only if it is available. -.c.obj: - $(COMPILE) -c `cygpath -w $<` - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -rm -f *.$(OBJEXT) - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -.c.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -maintainer-clean-libtool: - -libio.la: $(libio_la_OBJECTS) $(libio_la_DEPENDENCIES) - $(LINK) $(libio_la_LDFLAGS) $(libio_la_OBJECTS) $(libio_la_LIBADD) $(LIBS) - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = libio - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: -check: check-am -installcheck-am: -installcheck: installcheck-am -install-info-am: -install-info: install-info-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: -uninstall: uninstall-am -all-am: Makefile $(LTLIBRARIES) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ - mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ - clean-tags clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ - distclean-libtool distclean-tags distclean-generic \ - clean-am - -rm -f libtool - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ - maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ -clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile mostlyclean-libtool distclean-libtool \ -clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-info-am \ -install-info install-exec-am install-exec install-data-am install-data \ -install-am install uninstall-am uninstall all-redirect all-am all \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/libstdc++/libio/_G_config.h b/contrib/libstdc++/libio/_G_config.h deleted file mode 100644 index d6738c2bf7be..000000000000 --- a/contrib/libstdc++/libio/_G_config.h +++ /dev/null @@ -1,136 +0,0 @@ -/* This file is needed by libio to define various configuration parameters. - These are always the same in the GNU C library. */ - -#ifndef _G_config_h -#define _G_config_h 1 - -#ifndef _LIBC -# include <bits/c++config.h> -# ifdef _GLIBCPP_USE_THREADS -# define _IO_MTSAFE_IO -# endif -#endif - -/* Define types for libio in terms of the standard internal type names. */ - -#include <sys/types.h> -#define __need_size_t -#define __need_wchar_t -#define __need_wint_t -#define __need_NULL -#define __need_ptrdiff_t -#ifdef __cplusplus -# include <cstddef> -#else -# include <stddef.h> -#endif - - -#ifndef _WINT_T -/* Integral type unchanged by default argument promotions that can - hold any value corresponding to members of the extended character - set, as well as at least one value that does not correspond to any - member of the extended character set. */ -# define _WINT_T -typedef unsigned int wint_t; -#endif - -/* For use as part of glibc (native) or as part of libstdc++ (maybe - not glibc) */ -#ifndef __c_mbstate_t_defined -# define __c_mbstate_t_defined 1 -/*# ifdef _GLIBCPP_USE_WCHAR_T*/ -typedef struct -{ - int count; - wint_t value; -}__c_mbstate_t; -/*# endif*/ -#endif -#undef __need_mbstate_t - -typedef size_t _G_size_t; - - -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -typedef struct -{ - __off_t __pos; - __c_mbstate_t __state; -} _G_fpos_t; - -typedef struct -{ - __off64_t __pos; - __c_mbstate_t __state; -} _G_fpos64_t; -#else -typedef __off_t _G_fpos_t; -typedef __off64_t _G_fpos64_t; -#endif -#define _G_ssize_t __ssize_t -#define _G_off_t __off_t -#define _G_off64_t __off64_t -#define _G_pid_t __pid_t -#define _G_uid_t __uid_t -#define _G_wchar_t wchar_t -#define _G_wint_t wint_t -#define _G_stat64 stat64 -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -# include <iconv.h> -typedef iconv_t _G_iconv_t; -#endif - -typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); -typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); -typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); -typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); - -#define _G_HAVE_BOOL 1 - - -/* These library features are always available in the GNU C library. */ -#define _G_HAVE_ATEXIT 1 -#define _G_HAVE_SYS_CDEFS 1 -#define _G_HAVE_SYS_WAIT 1 -#define _G_NEED_STDARG_H 1 -#define _G_va_list __gnuc_va_list - -#define _G_HAVE_PRINTF_FP 1 -#define _G_HAVE_MMAP 1 -#define _G_HAVE_LONG_DOUBLE_IO 1 -#define _G_HAVE_IO_FILE_OPEN 1 -#define _G_HAVE_IO_GETLINE_INFO 1 - -#define _G_IO_IO_FILE_VERSION 0x20001 - -//#define _G_OPEN64 __open64 -//#define _G_LSEEK64 __lseek64 -//#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf) - -/* This is defined by <bits/stat.h> if `st_blksize' exists. */ -/*#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)*/ - -#define _G_BUFSIZ 8192 - -/* These are the vtbl details for ELF. */ -#define _G_NAMES_HAVE_UNDERSCORE 0 -#define _G_VTABLE_LABEL_HAS_LENGTH 1 -#ifndef _G_USING_THUNKS -# define _G_USING_THUNKS 1 -#endif /* _G_USING_THUNKS */ -#define _G_VTABLE_LABEL_PREFIX "__vt_" -#define _G_VTABLE_LABEL_PREFIX_ID __vt_ - -#define _G_INTERNAL_CCS "UCS4" -#define _G_HAVE_WEAK_SYMBOL 1 -#define _G_STDIO_USES_LIBIO 1 - -#if defined __cplusplus || defined __STDC__ -# define _G_ARGS(ARGLIST) ARGLIST -#else -# define _G_ARGS(ARGLIST) () -#endif - -#endif /* _G_config.h */ - diff --git a/contrib/libstdc++/libio/filedoalloc.c b/contrib/libstdc++/libio/filedoalloc.c deleted file mode 100644 index 12c1135bcbe0..000000000000 --- a/contrib/libstdc++/libio/filedoalloc.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -/* - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* Modified for GNU iostream by Per Bothner 1991, 1992. */ - -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE -#endif -#include "libioP.h" -#include <sys/types.h> -#include <sys/stat.h> -#ifdef __STDC__ -#include <stdlib.h> -#include <unistd.h> -#endif - -#ifdef _LIBC -# undef isatty -# define isatty(Fd) __isatty (Fd) -#endif - -/* - * Allocate a file buffer, or switch to unbuffered I/O. - * Per the ANSI C standard, ALL tty devices default to line buffered. - * - * As a side effect, we set __SOPT or __SNPT (en/dis-able fseek - * optimisation) right after the _fstat() that finds the buffer size. - */ - -int -_IO_file_doallocate (fp) - _IO_FILE *fp; -{ - _IO_size_t size; - int couldbetty; - char *p; - struct _G_stat64 st; - - if (fp->_fileno < 0 || _IO_SYSSTAT (fp, &st) < 0) - { - couldbetty = 0; - size = _IO_BUFSIZ; -#if 0 - /* do not try to optimise fseek() */ - fp->_flags |= __SNPT; -#endif - } - else - { - couldbetty = S_ISCHR (st.st_mode); -#if _IO_HAVE_ST_BLKSIZE - size = st.st_blksize <= 0 ? _IO_BUFSIZ : st.st_blksize; -#else - size = _IO_BUFSIZ; -#endif - } - ALLOC_BUF (p, size, EOF); - _IO_setb (fp, p, p + size, 1); - if (couldbetty && isatty (fp->_fileno)) - fp->_flags |= _IO_LINE_BUF; - return 1; -} diff --git a/contrib/libstdc++/libio/fileops.c b/contrib/libstdc++/libio/fileops.c deleted file mode 100644 index a830b5cd4395..000000000000 --- a/contrib/libstdc++/libio/fileops.c +++ /dev/null @@ -1,1049 +0,0 @@ -/* Copyright (C) 1993, 1995, 1997-1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - Written by Per Bothner <bothner@cygnus.com>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - - -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE -#endif -#include "libioP.h" -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <string.h> -#include <errno.h> -#ifdef __STDC__ -#include <stdlib.h> -#endif -#if _LIBC -# include "../wcsmbs/wcsmbsload.h" -# include <shlib-compat.h> -#endif -#ifndef errno -extern int errno; -#endif -#ifndef __set_errno -# define __set_errno(Val) errno = (Val) -#endif - - -#ifdef _LIBC -# 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) -#else -# define _IO_new_do_write _IO_do_write -# define _IO_new_file_attach _IO_file_attach -# define _IO_new_file_close_it _IO_file_close_it -# define _IO_new_file_finish _IO_file_finish -# define _IO_new_file_fopen _IO_file_fopen -# define _IO_new_file_init _IO_file_init -# define _IO_new_file_setbuf _IO_file_setbuf -# define _IO_new_file_sync _IO_file_sync -# define _IO_new_file_overflow _IO_file_overflow -# define _IO_new_file_seekoff _IO_file_seekoff -# define _IO_new_file_underflow _IO_file_underflow -# define _IO_new_file_write _IO_file_write -# define _IO_new_file_xsputn _IO_file_xsputn -#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. - - In a filebuf, there is only one current position, instead of two - separate get and put pointers. In get mode, the current position - is that of gptr(); in put mode that of pptr(). - - The position in the buffer that corresponds to the position - in external file system is normally _IO_read_end, except in putback - mode, when it is _IO_save_end. - If the field _fb._offset is >= 0, it gives the offset in - the file as a whole corresponding to eGptr(). (?) - - PUT MODE: - If a filebuf is in put mode, then all of _IO_read_ptr, _IO_read_end, - and _IO_read_base are equal to each other. These are usually equal - to _IO_buf_base, though not necessarily if we have switched from - get mode to put mode. (The reason is to maintain the invariant - that _IO_read_end corresponds to the external file position.) - _IO_write_base is non-NULL and usually equal to _IO_base_base. - We also have _IO_write_end == _IO_buf_end, but only in fully buffered mode. - The un-flushed character are those between _IO_write_base and _IO_write_ptr. - - GET MODE: - If a filebuf is in get or putback mode, eback() != egptr(). - In get mode, the unread characters are between gptr() and egptr(). - The OS file position corresponds to that of egptr(). - - PUTBACK MODE: - Putback mode is used to remember "excess" characters that have - been sputbackc'd in a separate putback buffer. - In putback mode, the get buffer points to the special putback buffer. - The unread characters are the characters between gptr() and egptr() - in the putback buffer, as well as the area between save_gptr() - and save_egptr(), which point into the original reserve buffer. - (The pointers save_gptr() and save_egptr() are the values - of gptr() and egptr() at the time putback mode was entered.) - The OS position corresponds to that of save_egptr(). - - LINE BUFFERED OUTPUT: - During line buffered output, _IO_write_base==base() && epptr()==base(). - However, ptr() may be anywhere between base() and ebuf(). - This forces a call to filebuf::overflow(int C) on every put. - If there is more space in the buffer, and C is not a '\n', - then C is inserted, and pptr() incremented. - - UNBUFFERED STREAMS: - If a filebuf is unbuffered(), the _shortbuf[1] is used as the buffer. -*/ - -#define CLOSED_FILEBUF_FLAGS \ - (_IO_IS_FILEBUF+_IO_NO_READS+_IO_NO_WRITES+_IO_TIED_PUT_GET) - - -void -_IO_new_file_init (fp) - struct _IO_FILE_plus *fp; -{ - /* POSIX.1 allows another file handle to be used to change the position - of our file descriptor. Hence we actually don't know the actual - position before we do the first fseek (and until a following fflush). */ - fp->file._offset = _IO_pos_BAD; - fp->file._IO_file_flags |= CLOSED_FILEBUF_FLAGS; - - _IO_link_in (fp); - fp->file._fileno = -1; -} - -int -_IO_new_file_close_it (fp) - _IO_FILE *fp; -{ - int write_status, close_status; - if (!_IO_file_is_open (fp)) - return EOF; - - write_status = _IO_do_flush (fp); - - _IO_unsave_markers(fp); - - close_status = _IO_SYSCLOSE (fp); - - /* Free buffer. */ - if (fp->_mode <= 0) - { - _IO_setb (fp, NULL, NULL, 0); - _IO_setg (fp, NULL, NULL, NULL); - _IO_setp (fp, NULL, NULL); - } -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - else - { - _IO_wsetb (fp, NULL, NULL, 0); - _IO_wsetg (fp, NULL, NULL, NULL); - _IO_wsetp (fp, NULL, NULL); - } -#endif - - _IO_un_link ((struct _IO_FILE_plus *) fp); - fp->_flags = _IO_MAGIC|CLOSED_FILEBUF_FLAGS; - fp->_fileno = -1; - fp->_offset = _IO_pos_BAD; - - return close_status ? close_status : write_status; -} - -void -_IO_new_file_finish (fp, dummy) - _IO_FILE *fp; - int dummy; -{ - if (_IO_file_is_open (fp)) - { - _IO_do_flush (fp); - if (!(fp->_flags & _IO_DELETE_DONT_CLOSE)) - _IO_SYSCLOSE (fp); - } - _IO_default_finish (fp, 0); -} - -#if defined __GNUC__ && __GNUC__ >= 2 -__inline__ -#endif -_IO_FILE * -_IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64) - _IO_FILE *fp; - const char *filename; - int posix_mode; - int prot; - int read_write; - int is32not64; -{ - int fdesc; -#ifdef _G_OPEN64 - fdesc = (is32not64 - ? open (filename, posix_mode, prot) - : _G_OPEN64 (filename, posix_mode, prot)); -#else - fdesc = open (filename, posix_mode, prot); -#endif - if (fdesc < 0) - return NULL; - fp->_fileno = fdesc; - _IO_mask_flags (fp, read_write,_IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING); - if (read_write & _IO_IS_APPENDING) - if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_end, _IOS_INPUT|_IOS_OUTPUT) - == _IO_pos_BAD && errno != ESPIPE) - return NULL; - _IO_link_in ((struct _IO_FILE_plus *) fp); - return fp; -} - -_IO_FILE * -_IO_new_file_fopen (fp, filename, mode, is32not64) - _IO_FILE *fp; - const char *filename; - const char *mode; - int is32not64; -{ - int oflags = 0, omode; - int read_write; - int oprot = 0666; - int i; - _IO_FILE *result; -#if _LIBC - const char *cs; -#endif - - if (_IO_file_is_open (fp)) - return 0; - switch (*mode) - { - case 'r': - omode = O_RDONLY; - read_write = _IO_NO_WRITES; - break; - case 'w': - omode = O_WRONLY; - oflags = O_CREAT|O_TRUNC; - read_write = _IO_NO_READS; - break; - case 'a': - omode = O_WRONLY; - oflags = O_CREAT|O_APPEND; - read_write = _IO_NO_READS|_IO_IS_APPENDING; - break; - default: - __set_errno (EINVAL); - return NULL; - } - for (i = 1; i < 4; ++i) - { - switch (*++mode) - { - case '\0': - break; - case '+': - omode = O_RDWR; - read_write &= _IO_IS_APPENDING; - continue; - case 'x': - oflags |= O_EXCL; - continue; - case 'b': - default: - /* Ignore. */ - continue; - } - break; - } - - result = _IO_file_open (fp, filename, omode|oflags, oprot, read_write, - is32not64); - - -#if _LIBC - /* Test whether the mode string specifies the conversion. */ - cs = strstr (mode, ",ccs="); - if (cs != NULL) - { - /* Yep. Load the appropriate conversions and set the orientation - to wide. */ - struct gconv_fcts fcts; - struct _IO_codecvt *cc; - - if (! _IO_CHECK_WIDE (fp) || __wcsmbs_named_conv (&fcts, cs + 5) != 0) - { - /* Something went wrong, we cannot load the conversion modules. - This means we cannot proceed since the user explicitly asked - for these. */ - _IO_new_fclose (result); - return NULL; - } - - cc = fp->_codecvt = &fp->_wide_data->_codecvt; - - /* The functions are always the same. */ - *cc = __libio_codecvt; - - cc->__cd_in.__cd.__nsteps = 1; /* Only one step allowed. */ - cc->__cd_in.__cd.__steps = fcts.towc; - - cc->__cd_in.__cd.__data[0].__invocation_counter = 0; - cc->__cd_in.__cd.__data[0].__internal_use = 1; - cc->__cd_in.__cd.__data[0].__flags = __GCONV_IS_LAST; - cc->__cd_in.__cd.__data[0].__statep = &result->_wide_data->_IO_state; - - cc->__cd_out.__cd.__nsteps = 1; /* Only one step allowed. */ - cc->__cd_out.__cd.__steps = fcts.tomb; - - cc->__cd_out.__cd.__data[0].__invocation_counter = 0; - cc->__cd_out.__cd.__data[0].__internal_use = 1; - cc->__cd_out.__cd.__data[0].__flags = __GCONV_IS_LAST; - cc->__cd_out.__cd.__data[0].__statep = &result->_wide_data->_IO_state; - - /* Set the mode now. */ - result->_mode = 1; - } -#endif /* GNU libc */ - - return result; -} - -_IO_FILE * -_IO_new_file_attach (fp, fd) - _IO_FILE *fp; - int fd; -{ - if (_IO_file_is_open (fp)) - return NULL; - fp->_fileno = fd; - fp->_flags &= ~(_IO_NO_READS+_IO_NO_WRITES); - fp->_flags |= _IO_DELETE_DONT_CLOSE; - /* Get the current position of the file. */ - /* We have to do that since that may be junk. */ - fp->_offset = _IO_pos_BAD; - if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_cur, _IOS_INPUT|_IOS_OUTPUT) - == _IO_pos_BAD && errno != ESPIPE) - return NULL; - return fp; -} - -_IO_FILE * -_IO_new_file_setbuf (fp, p, len) - _IO_FILE *fp; - char *p; - _IO_ssize_t len; -{ - if (_IO_default_setbuf (fp, p, len) == NULL) - return NULL; - - fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end - = fp->_IO_buf_base; - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - - return fp; -} - -static int new_do_write __P ((_IO_FILE *, const char *, _IO_size_t)); - -/* Write TO_DO bytes from DATA to FP. - Then mark FP as having empty buffers. */ - -int -_IO_new_do_write (fp, data, to_do) - _IO_FILE *fp; - const char *data; - _IO_size_t to_do; -{ - return (to_do == 0 || new_do_write (fp, data, to_do) == to_do) ? 0 : EOF; -} - -static -int -new_do_write (fp, data, to_do) - _IO_FILE *fp; - const char *data; - _IO_size_t to_do; -{ - _IO_size_t count; - if (fp->_flags & _IO_IS_APPENDING) - /* On a system without a proper O_APPEND implementation, - you would need to sys_seek(0, SEEK_END) here, but is - is not needed nor desirable for Unix- or Posix-like systems. - Instead, just indicate that offset (before and after) is - unpredictable. */ - fp->_offset = _IO_pos_BAD; - else if (fp->_IO_read_end != fp->_IO_write_base) - { - _IO_off64_t new_pos - = _IO_SYSSEEK (fp, fp->_IO_write_base - fp->_IO_read_end, 1); - if (new_pos == _IO_pos_BAD) - return 0; - fp->_offset = new_pos; - } - count = _IO_SYSWRITE (fp, data, to_do); - if (fp->_cur_column && count) - fp->_cur_column = _IO_adjust_column (fp->_cur_column - 1, data, count) + 1; - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_buf_base; - fp->_IO_write_end = (fp->_mode < 0 - && (fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED)) - ? fp->_IO_buf_base : fp->_IO_buf_end); - return count; -} - -int -_IO_new_file_underflow (fp) - _IO_FILE *fp; -{ - _IO_ssize_t count; -#if 0 - /* SysV does not make this test; take it out for compatibility */ - if (fp->_flags & _IO_EOF_SEEN) - return (EOF); -#endif - - if (fp->_flags & _IO_NO_READS) - { - fp->_flags |= _IO_ERR_SEEN; - __set_errno (EBADF); - return EOF; - } - if (fp->_IO_read_ptr < fp->_IO_read_end) - return *(unsigned char *) fp->_IO_read_ptr; - - if (fp->_IO_buf_base == NULL) - { - /* Maybe we already have a push back pointer. */ - if (fp->_IO_save_base != NULL) - { - free (fp->_IO_save_base); - fp->_flags &= ~_IO_IN_BACKUP; - } - _IO_doallocbuf (fp); - } - - /* Flush all line buffered files before reading. */ - /* FIXME This can/should be moved to genops ?? */ - if (fp->_flags & (_IO_LINE_BUF|_IO_UNBUFFERED)) - _IO_flush_all_linebuffered (); - - _IO_switch_to_get_mode (fp); - - /* This is very tricky. We have to adjust those - pointers before we call _IO_SYSREAD () since - we may longjump () out while waiting for - input. Those pointers may be screwed up. H.J. */ - fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_buf_base; - fp->_IO_read_end = fp->_IO_buf_base; - fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end - = fp->_IO_buf_base; - - count = _IO_SYSREAD (fp, fp->_IO_buf_base, - fp->_IO_buf_end - fp->_IO_buf_base); - if (count <= 0) - { - if (count == 0) - fp->_flags |= _IO_EOF_SEEN; - else - fp->_flags |= _IO_ERR_SEEN, count = 0; - } - fp->_IO_read_end += count; - if (count == 0) - return EOF; - if (fp->_offset != _IO_pos_BAD) - _IO_pos_adjust (fp->_offset, count); - return *(unsigned char *) fp->_IO_read_ptr; -} - -int -_IO_new_file_overflow (f, ch) - _IO_FILE *f; - int ch; -{ - if (f->_flags & _IO_NO_WRITES) /* SET ERROR */ - { - f->_flags |= _IO_ERR_SEEN; - __set_errno (EBADF); - return EOF; - } - /* If currently reading or no buffer allocated. */ - if ((f->_flags & _IO_CURRENTLY_PUTTING) == 0 || f->_IO_write_base == 0) - { - /* Allocate a buffer if needed. */ - if (f->_IO_write_base == 0) - { - _IO_doallocbuf (f); - _IO_setg (f, f->_IO_buf_base, f->_IO_buf_base, f->_IO_buf_base); - } - /* Otherwise must be currently reading. - If _IO_read_ptr (and hence also _IO_read_end) is at the buffer end, - logically slide the buffer forwards one block (by setting the - read pointers to all point at the beginning of the block). This - makes room for subsequent output. - Otherwise, set the read pointers to _IO_read_end (leaving that - alone, so it can continue to correspond to the external position). */ - if (f->_IO_read_ptr == f->_IO_buf_end) - f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base; - f->_IO_write_ptr = f->_IO_read_ptr; - f->_IO_write_base = f->_IO_write_ptr; - f->_IO_write_end = f->_IO_buf_end; - f->_IO_read_base = f->_IO_read_ptr = f->_IO_read_end; - - f->_flags |= _IO_CURRENTLY_PUTTING; - if (f->_mode < 0 && f->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED)) - f->_IO_write_end = f->_IO_write_ptr; - } - if (ch == EOF) - return _IO_new_do_write(f, f->_IO_write_base, - f->_IO_write_ptr - f->_IO_write_base); - if (f->_IO_write_ptr == f->_IO_buf_end ) /* Buffer is really full */ - if (_IO_do_flush (f) == EOF) - return EOF; - *f->_IO_write_ptr++ = ch; - if ((f->_flags & _IO_UNBUFFERED) - || ((f->_flags & _IO_LINE_BUF) && ch == '\n')) - if (_IO_new_do_write(f, f->_IO_write_base, - f->_IO_write_ptr - f->_IO_write_base) == EOF) - return EOF; - return (unsigned char) ch; -} - -int -_IO_new_file_sync (fp) - _IO_FILE *fp; -{ - _IO_ssize_t delta; - int retval = 0; - - /* char* ptr = cur_ptr(); */ - if (fp->_IO_write_ptr > fp->_IO_write_base) - if (_IO_do_flush(fp)) return EOF; - delta = fp->_IO_read_ptr - fp->_IO_read_end; - if (delta != 0) - { -#ifdef TODO - if (_IO_in_backup (fp)) - delta -= eGptr () - Gbase (); -#endif - _IO_off64_t new_pos = _IO_SYSSEEK (fp, delta, 1); - if (new_pos != (_IO_off64_t) EOF) - fp->_IO_read_end = fp->_IO_read_ptr; -#ifdef ESPIPE - else if (errno == ESPIPE) - ; /* Ignore error from unseekable devices. */ -#endif - else - retval = EOF; - } - if (retval != EOF) - fp->_offset = _IO_pos_BAD; - /* FIXME: Cleanup - can this be shared? */ - /* setg(base(), ptr, ptr); */ - return retval; -} - -_IO_off64_t -_IO_new_file_seekoff (fp, offset, dir, mode) - _IO_FILE *fp; - _IO_off64_t offset; - int dir; - int mode; -{ - _IO_off64_t result; - _IO_off64_t delta, new_offset; - long count; - /* POSIX.1 8.2.3.7 says that after a call the fflush() the file - offset of the underlying file must be exact. */ - int must_be_exact = (fp->_IO_read_base == fp->_IO_read_end - && fp->_IO_write_base == fp->_IO_write_ptr); - - if (mode == 0) - dir = _IO_seek_cur, offset = 0; /* Don't move any pointers. */ - - /* Flush unwritten characters. - (This may do an unneeded write if we seek within the buffer. - But to be able to switch to reading, we would need to set - egptr to ptr. That can't be done in the current design, - which assumes file_ptr() is eGptr. Anyway, since we probably - end up flushing when we close(), it doesn't make much difference.) - FIXME: simulate mem-papped files. */ - - if (fp->_IO_write_ptr > fp->_IO_write_base || _IO_in_put_mode (fp)) - if (_IO_switch_to_get_mode (fp)) - return EOF; - - if (fp->_IO_buf_base == NULL) - { - /* It could be that we already have a pushback buffer. */ - if (fp->_IO_read_base != NULL) - { - free (fp->_IO_read_base); - fp->_flags &= ~_IO_IN_BACKUP; - } - _IO_doallocbuf (fp); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - } - - switch (dir) - { - case _IO_seek_cur: - /* Adjust for read-ahead (bytes is buffer). */ - offset -= fp->_IO_read_end - fp->_IO_read_ptr; - if (fp->_offset == _IO_pos_BAD) - goto dumb; - /* Make offset absolute, assuming current pointer is file_ptr(). */ - offset += fp->_offset; - - dir = _IO_seek_set; - break; - case _IO_seek_set: - break; - case _IO_seek_end: - { - struct _G_stat64 st; - if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode)) - { - offset += st.st_size; - dir = _IO_seek_set; - } - else - goto dumb; - } - } - /* At this point, dir==_IO_seek_set. */ - - /* If we are only interested in the current position we've found it now. */ - if (mode == 0) - return offset; - - /* If destination is within current buffer, optimize: */ - if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL - && !_IO_in_backup (fp)) - { - /* Offset relative to start of main get area. */ - _IO_off64_t rel_offset = (offset - fp->_offset - + (fp->_IO_read_end - fp->_IO_read_base)); - if (rel_offset >= 0) - { -#if 0 - if (_IO_in_backup (fp)) - _IO_switch_to_main_get_area (fp); -#endif - if (rel_offset <= fp->_IO_read_end - fp->_IO_read_base) - { - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + rel_offset, - fp->_IO_read_end); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - { - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } - } -#ifdef TODO - /* If we have streammarkers, seek forward by reading ahead. */ - if (_IO_have_markers (fp)) - { - int to_skip = rel_offset - - (fp->_IO_read_ptr - fp->_IO_read_base); - if (ignore (to_skip) != to_skip) - goto dumb; - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -#endif - } -#ifdef TODO - if (rel_offset < 0 && rel_offset >= Bbase () - Bptr ()) - { - if (!_IO_in_backup (fp)) - _IO_switch_to_backup_area (fp); - gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr); - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -#endif - } - -#ifdef TODO - _IO_unsave_markers (fp); -#endif - - if (fp->_flags & _IO_NO_READS) - goto dumb; - - /* Try to seek to a block boundary, to improve kernel page management. */ - new_offset = offset & ~(fp->_IO_buf_end - fp->_IO_buf_base - 1); - delta = offset - new_offset; - if (delta > fp->_IO_buf_end - fp->_IO_buf_base) - { - new_offset = offset; - delta = 0; - } - result = _IO_SYSSEEK (fp, new_offset, 0); - if (result < 0) - return EOF; - if (delta == 0) - count = 0; - else - { - count = _IO_SYSREAD (fp, fp->_IO_buf_base, - (must_be_exact - ? delta : fp->_IO_buf_end - fp->_IO_buf_base)); - if (count < delta) - { - /* We weren't allowed to read, but try to seek the remainder. */ - offset = count == EOF ? delta : delta-count; - dir = _IO_seek_cur; - goto dumb; - } - } - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + delta, - fp->_IO_buf_base + count); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - fp->_offset = result + count; - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - return offset; - dumb: - - _IO_unsave_markers (fp); - result = _IO_SYSSEEK (fp, offset, dir); - if (result != EOF) - { - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - fp->_offset = result; - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - } - return result; - -resync: - /* We need to do it since it is possible that the file offset in - the kernel may be changed behind our back. It may happen when - we fopen a file and then do a fork. One process may access the - the file and the kernel file offset will be changed. */ - if (fp->_offset >= 0) - _IO_SYSSEEK (fp, fp->_offset, 0); - - return offset; -} - -_IO_ssize_t -_IO_file_read (fp, buf, size) - _IO_FILE *fp; - void *buf; - _IO_ssize_t size; -{ - return read (fp->_fileno, buf, size); -} - -_IO_off64_t -_IO_file_seek (fp, offset, dir) - _IO_FILE *fp; - _IO_off64_t offset; - int dir; -{ -#ifdef _G_LSEEK64 - return _G_LSEEK64 (fp->_fileno, offset, dir); -#else - return lseek (fp->_fileno, offset, dir); -#endif -} - -int -_IO_file_stat (fp, st) - _IO_FILE *fp; - void *st; -{ -#ifdef _G_FSTAT64 - return _G_FSTAT64 (fp->_fileno, (struct _G_stat64 *) st); -#else - return fstat (fp->_fileno, (struct stat *) st); -#endif -} - -int -_IO_file_close (fp) - _IO_FILE *fp; -{ - return close (fp->_fileno); -} - -_IO_ssize_t -_IO_new_file_write (f, data, n) - _IO_FILE *f; - const void *data; - _IO_ssize_t n; -{ - _IO_ssize_t to_do = n; - while (to_do > 0) - { - _IO_ssize_t count = write (f->_fileno, data, to_do); - if (count < 0) - { - f->_flags |= _IO_ERR_SEEN; - break; - } - to_do -= count; - data = (void *) ((char *) data + count); - } - n -= to_do; - if (f->_offset >= 0) - f->_offset += n; - return n; -} - -_IO_size_t -_IO_new_file_xsputn (f, data, n) - _IO_FILE *f; - const void *data; - _IO_size_t n; -{ - register const char *s = (const char *) data; - _IO_size_t to_do = n; - int must_flush = 0; - _IO_size_t count; - - if (n <= 0) - return 0; - /* This is an optimized implementation. - If the amount to be written straddles a block boundary - (or the filebuf is unbuffered), use sys_write directly. */ - - /* First figure out how much space is available in the buffer. */ - count = f->_IO_write_end - f->_IO_write_ptr; /* Space available. */ - if ((f->_flags & _IO_LINE_BUF) && (f->_flags & _IO_CURRENTLY_PUTTING)) - { - count = f->_IO_buf_end - f->_IO_write_ptr; - if (count >= n) - { - register const char *p; - for (p = s + n; p > s; ) - { - if (*--p == '\n') - { - count = p - s + 1; - must_flush = 1; - break; - } - } - } - } - /* Then fill the buffer. */ - if (count > 0) - { - if (count > to_do) - count = to_do; - if (count > 20) - { -#ifdef _LIBC - f->_IO_write_ptr = __mempcpy (f->_IO_write_ptr, s, count); -#else - memcpy (f->_IO_write_ptr, s, count); - f->_IO_write_ptr += count; -#endif - s += count; - } - else - { - register char *p = f->_IO_write_ptr; - register int i = (int) count; - while (--i >= 0) - *p++ = *s++; - f->_IO_write_ptr = p; - } - to_do -= count; - } - if (to_do + must_flush > 0) - { - _IO_size_t block_size, do_write; - /* Next flush the (full) buffer. */ - if (_IO_OVERFLOW (f, EOF) == EOF) - return n - to_do; - - /* Try to maintain alignment: write a whole number of blocks. - dont_write is what gets left over. */ - block_size = f->_IO_buf_end - f->_IO_buf_base; - do_write = to_do - (block_size >= 128 ? to_do % block_size : 0); - - if (do_write) - { - count = new_do_write (f, s, do_write); - to_do -= count; - if (count < do_write) - return n - to_do; - } - - /* Now write out the remainder. Normally, this will fit in the - buffer, but it's somewhat messier for line-buffered files, - so we let _IO_default_xsputn handle the general case. */ - if (to_do) - to_do -= _IO_default_xsputn (f, s+do_write, to_do); - } - return n - to_do; -} - -_IO_size_t -_IO_file_xsgetn (fp, data, n) - _IO_FILE *fp; - void *data; - _IO_size_t n; -{ - register _IO_size_t want, have; - register _IO_ssize_t count; - register char *s = data; - - want = n; - - if (fp->_IO_buf_base == NULL) - { - /* Maybe we already have a push back pointer. */ - if (fp->_IO_save_base != NULL) - { - free (fp->_IO_save_base); - fp->_flags &= ~_IO_IN_BACKUP; - } - _IO_doallocbuf (fp); - } - - while (want > 0) - { - have = fp->_IO_read_end - fp->_IO_read_ptr; - if (want <= have) - { - memcpy (s, fp->_IO_read_ptr, want); - fp->_IO_read_ptr += want; - want = 0; - } - else - { - if (have > 0) - { -#ifdef _LIBC - s = __mempcpy (s, fp->_IO_read_ptr, have); -#else - memcpy (s, fp->_IO_read_ptr, have); - s += have; -#endif - want -= have; - fp->_IO_read_ptr += have; - } - - /* Check for backup and repeat */ - if (_IO_in_backup (fp)) - { - _IO_switch_to_main_get_area (fp); - continue; - } - - /* If we now want less than a buffer, underflow and repeat - the copy. Otherwise, _IO_SYSREAD directly to - the user buffer. */ - if (fp->_IO_buf_base && want < fp->_IO_buf_end - fp->_IO_buf_base) - { - if (__underflow (fp) == EOF) - break; - - continue; - } - - /* These must be set before the sysread as we might longjmp out - waiting for input. */ - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - - /* Try to maintain alignment: read a whole number of blocks. */ - count = want; - if (fp->_IO_buf_base) - { - _IO_size_t block_size = fp->_IO_buf_end - fp->_IO_buf_base; - if (block_size >= 128) - count -= want % block_size; - } - - count = _IO_SYSREAD (fp, s, count); - if (count <= 0) - { - if (count == 0) - fp->_flags |= _IO_EOF_SEEN; - else - fp->_flags |= _IO_ERR_SEEN; - - break; - } - - s += count; - want -= count; - if (fp->_offset != _IO_pos_BAD) - _IO_pos_adjust (fp->_offset, count); - } - } - - return n - want; -} - -struct _IO_jump_t _IO_file_jumps = -{ - JUMP_INIT_DUMMY, - JUMP_INIT(finish, _IO_new_file_finish), - JUMP_INIT(overflow, _IO_new_file_overflow), - JUMP_INIT(underflow, _IO_new_file_underflow), - JUMP_INIT(uflow, _IO_default_uflow), - JUMP_INIT(pbackfail, _IO_default_pbackfail), - JUMP_INIT(xsputn, _IO_new_file_xsputn), - JUMP_INIT(xsgetn, _IO_file_xsgetn), - JUMP_INIT(seekoff, _IO_new_file_seekoff), - JUMP_INIT(seekpos, _IO_default_seekpos), - JUMP_INIT(setbuf, _IO_new_file_setbuf), - JUMP_INIT(sync, _IO_new_file_sync), - JUMP_INIT(doallocate, _IO_file_doallocate), - JUMP_INIT(read, _IO_file_read), - JUMP_INIT(write, _IO_new_file_write), - JUMP_INIT(seek, _IO_file_seek), - JUMP_INIT(close, _IO_file_close), - JUMP_INIT(stat, _IO_file_stat), - JUMP_INIT(showmanyc, _IO_default_showmanyc), - JUMP_INIT(imbue, _IO_default_imbue) -}; - -#ifdef _LIBC -versioned_symbol (libc, _IO_new_do_write, _IO_do_write, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_attach, _IO_file_attach, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_close_it, _IO_file_close_it, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_finish, _IO_file_finish, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_fopen, _IO_file_fopen, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_init, _IO_file_init, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_setbuf, _IO_file_setbuf, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_sync, _IO_file_sync, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_overflow, _IO_file_overflow, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_seekoff, _IO_file_seekoff, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_underflow, _IO_file_underflow, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_write, _IO_file_write, GLIBC_2_1); -versioned_symbol (libc, _IO_new_file_xsputn, _IO_file_xsputn, GLIBC_2_1); -#endif diff --git a/contrib/libstdc++/libio/genops.c b/contrib/libstdc++/libio/genops.c deleted file mode 100644 index b1ae5afc506f..000000000000 --- a/contrib/libstdc++/libio/genops.c +++ /dev/null @@ -1,1123 +0,0 @@ -/* Copyright (C) 1993, 1995, 1997-1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -/* Generic or default I/O operations. */ - -#include "libioP.h" -#ifdef __STDC__ -#include <stdlib.h> -#endif -#include <string.h> - -#ifdef _IO_MTSAFE_IO -static _IO_lock_t list_all_lock = _IO_lock_initializer; -#endif - -void -_IO_un_link (fp) - struct _IO_FILE_plus *fp; -{ - if (fp->file._flags & _IO_LINKED) - { - struct _IO_FILE_plus **f; -#ifdef _IO_MTSAFE_IO - _IO_lock_lock (list_all_lock); -#endif - for (f = &_IO_list_all; *f; f = (struct _IO_FILE_plus **) &(*f)->file._chain) - { - if (*f == fp) - { - *f = (struct _IO_FILE_plus *) fp->file._chain; - break; - } - } -#ifdef _IO_MTSAFE_IO - _IO_lock_unlock (list_all_lock); -#endif - fp->file._flags &= ~_IO_LINKED; - } -} - -void -_IO_link_in (fp) - struct _IO_FILE_plus *fp; -{ - if ((fp->file._flags & _IO_LINKED) == 0) - { - fp->file._flags |= _IO_LINKED; -#ifdef _IO_MTSAFE_IO - _IO_lock_lock (list_all_lock); -#endif - fp->file._chain = (_IO_FILE *) _IO_list_all; - _IO_list_all = fp; -#ifdef _IO_MTSAFE_IO - _IO_lock_unlock (list_all_lock); -#endif - } -} - -/* Return minimum _pos markers - Assumes the current get area is the main get area. */ -_IO_ssize_t _IO_least_marker __P ((_IO_FILE *fp, char *end_p)); - -_IO_ssize_t -_IO_least_marker (fp, end_p) - _IO_FILE *fp; - char *end_p; -{ - _IO_ssize_t least_so_far = end_p - fp->_IO_read_base; - struct _IO_marker *mark; - for (mark = fp->_markers; mark != NULL; mark = mark->_next) - if (mark->_pos < least_so_far) - least_so_far = mark->_pos; - return least_so_far; -} - -/* Switch current get area from backup buffer to (start of) main get area. */ - -void -_IO_switch_to_main_get_area (fp) - _IO_FILE *fp; -{ - char *tmp; - fp->_flags &= ~_IO_IN_BACKUP; - /* Swap _IO_read_end and _IO_save_end. */ - tmp = fp->_IO_read_end; - fp->_IO_read_end = fp->_IO_save_end; - fp->_IO_save_end= tmp; - /* Swap _IO_read_base and _IO_save_base. */ - tmp = fp->_IO_read_base; - fp->_IO_read_base = fp->_IO_save_base; - fp->_IO_save_base = tmp; - /* Set _IO_read_ptr. */ - fp->_IO_read_ptr = fp->_IO_read_base; -} - -/* Switch current get area from main get area to (end of) backup area. */ - -void -_IO_switch_to_backup_area (fp) - _IO_FILE *fp; -{ - char *tmp; - fp->_flags |= _IO_IN_BACKUP; - /* Swap _IO_read_end and _IO_save_end. */ - tmp = fp->_IO_read_end; - fp->_IO_read_end = fp->_IO_save_end; - fp->_IO_save_end = tmp; - /* Swap _IO_read_base and _IO_save_base. */ - tmp = fp->_IO_read_base; - fp->_IO_read_base = fp->_IO_save_base; - fp->_IO_save_base = tmp; - /* Set _IO_read_ptr. */ - fp->_IO_read_ptr = fp->_IO_read_end; -} - -int -_IO_switch_to_get_mode (fp) - _IO_FILE *fp; -{ - if (fp->_IO_write_ptr > fp->_IO_write_base) - if (_IO_OVERFLOW (fp, EOF) == EOF) - return EOF; - if (_IO_in_backup (fp)) - fp->_IO_read_base = fp->_IO_backup_base; - else - { - fp->_IO_read_base = fp->_IO_buf_base; - if (fp->_IO_write_ptr > fp->_IO_read_end) - fp->_IO_read_end = fp->_IO_write_ptr; - } - fp->_IO_read_ptr = fp->_IO_write_ptr; - - fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end = fp->_IO_read_ptr; - - fp->_flags &= ~_IO_CURRENTLY_PUTTING; - return 0; -} - -void -_IO_free_backup_area (fp) - _IO_FILE *fp; -{ - if (_IO_in_backup (fp)) - _IO_switch_to_main_get_area (fp); /* Just in case. */ - free (fp->_IO_save_base); - fp->_IO_save_base = NULL; - fp->_IO_save_end = NULL; - fp->_IO_backup_base = NULL; -} - -#if 0 -int -_IO_switch_to_put_mode (fp) - _IO_FILE *fp; -{ - fp->_IO_write_base = fp->_IO_read_ptr; - fp->_IO_write_ptr = fp->_IO_read_ptr; - /* Following is wrong if line- or un-buffered? */ - fp->_IO_write_end = (fp->_flags & _IO_IN_BACKUP - ? fp->_IO_read_end : fp->_IO_buf_end); - - fp->_IO_read_ptr = fp->_IO_read_end; - fp->_IO_read_base = fp->_IO_read_end; - - fp->_flags |= _IO_CURRENTLY_PUTTING; - return 0; -} -#endif - -int -__overflow (f, ch) - _IO_FILE *f; - int ch; -{ - /* This is a single-byte stream. */ - if (f->_mode == 0) - _IO_fwide (f, -1); - return _IO_OVERFLOW (f, ch); -} - -static int save_for_backup __P ((_IO_FILE *fp, char *end_p)) -#ifdef _LIBC - internal_function -#endif - ; - -static int -#ifdef _LIBC -internal_function -#endif -save_for_backup (fp, end_p) - _IO_FILE *fp; - char *end_p; -{ - /* Append [_IO_read_base..end_p] to backup area. */ - _IO_ssize_t least_mark = _IO_least_marker (fp, end_p); - /* needed_size is how much space we need in the backup area. */ - _IO_size_t needed_size = (end_p - fp->_IO_read_base) - least_mark; - /* FIXME: Dubious arithmetic if pointers are NULL */ - _IO_size_t current_Bsize = fp->_IO_save_end - fp->_IO_save_base; - _IO_size_t avail; /* Extra space available for future expansion. */ - _IO_ssize_t delta; - struct _IO_marker *mark; - if (needed_size > current_Bsize) - { - char *new_buffer; - avail = 100; - new_buffer = (char *) malloc (avail + needed_size); - if (new_buffer == NULL) - return EOF; /* FIXME */ - if (least_mark < 0) - { -#ifdef _LIBC - __mempcpy (__mempcpy (new_buffer + avail, - fp->_IO_save_end + least_mark, - -least_mark), - fp->_IO_read_base, - end_p - fp->_IO_read_base); -#else - memcpy (new_buffer + avail, - fp->_IO_save_end + least_mark, - -least_mark); - memcpy (new_buffer + avail - least_mark, - fp->_IO_read_base, - end_p - fp->_IO_read_base); -#endif - } - else - memcpy (new_buffer + avail, - fp->_IO_read_base + least_mark, - needed_size); - if (fp->_IO_save_base) - free (fp->_IO_save_base); - fp->_IO_save_base = new_buffer; - fp->_IO_save_end = new_buffer + avail + needed_size; - } - else - { - avail = current_Bsize - needed_size; - if (least_mark < 0) - { - memmove (fp->_IO_save_base + avail, - fp->_IO_save_end + least_mark, - -least_mark); - memcpy (fp->_IO_save_base + avail - least_mark, - fp->_IO_read_base, - end_p - fp->_IO_read_base); - } - else if (needed_size > 0) - memcpy (fp->_IO_save_base + avail, - fp->_IO_read_base + least_mark, - needed_size); - } - fp->_IO_backup_base = fp->_IO_save_base + avail; - /* Adjust all the streammarkers. */ - delta = end_p - fp->_IO_read_base; - for (mark = fp->_markers; mark != NULL; mark = mark->_next) - mark->_pos -= delta; - 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 (_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)) - _IO_free_backup_area (fp); - return _IO_UNDERFLOW (fp); -} - -int -__uflow (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, -11); - if (_IO_in_put_mode (fp)) - if (_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)) - _IO_free_backup_area (fp); - return _IO_UFLOW (fp); -} - -void -_IO_setb (f, b, eb, a) - _IO_FILE *f; - char *b; - char *eb; - int a; -{ - if (f->_IO_buf_base && !(f->_flags & _IO_USER_BUF)) - FREE_BUF (f->_IO_buf_base, _IO_blen (f)); - f->_IO_buf_base = b; - f->_IO_buf_end = eb; - if (a) - f->_flags &= ~_IO_USER_BUF; - else - f->_flags |= _IO_USER_BUF; -} - -void -_IO_doallocbuf (fp) - _IO_FILE *fp; -{ - if (fp->_IO_buf_base) - return; - if (!(fp->_flags & _IO_UNBUFFERED)) - if (_IO_DOALLOCATE (fp) != EOF) - return; - _IO_setb (fp, fp->_shortbuf, fp->_shortbuf+1, 0); -} - -int -_IO_default_underflow (fp) - _IO_FILE *fp; -{ - return EOF; -} - -int -_IO_default_uflow (fp) - _IO_FILE *fp; -{ - int ch = _IO_UNDERFLOW (fp); - if (ch == EOF) - return EOF; - return *(unsigned char *) fp->_IO_read_ptr++; -} - -_IO_size_t -_IO_default_xsputn (f, data, n) - _IO_FILE *f; - const void *data; - _IO_size_t n; -{ - const char *s = (char *) data; - _IO_size_t more = n; - if (more <= 0) - return 0; - for (;;) - { - /* Space available. */ - _IO_ssize_t count = f->_IO_write_end - f->_IO_write_ptr; - if (count > 0) - { - if ((_IO_size_t) count > more) - count = more; - if (count > 20) - { -#ifdef _LIBC - f->_IO_write_ptr = __mempcpy (f->_IO_write_ptr, s, count); -#else - memcpy (f->_IO_write_ptr, s, count); - f->_IO_write_ptr += count; -#endif - s += count; - } - else if (count <= 0) - count = 0; - else - { - char *p = f->_IO_write_ptr; - _IO_ssize_t i; - for (i = count; --i >= 0; ) - *p++ = *s++; - f->_IO_write_ptr = p; - } - more -= count; - } - if (more == 0 || _IO_OVERFLOW (f, (unsigned char) *s++) == EOF) - break; - more--; - } - return n - more; -} - -_IO_size_t -_IO_sgetn (fp, data, n) - _IO_FILE *fp; - void *data; - _IO_size_t n; -{ - /* FIXME handle putback buffer here! */ - return _IO_XSGETN (fp, data, n); -} - -_IO_size_t -_IO_default_xsgetn (fp, data, n) - _IO_FILE *fp; - void *data; - _IO_size_t n; -{ - _IO_size_t more = n; - char *s = (char*) data; - for (;;) - { - /* Data available. */ - _IO_ssize_t count = fp->_IO_read_end - fp->_IO_read_ptr; - if (count > 0) - { - if ((_IO_size_t) count > more) - count = more; - if (count > 20) - { -#ifdef _LIBC - s = __mempcpy (s, fp->_IO_read_ptr, count); -#else - memcpy (s, fp->_IO_read_ptr, count); - s += count; -#endif - fp->_IO_read_ptr += count; - } - else if (count <= 0) - count = 0; - else - { - char *p = fp->_IO_read_ptr; - int i = (int) count; - while (--i >= 0) - *s++ = *p++; - fp->_IO_read_ptr = p; - } - more -= count; - } - if (more == 0 || __underflow (fp) == EOF) - break; - } - return n - more; -} - -#if 0 -/* Seems not to be needed. --drepper */ -int -_IO_sync (fp) - _IO_FILE *fp; -{ - return 0; -} -#endif - -_IO_FILE * -_IO_default_setbuf (fp, p, len) - _IO_FILE *fp; - char *p; - _IO_ssize_t len; -{ - if (_IO_SYNC (fp) == EOF) - return NULL; - if (p == NULL || len == 0) - { - fp->_flags |= _IO_UNBUFFERED; - _IO_setb (fp, fp->_shortbuf, fp->_shortbuf+1, 0); - } - else - { - fp->_flags &= ~_IO_UNBUFFERED; - _IO_setb (fp, p, p+len, 0); - } - fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end = 0; - fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end = 0; - return fp; -} - -_IO_off64_t -_IO_default_seekpos (fp, pos, mode) - _IO_FILE *fp; - _IO_off64_t pos; - int mode; -{ - return _IO_SEEKOFF (fp, pos, 0, mode); -} - -int -_IO_default_doallocate (fp) - _IO_FILE *fp; -{ - char *buf; - - ALLOC_BUF (buf, _IO_BUFSIZ, EOF); - _IO_setb (fp, buf, buf+_IO_BUFSIZ, 1); - return 1; -} - -void -_IO_init (fp, flags) - _IO_FILE *fp; - int flags; -{ - _IO_no_init (fp, flags, -1, NULL, NULL); -} - -void -_IO_no_init (fp, flags, orientation, wd, jmp) - _IO_FILE *fp; - int flags; - int orientation; - struct _IO_wide_data *wd; - struct _IO_jump_t *jmp; -{ - fp->_flags = _IO_MAGIC|flags; - fp->_IO_buf_base = NULL; - fp->_IO_buf_end = NULL; - fp->_IO_read_base = NULL; - fp->_IO_read_ptr = NULL; - fp->_IO_read_end = NULL; - fp->_IO_write_base = NULL; - fp->_IO_write_ptr = NULL; - fp->_IO_write_end = NULL; - fp->_chain = NULL; /* Not necessary. */ - - fp->_IO_save_base = NULL; - fp->_IO_backup_base = NULL; - fp->_IO_save_end = NULL; - fp->_markers = NULL; - fp->_cur_column = 0; -#if _IO_JUMPS_OFFSET - fp->_vtable_offset = 0; -#endif -#ifdef _IO_MTSAFE_IO - _IO_lock_init (*fp->_lock); -#endif - fp->_mode = orientation; -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - if (orientation >= 0) - { - fp->_wide_data = wd; - fp->_wide_data->_IO_buf_base = NULL; - fp->_wide_data->_IO_buf_end = NULL; - fp->_wide_data->_IO_read_base = NULL; - fp->_wide_data->_IO_read_ptr = NULL; - fp->_wide_data->_IO_read_end = NULL; - fp->_wide_data->_IO_write_base = NULL; - fp->_wide_data->_IO_write_ptr = NULL; - fp->_wide_data->_IO_write_end = NULL; - fp->_wide_data->_IO_save_base = NULL; - fp->_wide_data->_IO_backup_base = NULL; - fp->_wide_data->_IO_save_end = NULL; - - fp->_wide_data->_wide_vtable = jmp; - } -#endif -} - -int -_IO_default_sync (fp) - _IO_FILE *fp; -{ - return 0; -} - -/* The way the C++ classes are mapped into the C functions in the - current implementation, this function can get called twice! */ - -void -_IO_default_finish (fp, dummy) - _IO_FILE *fp; - int dummy; -{ - struct _IO_marker *mark; - if (fp->_IO_buf_base && !(fp->_flags & _IO_USER_BUF)) - { - FREE_BUF (fp->_IO_buf_base, _IO_blen (fp)); - fp->_IO_buf_base = fp->_IO_buf_end = NULL; - } - - for (mark = fp->_markers; mark != NULL; mark = mark->_next) - mark->_sbuf = NULL; - - if (fp->_IO_save_base) - { - free (fp->_IO_save_base); - fp->_IO_save_base = NULL; - } - -#ifdef _IO_MTSAFE_IO - _IO_lock_fini (*fp->_lock); -#endif - - _IO_un_link ((struct _IO_FILE_plus *) fp); -} - -_IO_off64_t -_IO_default_seekoff (fp, offset, dir, mode) - _IO_FILE *fp; - _IO_off64_t offset; - int dir; - int mode; -{ - return _IO_pos_BAD; -} - -int -_IO_sputbackc (fp, c) - _IO_FILE *fp; - int c; -{ - int result; - - if (fp->_IO_read_ptr > fp->_IO_read_base - && (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c) - { - fp->_IO_read_ptr--; - result = (unsigned char) c; - } - else - result = _IO_PBACKFAIL (fp, c); - - if (result != EOF) - fp->_flags &= ~_IO_EOF_SEEN; - - return result; -} - -int -_IO_sungetc (fp) - _IO_FILE *fp; -{ - int result; - - if (fp->_IO_read_ptr > fp->_IO_read_base) - { - fp->_IO_read_ptr--; - result = (unsigned char) *fp->_IO_read_ptr; - } - else - result = _IO_PBACKFAIL (fp, EOF); - - if (result != EOF) - fp->_flags &= ~_IO_EOF_SEEN; - - return result; -} - -#if 0 /* Work in progress */ -/* Seems not to be needed. */ -#if 0 -void -_IO_set_column (fp, c) - _IO_FILE *fp; - int c; -{ - if (c == -1) - fp->_column = -1; - else - fp->_column = c - (fp->_IO_write_ptr - fp->_IO_write_base); -} -#else -int -_IO_set_column (fp, i) - _IO_FILE *fp; - int i; -{ - fp->_cur_column = i + 1; - return 0; -} -#endif -#endif - - -unsigned -_IO_adjust_column (start, line, count) - unsigned start; - const char *line; - int count; -{ - const char *ptr = line + count; - while (ptr > line) - if (*--ptr == '\n') - return line + count - ptr - 1; - return start + count; -} - -#if 0 -/* Seems not to be needed. --drepper */ -int -_IO_get_column (fp) - _IO_FILE *fp; -{ - if (fp->_cur_column) - return _IO_adjust_column (fp->_cur_column - 1, - fp->_IO_write_base, - fp->_IO_write_ptr - fp->_IO_write_base); - return -1; -} -#endif - -int -_IO_flush_all () -{ - int result = 0; - struct _IO_FILE *fp; - for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain) - if (((fp->_mode < 0 && fp->_IO_write_ptr > fp->_IO_write_base) -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - || (fp->_vtable_offset == 0 - && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr - > fp->_wide_data->_IO_write_base)) -#endif - ) - && _IO_OVERFLOW (fp, EOF) == EOF) - result = EOF; - return result; -} - -void -_IO_flush_all_linebuffered () -{ - struct _IO_FILE *fp; - for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain) - if ((fp->_flags & _IO_NO_WRITES) == 0 && fp->_flags & _IO_LINE_BUF) - _IO_OVERFLOW (fp, EOF); -} - -static void _IO_unbuffer_write __P ((void)); - -static void -_IO_unbuffer_write () -{ - struct _IO_FILE *fp; - for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain) - if (! (fp->_flags & _IO_UNBUFFERED) - && (! (fp->_flags & _IO_NO_WRITES) - || (fp->_flags & _IO_IS_APPENDING)) - /* Iff stream is un-orientated, it wasn't used. */ - && fp->_mode != 0) - _IO_SETBUF (fp, NULL, 0); -} - -int -_IO_cleanup () -{ - int result = _IO_flush_all (); - - /* We currently don't have a reliable mechanism for making sure that - C++ static destructors are executed in the correct order. - So it is possible that other static destructors might want to - write to cout - and they're supposed to be able to do so. - - The following will make the standard streambufs be unbuffered, - which forces any output from late destructors to be written out. */ - _IO_unbuffer_write (); - - return result; -} - - -void -_IO_init_marker (marker, fp) - struct _IO_marker *marker; - _IO_FILE *fp; -{ - marker->_sbuf = fp; - if (_IO_in_put_mode (fp)) - _IO_switch_to_get_mode (fp); - if (_IO_in_backup (fp)) - marker->_pos = fp->_IO_read_ptr - fp->_IO_read_end; - else - marker->_pos = fp->_IO_read_ptr - fp->_IO_read_base; - - /* Should perhaps sort the chain? */ - marker->_next = fp->_markers; - fp->_markers = marker; -} - -void -_IO_remove_marker (marker) - struct _IO_marker *marker; -{ - /* Unlink from sb's chain. */ - struct _IO_marker **ptr = &marker->_sbuf->_markers; - for (; ; ptr = &(*ptr)->_next) - { - if (*ptr == NULL) - break; - else if (*ptr == marker) - { - *ptr = marker->_next; - return; - } - } -#if 0 - if _sbuf has a backup area that is no longer needed, should we delete - it now, or wait until the next underflow? -#endif -} - -#define BAD_DELTA EOF - -int -_IO_marker_difference (mark1, mark2) - struct _IO_marker *mark1; - struct _IO_marker *mark2; -{ - return mark1->_pos - mark2->_pos; -} - -/* Return difference between MARK and current position of MARK's stream. */ -int -_IO_marker_delta (mark) - struct _IO_marker *mark; -{ - int cur_pos; - if (mark->_sbuf == NULL) - return BAD_DELTA; - if (_IO_in_backup (mark->_sbuf)) - cur_pos = mark->_sbuf->_IO_read_ptr - mark->_sbuf->_IO_read_end; - else - cur_pos = mark->_sbuf->_IO_read_ptr - mark->_sbuf->_IO_read_base; - return mark->_pos - cur_pos; -} - -int -_IO_seekmark (fp, mark, delta) - _IO_FILE *fp; - struct _IO_marker *mark; - int delta; -{ - if (mark->_sbuf != fp) - return EOF; - if (mark->_pos >= 0) - { - if (_IO_in_backup (fp)) - _IO_switch_to_main_get_area (fp); - fp->_IO_read_ptr = fp->_IO_read_base + mark->_pos; - } - else - { - if (!_IO_in_backup (fp)) - _IO_switch_to_backup_area (fp); - fp->_IO_read_ptr = fp->_IO_read_end + mark->_pos; - } - return 0; -} - -void -_IO_unsave_markers (fp) - _IO_FILE *fp; -{ - struct _IO_marker *mark = fp->_markers; - if (mark) - { -#ifdef TODO - streampos offset = seekoff (0, ios::cur, ios::in); - if (offset != EOF) - { - offset += eGptr () - Gbase (); - for ( ; mark != NULL; mark = mark->_next) - mark->set_streampos (mark->_pos + offset); - } - else - { - for ( ; mark != NULL; mark = mark->_next) - mark->set_streampos (EOF); - } -#endif - fp->_markers = 0; - } - - if (_IO_have_backup (fp)) - _IO_free_backup_area (fp); -} - -#if 0 -/* Seems not to be needed. --drepper */ -int -_IO_nobackup_pbackfail (fp, c) - _IO_FILE *fp; - int c; -{ - if (fp->_IO_read_ptr > fp->_IO_read_base) - fp->_IO_read_ptr--; - if (c != EOF && *fp->_IO_read_ptr != c) - *fp->_IO_read_ptr = c; - return (unsigned char) c; -} -#endif - -int -_IO_default_pbackfail (fp, c) - _IO_FILE *fp; - int c; -{ - if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp) - && (unsigned char) fp->_IO_read_ptr[-1] == c) - --fp->_IO_read_ptr; - else - { - /* Need to handle a filebuf in write mode (switch to read mode). FIXME!*/ - if (!_IO_in_backup (fp)) - { - /* We need to keep the invariant that the main get area - logically follows the backup area. */ - if (fp->_IO_read_ptr > fp->_IO_read_base && _IO_have_backup (fp)) - { - if (save_for_backup (fp, fp->_IO_read_ptr)) - return EOF; - } - else if (!_IO_have_backup (fp)) - { - /* No backup buffer: allocate one. */ - /* Use nshort buffer, if unused? (probably not) FIXME */ - int backup_size = 128; - char *bbuf = (char *) malloc (backup_size); - if (bbuf == NULL) - return EOF; - fp->_IO_save_base = bbuf; - fp->_IO_save_end = fp->_IO_save_base + backup_size; - fp->_IO_backup_base = fp->_IO_save_end; - } - fp->_IO_read_base = fp->_IO_read_ptr; - _IO_switch_to_backup_area (fp); - } - else if (fp->_IO_read_ptr <= fp->_IO_read_base) - { - /* Increase size of existing backup buffer. */ - _IO_size_t new_size; - _IO_size_t old_size = fp->_IO_read_end - fp->_IO_read_base; - char *new_buf; - new_size = 2 * old_size; - new_buf = (char *) malloc (new_size); - if (new_buf == NULL) - return EOF; - memcpy (new_buf + (new_size - old_size), fp->_IO_read_base, - old_size); - free (fp->_IO_read_base); - _IO_setg (fp, new_buf, new_buf + (new_size - old_size), - new_buf + new_size); - fp->_IO_backup_base = fp->_IO_read_ptr; - } - - *--fp->_IO_read_ptr = c; - } - return (unsigned char) c; -} - -_IO_off64_t -_IO_default_seek (fp, offset, dir) - _IO_FILE *fp; - _IO_off64_t offset; - int dir; -{ - return _IO_pos_BAD; -} - -int -_IO_default_stat (fp, st) - _IO_FILE *fp; - void* st; -{ - return EOF; -} - -_IO_ssize_t -_IO_default_read (fp, data, n) - _IO_FILE* fp; - void *data; - _IO_ssize_t n; -{ - return -1; -} - -_IO_ssize_t -_IO_default_write (fp, data, n) - _IO_FILE *fp; - const void *data; - _IO_ssize_t n; -{ - return 0; -} - -int -_IO_default_showmanyc (fp) - _IO_FILE *fp; -{ - return -1; -} - -void -_IO_default_imbue (fp, locale) - _IO_FILE *fp; - void *locale; -{ -} - -_IO_ITER -_IO_iter_begin() -{ - return (_IO_ITER) _IO_list_all; -} - -_IO_ITER -_IO_iter_end() -{ - return NULL; -} - -_IO_ITER -_IO_iter_next(iter) - _IO_ITER iter; -{ - return iter->_chain; -} - -_IO_FILE * -_IO_iter_file(iter) - _IO_ITER iter; -{ - return iter; -} - -void -_IO_list_lock() -{ -#ifdef _IO_MTSAFE_IO - _IO_lock_lock (list_all_lock); -#endif -} - -void -_IO_list_unlock() -{ -#ifdef _IO_MTSAFE_IO - _IO_lock_unlock (list_all_lock); -#endif -} - -void -_IO_list_resetlock() -{ -#ifdef _IO_MTSAFE_IO - _IO_lock_init (list_all_lock); -#endif -} - - -#ifdef TODO -#if defined(linux) -#define IO_CLEANUP ; -#endif - -#ifdef IO_CLEANUP - IO_CLEANUP -#else -struct __io_defs { - __io_defs() { } - ~__io_defs() { _IO_cleanup (); } -}; -__io_defs io_defs__; -#endif - -#endif /* TODO */ - -#ifdef weak_alias -weak_alias (_IO_cleanup, _cleanup) -#endif - -#ifdef text_set_element -text_set_element(__libc_atexit, _cleanup); -#endif diff --git a/contrib/libstdc++/libio/iofclose.c b/contrib/libstdc++/libio/iofclose.c deleted file mode 100644 index 43a3f5833fc5..000000000000 --- a/contrib/libstdc++/libio/iofclose.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 1993, 1995, 1997-1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -#include "libioP.h" -#ifdef __STDC__ -#include <stdlib.h> -#endif -#if _LIBC -# include "../iconv/gconv_int.h" -# include <shlib-compat.h> -#else -# define SHLIB_COMPAT(a, b, c) 0 -# define _IO_new_fclose fclose -#endif - -int -_IO_new_fclose (fp) - _IO_FILE *fp; -{ - int status; - - CHECK_FILE(fp, EOF); - -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) - /* We desperately try to help programs which are using streams in a - strange way and mix old and new functions. Detect old streams - here. */ - if (fp->_vtable_offset != 0) - return _IO_old_fclose (fp); -#endif - - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); - if (fp->_IO_file_flags & _IO_IS_FILEBUF) - status = _IO_file_close_it (fp); - else - status = fp->_flags & _IO_ERR_SEEN ? -1 : 0; - _IO_FINISH (fp); - _IO_funlockfile (fp); - if (fp->_mode > 0) - { -#if _LIBC - /* This stream has a wide orientation. This means we have to free - the conversion functions. */ - struct _IO_codecvt *cc = fp->_codecvt; - - if (cc->__cd_in.__cd.__steps->__shlib_handle != NULL) - { - --cc->__cd_in.__cd.__steps->__counter; - __gconv_close_transform (cc->__cd_in.__cd.__steps, 1); - } - if (cc->__cd_out.__cd.__steps->__shlib_handle != NULL) - { - --cc->__cd_out.__cd.__steps->__counter; - __gconv_close_transform (cc->__cd_out.__cd.__steps, 1); - } -#endif - } - _IO_cleanup_region_end (0); - if (_IO_have_backup (fp)) - _IO_free_backup_area (fp); - if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr) - { - fp->_IO_file_flags = 0; - free(fp); - } - - return status; -} - -#ifdef _LIBC -versioned_symbol (libc, _IO_new_fclose, _IO_fclose, GLIBC_2_1); -strong_alias (_IO_new_fclose, __new_fclose) -versioned_symbol (libc, __new_fclose, fclose, GLIBC_2_1); -#endif diff --git a/contrib/libstdc++/libio/iofopen.c b/contrib/libstdc++/libio/iofopen.c deleted file mode 100644 index 2dcdee0235cb..000000000000 --- a/contrib/libstdc++/libio/iofopen.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 1993, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -#include "libioP.h" -#ifdef __STDC__ -#include <stdlib.h> -#endif -#ifdef _LIBC -# include <shlib-compat.h> -#else -# define _IO_new_fopen fopen -#endif - -_IO_FILE * -_IO_new_fopen (filename, mode) - const char *filename; - const char *mode; -{ - struct locked_FILE - { - struct _IO_FILE_plus fp; -#ifdef _IO_MTSAFE_IO - _IO_lock_t lock; -#endif -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - struct _IO_wide_data wd; -#endif /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */ - } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); - - if (new_f == NULL) - return NULL; -#ifdef _IO_MTSAFE_IO - new_f->fp.file._lock = &new_f->lock; -#endif -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps); -#else - _IO_no_init (&new_f->fp.file, 1, 0, NULL, NULL); -#endif - _IO_JUMPS (&new_f->fp) = &_IO_file_jumps; - _IO_file_init (&new_f->fp); -#if !_IO_UNIFIED_JUMPTABLES - new_f->fp.vtable = NULL; -#endif - if (_IO_file_fopen ((_IO_FILE *) new_f, filename, mode, 1) != NULL) - return (_IO_FILE *) &new_f->fp; - _IO_un_link (&new_f->fp); - free (new_f); - return NULL; -} - -#ifdef _LIBC -strong_alias (_IO_new_fopen, __new_fopen) -versioned_symbol (libc, _IO_new_fopen, _IO_fopen, GLIBC_2_1); -versioned_symbol (libc, __new_fopen, fopen, GLIBC_2_1); -#endif diff --git a/contrib/libstdc++/libio/iofwide.c b/contrib/libstdc++/libio/iofwide.c deleted file mode 100644 index 76a20ce3fb43..000000000000 --- a/contrib/libstdc++/libio/iofwide.c +++ /dev/null @@ -1,476 +0,0 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -#include <libioP.h> -#ifdef _LIBC -# include <dlfcn.h> -# include <wchar.h> -# include <locale/localeinfo.h> -# include <wcsmbs/wcsmbsload.h> -# include <iconv/gconv_int.h> -#endif -#include <stdlib.h> -#include <string.h> - -#if defined(_LIBC) || defined(_GLIBCPP_USE_WCHAR_T) -# include <langinfo.h> -#endif - -#ifdef _GLIBCPP_USE_WCHAR_T -/* Prototypes of libio's codecvt functions. */ -static enum __codecvt_result do_out (struct _IO_codecvt *codecvt, - __c_mbstate_t *statep, - const wchar_t *from_start, - const wchar_t *from_end, - const wchar_t **from_stop, char *to_start, - char *to_end, char **to_stop); -static enum __codecvt_result do_unshift (struct _IO_codecvt *codecvt, - __c_mbstate_t *statep, char *to_start, - char *to_end, char **to_stop); -static enum __codecvt_result do_in (struct _IO_codecvt *codecvt, - __c_mbstate_t *statep, - const char *from_start, - const char *from_end, - const char **from_stop, wchar_t *to_start, - wchar_t *to_end, wchar_t **to_stop); -static int do_encoding (struct _IO_codecvt *codecvt); -static int do_length (struct _IO_codecvt *codecvt, __c_mbstate_t *statep, - const char *from_start, - const char *from_end, _IO_size_t max); -static int do_max_length (struct _IO_codecvt *codecvt); -static int do_always_noconv (struct _IO_codecvt *codecvt); - - -/* The functions used in `codecvt' for libio are always the same. */ -struct _IO_codecvt __libio_codecvt = -{ - .__codecvt_destr = NULL, /* Destructor, never used. */ - .__codecvt_do_out = do_out, - .__codecvt_do_unshift = do_unshift, - .__codecvt_do_in = do_in, - .__codecvt_do_encoding = do_encoding, - .__codecvt_do_always_noconv = do_always_noconv, - .__codecvt_do_length = do_length, - .__codecvt_do_max_length = do_max_length -}; - - -#ifdef _LIBC -static struct __gconv_trans_data libio_translit = -{ - .__trans_fct = __gconv_transliterate -}; -#endif -#endif /* defined(GLIBCPP_USE_WCHAR_T) */ - -/* 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); - - 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; - - /* Set the orientation appropriately. */ - if (mode > 0) - { -#ifdef _GLIBCPP_USE_WCHAR_T - struct _IO_codecvt *cc = fp->_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; - -#ifdef _LIBC - /* Get the character conversion functions based on the currently - selected locale for LC_CTYPE. */ - { - struct gconv_fcts fcts; - - /* Clear the state. We start all over again. */ - memset (&fp->_wide_data->_IO_state, '\0', sizeof (__c_mbstate_t)); - memset (&fp->_wide_data->_IO_last_state, '\0', sizeof (__c_mbstate_t)); - - __wcsmbs_clone_conv (&fcts); - - /* The functions are always the same. */ - *cc = __libio_codecvt; - - cc->__cd_in.__cd.__nsteps = 1; /* Only one step allowed. */ - cc->__cd_in.__cd.__steps = fcts.towc; - - cc->__cd_in.__cd.__data[0].__invocation_counter = 0; - cc->__cd_in.__cd.__data[0].__internal_use = 1; - cc->__cd_in.__cd.__data[0].__flags = __GCONV_IS_LAST; - cc->__cd_in.__cd.__data[0].__statep = &fp->_wide_data->_IO_state; - - /* XXX For now no transliteration. */ - cc->__cd_in.__cd.__data[0].__trans = NULL; - - cc->__cd_out.__cd.__nsteps = 1; /* Only one step allowed. */ - cc->__cd_out.__cd.__steps = fcts.tomb; - - cc->__cd_out.__cd.__data[0].__invocation_counter = 0; - cc->__cd_out.__cd.__data[0].__internal_use = 1; - cc->__cd_out.__cd.__data[0].__flags = __GCONV_IS_LAST; - cc->__cd_out.__cd.__data[0].__statep = &fp->_wide_data->_IO_state; - - /* And now the transliteration. */ - cc->__cd_out.__cd.__data[0].__trans = &libio_translit; - } -#else -# ifdef _GLIBCPP_USE_WCHAR_T - { - /* Determine internal and external character sets. - XXX For now we make our life easy: we assume a fixed internal - encoding (as most sane systems have; hi HP/UX!). If somebody - cares about systems which changing internal charsets they - should come up with a solution for the determination of the - currently used internal character set. */ -#if 0 - const char *internal_ccs = _G_INTERNAL_CCS; - const char *external_ccs = nl_langinfo(CODESET); - - if (external_ccs == NULL) - external_ccs = "ISO-8859-1"; - - cc->__cd_in = iconv_open (internal_ccs, external_ccs); - if (cc->__cd_in != (iconv_t) -1) - cc->__cd_out = iconv_open (external_ccs, internal_ccs); -#endif - } -# else -# error "somehow determine this from LC_CTYPE" -# endif -#endif - - /* From now on use the wide character callback functions. */ - ((struct _IO_FILE_plus *) fp)->vtable = fp->_wide_data->_wide_vtable; -#else /* !defined(_GLIBCPP_USE_WCHAR_T) */ - mode = fp->_mode; -#endif /* !defined(_GLIBCPP_USE_WCHAR_T) */ - } - - /* Set the mode now. */ - fp->_mode = mode; - - return mode; -} - -#ifdef weak_alias -weak_alias (_IO_fwide, fwide) -#endif - -#ifdef _GLIBCPP_USE_WCHAR_T - -static enum __codecvt_result -do_out (struct _IO_codecvt *codecvt, __c_mbstate_t *statep, - const wchar_t *from_start, const wchar_t *from_end, - const wchar_t **from_stop, char *to_start, char *to_end, - char **to_stop) -{ - enum __codecvt_result result; - -#ifdef _LIBC - struct __gconv_step *gs = codecvt->__cd_out.__cd.__steps; - int status; - size_t dummy; - const unsigned char *from_start_copy = (unsigned char *) from_start; - - codecvt->__cd_out.__cd.__data[0].__outbuf = to_start; - codecvt->__cd_out.__cd.__data[0].__outbufend = to_end; - codecvt->__cd_out.__cd.__data[0].__statep = statep; - - status = DL_CALL_FCT (gs->__fct, - (gs, codecvt->__cd_out.__cd.__data, &from_start_copy, - (const unsigned char *) from_end, NULL, - &dummy, 0, 0)); - - *from_stop = (wchar_t *) from_start_copy; - *to_stop = codecvt->__cd_out.__cd.__data[0].__outbuf; - - switch (status) - { - case __GCONV_OK: - case __GCONV_EMPTY_INPUT: - result = __codecvt_ok; - break; - - case __GCONV_FULL_OUTPUT: - case __GCONV_INCOMPLETE_INPUT: - result = __codecvt_partial; - break; - - default: - result = __codecvt_error; - break; - } -#else -# ifdef _GLIBCPP_USE_WCHAR_T - size_t res; - const char *from_start_copy = (const char *) from_start; - size_t from_len = from_end - from_start; - char *to_start_copy = to_start; - size_t to_len = to_end - to_start; - res = iconv (codecvt->__cd_out, &from_start_copy, &from_len, - &to_start_copy, &to_len); - - if (res == 0 || from_len == 0) - result = __codecvt_ok; - else if (to_len < codecvt->__codecvt_do_max_length (codecvt)) - result = __codecvt_partial; - else - result = __codecvt_error; - -# else - /* Decide what to do. */ - result = __codecvt_error; -# endif -#endif - - return result; -} - - -static enum __codecvt_result -do_unshift (struct _IO_codecvt *codecvt, __c_mbstate_t *statep, - char *to_start, char *to_end, char **to_stop) -{ - enum __codecvt_result result; - -#ifdef _LIBC - struct __gconv_step *gs = codecvt->__cd_out.__cd.__steps; - int status; - size_t dummy; - - codecvt->__cd_out.__cd.__data[0].__outbuf = to_start; - codecvt->__cd_out.__cd.__data[0].__outbufend = to_end; - codecvt->__cd_out.__cd.__data[0].__statep = statep; - - status = DL_CALL_FCT (gs->__fct, - (gs, codecvt->__cd_out.__cd.__data, NULL, NULL, - NULL, &dummy, 1, 0)); - - *to_stop = codecvt->__cd_out.__cd.__data[0].__outbuf; - - switch (status) - { - case __GCONV_OK: - case __GCONV_EMPTY_INPUT: - result = __codecvt_ok; - break; - - case __GCONV_FULL_OUTPUT: - case __GCONV_INCOMPLETE_INPUT: - result = __codecvt_partial; - break; - - default: - result = __codecvt_error; - break; - } -#else -# ifdef _GLIBCPP_USE_WCHAR_T - size_t res; - char *to_start_copy = (char *) to_start; - size_t to_len = to_end - to_start; - - res = iconv (codecvt->__cd_out, NULL, NULL, &to_start_copy, &to_len); - - if (res == 0) - result = __codecvt_ok; - else if (to_len < codecvt->__codecvt_do_max_length (codecvt)) - result = __codecvt_partial; - else - result = __codecvt_error; -# else - /* Decide what to do. */ - result = __codecvt_error; -# endif -#endif - - return result; -} - - -static enum __codecvt_result -do_in (struct _IO_codecvt *codecvt, __c_mbstate_t *statep, - const char *from_start, const char *from_end, const char **from_stop, - wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop) -{ - enum __codecvt_result result; - -#ifdef _LIBC - struct __gconv_step *gs = codecvt->__cd_in.__cd.__steps; - int status; - size_t dummy; - const unsigned char *from_start_copy = (unsigned char *) from_start; - - codecvt->__cd_in.__cd.__data[0].__outbuf = (char *) to_start; - codecvt->__cd_in.__cd.__data[0].__outbufend = (char *) to_end; - codecvt->__cd_in.__cd.__data[0].__statep = statep; - - status = DL_CALL_FCT (gs->__fct, - (gs, codecvt->__cd_in.__cd.__data, &from_start_copy, - from_end, NULL, &dummy, 0, 0)); - - *from_stop = from_start_copy; - *to_stop = (wchar_t *) codecvt->__cd_in.__cd.__data[0].__outbuf; - - switch (status) - { - case __GCONV_OK: - case __GCONV_EMPTY_INPUT: - result = __codecvt_ok; - break; - - case __GCONV_FULL_OUTPUT: - case __GCONV_INCOMPLETE_INPUT: - result = __codecvt_partial; - break; - - default: - result = __codecvt_error; - break; - } -#else -# ifdef _GLIBCPP_USE_WCHAR_T - size_t res; - const char *from_start_copy = (const char *) from_start; - size_t from_len = from_end - from_start; - char *to_start_copy = (char *) from_start; - size_t to_len = to_end - to_start; - - res = iconv (codecvt->__cd_in, &from_start_copy, &from_len, - &to_start_copy, &to_len); - - if (res == 0) - result = __codecvt_ok; - else if (to_len == 0) - result = __codecvt_partial; - else if (from_len < codecvt->__codecvt_do_max_length (codecvt)) - result = __codecvt_partial; - else - result = __codecvt_error; -# else - /* Decide what to do. */ - result = __codecvt_error; -# endif -#endif - - return result; -} - - -static int -do_encoding (struct _IO_codecvt *codecvt) -{ -#ifdef _LIBC - /* See whether the encoding is stateful. */ - if (codecvt->__cd_in.__cd.__steps[0].__stateful) - return -1; - /* Fortunately not. Now determine the input bytes for the conversion - necessary for each wide character. */ - if (codecvt->__cd_in.__cd.__steps[0].__min_needed_from - != codecvt->__cd_in.__cd.__steps[0].__max_needed_from) - /* Not a constant value. */ - return 0; - - return codecvt->__cd_in.__cd.__steps[0].__min_needed_from; -#else - /* Worst case scenario. */ - return -1; -#endif -} - - -static int -do_always_noconv (struct _IO_codecvt *codecvt) -{ - return 0; -} - - -static int -do_length (struct _IO_codecvt *codecvt, __c_mbstate_t *statep, - const char *from_start, const char *from_end, _IO_size_t max) -{ - int result; -#ifdef _LIBC - const unsigned char *cp = (const unsigned char *) from_start; - wchar_t to_buf[max]; - struct __gconv_step *gs = codecvt->__cd_in.__cd.__steps; - int status; - size_t dummy; - - codecvt->__cd_in.__cd.__data[0].__outbuf = (char *) to_buf; - codecvt->__cd_in.__cd.__data[0].__outbufend = (char *) &to_buf[max]; - codecvt->__cd_in.__cd.__data[0].__statep = statep; - - status = DL_CALL_FCT (gs->__fct, - (gs, codecvt->__cd_in.__cd.__data, &cp, from_end, - NULL, &dummy, 0, 0)); - - result = cp - (const unsigned char *) from_start; -#else -# ifdef _GLIBCPP_USE_WCHAR_T - const char *from_start_copy = (const char *) from_start; - size_t from_len = from_end - from_start; - wchar_t to_buf[max]; - size_t res; - char *to_start = (char *) to_buf; - - res = iconv (codecvt->__cd_in, &from_start_copy, &from_len, - &to_start, &max); - - result = from_start_copy - (char *) from_start; -# else - /* Decide what to do. */ - result = 0; -# endif -#endif - - return result; -} - - -static int -do_max_length (struct _IO_codecvt *codecvt) -{ -#ifdef _LIBC - return codecvt->__cd_in.__cd.__steps[0].__max_needed_from; -#else - return MB_CUR_MAX; -#endif -} - -#endif /* defined(_GLIBCPP_USE_WCHAR_T) */ diff --git a/contrib/libstdc++/libio/iolibio.h b/contrib/libstdc++/libio/iolibio.h deleted file mode 100644 index 61be4b73b94d..000000000000 --- a/contrib/libstdc++/libio/iolibio.h +++ /dev/null @@ -1,82 +0,0 @@ -#include "libio.h" - -/* These emulate stdio functionality, but with a different name - (_IO_ungetc instead of ungetc), and using _IO_FILE instead of FILE. */ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int _IO_fclose __P((_IO_FILE*)); -extern int _IO_new_fclose __P((_IO_FILE*)); -extern int _IO_old_fclose __P((_IO_FILE*)); -extern _IO_FILE *_IO_fdopen __P((int, const char*)); -extern _IO_FILE *_IO_old_fdopen __P((int, const char*)); -extern _IO_FILE *_IO_new_fdopen __P((int, const char*)); -extern int _IO_fflush __P((_IO_FILE*)); -extern int _IO_fgetpos __P((_IO_FILE*, _IO_fpos_t*)); -extern int _IO_fgetpos64 __P((_IO_FILE*, _IO_fpos64_t*)); -extern char* _IO_fgets __P((char*, int, _IO_FILE*)); -extern _IO_FILE *_IO_fopen __P((const char*, const char*)); -extern _IO_FILE *_IO_old_fopen __P((const char*, const char*)); -extern _IO_FILE *_IO_new_fopen __P((const char*, const char*)); -extern _IO_FILE *_IO_fopen64 __P((const char*, const char*)); -extern int _IO_fprintf __P((_IO_FILE*, const char*, ...)); -extern int _IO_fputs __P((const char*, _IO_FILE*)); -extern int _IO_fsetpos __P((_IO_FILE*, const _IO_fpos_t *)); -extern int _IO_fsetpos64 __P((_IO_FILE*, const _IO_fpos64_t *)); -extern long int _IO_ftell __P((_IO_FILE*)); -extern _IO_size_t _IO_fread __P((void*, _IO_size_t, _IO_size_t, _IO_FILE*)); -extern _IO_size_t _IO_fwrite __P((const void*, - _IO_size_t, _IO_size_t, _IO_FILE*)); -extern char* _IO_gets __P((char*)); -extern void _IO_perror __P((const char*)); -extern int _IO_printf __P((const char*, ...)); -extern int _IO_puts __P((const char*)); -extern int _IO_scanf __P((const char*, ...)); -extern void _IO_setbuffer __P((_IO_FILE *, char*, _IO_size_t)); -extern int _IO_setvbuf __P((_IO_FILE*, char*, int, _IO_size_t)); -extern int _IO_sscanf __P((const char*, const char*, ...)); -extern int _IO_sprintf __P((char *, const char*, ...)); -extern int _IO_ungetc __P((int, _IO_FILE*)); -extern int _IO_vsscanf __P((const char *, const char *, _IO_va_list)); -extern int _IO_vsprintf __P((char*, const char*, _IO_va_list)); -extern int _IO_vswprintf __P((wchar_t*, _IO_size_t, const wchar_t*, - _IO_va_list)); - -struct obstack; -extern int _IO_obstack_vprintf __P ((struct obstack *, const char *, - _IO_va_list)); -extern int _IO_obstack_printf __P ((struct obstack *, const char *, ...)); -#ifndef _IO_pos_BAD -#define _IO_pos_BAD ((_IO_off64_t)(-1)) -#endif -#define _IO_clearerr(FP) ((FP)->_flags &= ~(_IO_ERR_SEEN|_IO_EOF_SEEN)) -#define _IO_fseek(__fp, __offset, __whence) \ - (_IO_seekoff(__fp, __offset, __whence, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD ? EOF : 0) -#define _IO_rewind(FILE) (void)_IO_seekoff(FILE, 0, 0, _IOS_INPUT|_IOS_OUTPUT) -#define _IO_vprintf(FORMAT, ARGS) _IO_vfprintf(_IO_stdout, FORMAT, ARGS) -#define _IO_freopen(FILENAME, MODE, FP) \ - (_IO_file_close_it(FP), _IO_file_fopen(FP, FILENAME, MODE, 0)) -#define _IO_old_freopen(FILENAME, MODE, FP) \ - (_IO_old_file_close_it (FP), _IO_old_file_fopen(FP, FILENAME, MODE)) -#define _IO_freopen64(FILENAME, MODE, FP) \ - (_IO_file_close_it(FP), _IO_file_fopen(FP, FILENAME, MODE, 1)) -#define _IO_fileno(FP) ((FP)->_fileno) -extern _IO_FILE* _IO_popen __P((const char*, const char*)); -extern _IO_FILE* _IO_new_popen __P((const char*, const char*)); -extern _IO_FILE* _IO_old_popen __P((const char*, const char*)); -extern int __new_pclose __P((_IO_FILE *)); -extern int __old_pclose __P((_IO_FILE *)); -#define _IO_pclose _IO_fclose -#define _IO_setbuf(_FP, _BUF) _IO_setbuffer(_FP, _BUF, _IO_BUFSIZ) -#define _IO_setlinebuf(_FP) _IO_setvbuf(_FP, NULL, 1, 0) - -_IO_FILE *__new_freopen __P ((const char *, const char *, _IO_FILE *)); -_IO_FILE *__old_freopen __P ((const char *, const char *, _IO_FILE *)); - -#ifdef __cplusplus -} -#endif - - diff --git a/contrib/libstdc++/libio/libio.h b/contrib/libstdc++/libio/libio.h deleted file mode 100644 index e2a2a15bcb0d..000000000000 --- a/contrib/libstdc++/libio/libio.h +++ /dev/null @@ -1,511 +0,0 @@ -/* Copyright (C) 1991,92,93,94,95,97,98,99,2000,2001 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - Written by Per Bothner <bothner@cygnus.com>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -#ifndef _IO_STDIO_H -#define _IO_STDIO_H - -#include <_G_config.h> -/* ALL of these should be defined in _G_config.h */ -#define _IO_pos_t _G_fpos_t /* obsolete */ -#define _IO_fpos_t _G_fpos_t -#define _IO_fpos64_t _G_fpos64_t -#define _IO_size_t _G_size_t -#define _IO_ssize_t _G_ssize_t -#define _IO_off_t _G_off_t -#define _IO_off64_t _G_off64_t -#define _IO_pid_t _G_pid_t -#define _IO_uid_t _G_uid_t -#define _IO_iconv_t _G_iconv_t -#define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT -#define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE -#define _IO_BUFSIZ _G_BUFSIZ -#define _IO_va_list _G_va_list -#define _IO_wint_t _G_wint_t - -#ifdef _G_NEED_STDARG_H -/* This define avoids name pollution if we're using GNU stdarg.h */ -# define __need___va_list -# include <stdarg.h> -# ifdef __GNUC_VA_LIST -# undef _IO_va_list -# define _IO_va_list __gnuc_va_list -# endif /* __GNUC_VA_LIST */ -#endif - -#ifndef __THROW -# ifdef __cplusplus -# define __THROW throw () -# else -# define __THROW -# endif -#endif /* not __THROW */ - -#ifndef __P -# define __P(p) p __THROW -#endif /* not __P */ - -#ifndef __PMT -# define __PMT(p) p -#endif /* not __PMT */ - -/* For backward compatibility */ -#ifndef _PARAMS -# define _PARAMS(protos) __P(protos) -#endif /*!_PARAMS*/ - -#ifndef __STDC__ -# ifndef const -# define const -# endif -#endif -#define _IO_UNIFIED_JUMPTABLES 1 -#ifndef _G_HAVE_PRINTF_FP -# define _IO_USE_DTOA 1 -#endif - -#ifndef EOF -# define EOF (-1) -#endif -#ifndef NULL -# if defined __GNUG__ && \ - (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) -# define NULL (__null) -# else -# if !defined(__cplusplus) -# define NULL ((void*)0) -# else -# define NULL (0) -# endif -# endif -#endif - -#define _IOS_INPUT 1 -#define _IOS_OUTPUT 2 -#define _IOS_ATEND 4 -#define _IOS_APPEND 8 -#define _IOS_TRUNC 16 -#define _IOS_NOCREATE 32 -#define _IOS_NOREPLACE 64 -#define _IOS_BIN 128 - -/* Magic numbers and bits for the _flags field. - The magic numbers use the high-order bits of _flags; - the remaining bits are available for variable flags. - Note: The magic numbers must all be negative if stdio - emulation is desired. */ - -#define _IO_MAGIC 0xFBAD0000 /* Magic number */ -#define _OLD_STDIO_MAGIC 0xFABC0000 /* Emulate old stdio. */ -#define _IO_MAGIC_MASK 0xFFFF0000 -#define _IO_USER_BUF 1 /* User owns buffer; don't delete it on close. */ -#define _IO_UNBUFFERED 2 -#define _IO_NO_READS 4 /* Reading not allowed */ -#define _IO_NO_WRITES 8 /* Writing not allowd */ -#define _IO_EOF_SEEN 0x10 -#define _IO_ERR_SEEN 0x20 -#define _IO_DELETE_DONT_CLOSE 0x40 /* Don't call close(_fileno) on cleanup. */ -#define _IO_LINKED 0x80 /* Set if linked (using _chain) to streambuf::_list_all.*/ -#define _IO_IN_BACKUP 0x100 -#define _IO_LINE_BUF 0x200 -#define _IO_TIED_PUT_GET 0x400 /* Set if put and get pointer logicly tied. */ -#define _IO_CURRENTLY_PUTTING 0x800 -#define _IO_IS_APPENDING 0x1000 -#define _IO_IS_FILEBUF 0x2000 -#define _IO_BAD_SEEN 0x4000 -#define _IO_USER_LOCK 0x8000 - -/* These are "formatting flags" matching the iostream fmtflags enum values. */ -#define _IO_SKIPWS 01 -#define _IO_LEFT 02 -#define _IO_RIGHT 04 -#define _IO_INTERNAL 010 -#define _IO_DEC 020 -#define _IO_OCT 040 -#define _IO_HEX 0100 -#define _IO_SHOWBASE 0200 -#define _IO_SHOWPOINT 0400 -#define _IO_UPPERCASE 01000 -#define _IO_SHOWPOS 02000 -#define _IO_SCIENTIFIC 04000 -#define _IO_FIXED 010000 -#define _IO_UNITBUF 020000 -#define _IO_STDIO 040000 -#define _IO_DONT_CLOSE 0100000 -#define _IO_BOOLALPHA 0200000 - - -struct _IO_jump_t; struct _IO_FILE; - -/* Handle lock. */ -#ifdef _IO_MTSAFE_IO -# if defined __GLIBC__ && __GLIBC__ >= 2 -# if __GLIBC_MINOR__ == 0 -# include <stdio-lock.h> -# else -# include <bits/stdio-lock.h> -# endif -# else -/*# include <comthread.h>*/ -# endif -#else -typedef void _IO_lock_t; -#endif - - -/* A streammarker remembers a position in a buffer. */ - -struct _IO_marker { - struct _IO_marker *_next; - struct _IO_FILE *_sbuf; - /* If _pos >= 0 - it points to _buf->Gbase()+_pos. FIXME comment */ - /* if _pos < 0, it points to _buf->eBptr()+_pos. FIXME comment */ - int _pos; -#if 0 - void set_streampos(streampos sp) { _spos = sp; } - void set_offset(int offset) { _pos = offset; _spos = (streampos)(-2); } - public: - streammarker(streambuf *sb); - ~streammarker(); - int saving() { return _spos == -2; } - int delta(streammarker&); - int delta(); -#endif -}; - -/* This is the structure from the libstdc++ codecvt class. */ -enum __codecvt_result -{ - __codecvt_ok, - __codecvt_partial, - __codecvt_error, - __codecvt_noconv -}; - -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -/* The order of the elements in the following struct must match the order - of the virtual functions in the libstdc++ codecvt class. */ -struct _IO_codecvt -{ - void (*__codecvt_destr) (struct _IO_codecvt *); - enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *, - __c_mbstate_t *, - const wchar_t *, - const wchar_t *, - const wchar_t **, char *, - char *, char **); - enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *, - __c_mbstate_t *, char *, - char *, char **); - enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *, - __c_mbstate_t *, - const char *, const char *, - const char **, wchar_t *, - wchar_t *, wchar_t **); - int (*__codecvt_do_encoding) (struct _IO_codecvt *); - int (*__codecvt_do_always_noconv) (struct _IO_codecvt *); - int (*__codecvt_do_length) (struct _IO_codecvt *, __c_mbstate_t *, - const char *, const char *, _IO_size_t); - int (*__codecvt_do_max_length) (struct _IO_codecvt *); - - _IO_iconv_t __cd_in; - _IO_iconv_t __cd_out; -}; - -/* Extra data for wide character streams. */ -struct _IO_wide_data -{ - wchar_t *_IO_read_ptr; /* Current read pointer */ - wchar_t *_IO_read_end; /* End of get area. */ - wchar_t *_IO_read_base; /* Start of putback+get area. */ - wchar_t *_IO_write_base; /* Start of put area. */ - wchar_t *_IO_write_ptr; /* Current put pointer. */ - wchar_t *_IO_write_end; /* End of put area. */ - wchar_t *_IO_buf_base; /* Start of reserve area. */ - wchar_t *_IO_buf_end; /* End of reserve area. */ - /* The following fields are used to support backing up and undo. */ - wchar_t *_IO_save_base; /* Pointer to start of non-current get area. */ - wchar_t *_IO_backup_base; /* Pointer to first valid character of - backup area */ - wchar_t *_IO_save_end; /* Pointer to end of non-current get area. */ - -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - __c_mbstate_t _IO_state; - __c_mbstate_t _IO_last_state; -#endif - struct _IO_codecvt _codecvt; - - wchar_t _shortbuf[1]; - -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - struct _IO_jump_t *_wide_vtable; -#endif -}; -#else /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */ -/* Because _IO_no_init unconditionally takes a `_IO_wide_data*' as its - last parameter we must still define this type. We intentionally - leave it incomplete to prevent any use of this type when we are not - supporting wide characters. */ -struct _IO_wide_data; -#endif /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */ - -struct _IO_FILE { - int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ -#define _IO_file_flags _flags - - /* The following pointers correspond to the C++ streambuf protocol. */ - /* Note: Tk uses the _IO_read_ptr and _IO_read_end fields directly. */ - char* _IO_read_ptr; /* Current read pointer */ - char* _IO_read_end; /* End of get area. */ - char* _IO_read_base; /* Start of putback+get area. */ - char* _IO_write_base; /* Start of put area. */ - char* _IO_write_ptr; /* Current put pointer. */ - char* _IO_write_end; /* End of put area. */ - char* _IO_buf_base; /* Start of reserve area. */ - char* _IO_buf_end; /* End of reserve area. */ - /* The following fields are used to support backing up and undo. */ - char *_IO_save_base; /* Pointer to start of non-current get area. */ - char *_IO_backup_base; /* Pointer to first valid character of backup area */ - char *_IO_save_end; /* Pointer to end of non-current get area. */ - - struct _IO_marker *_markers; - - struct _IO_FILE *_chain; - - int _fileno; - int _blksize; - _IO_off_t _old_offset; /* This used to be _offset but it's too small. */ - -#define __HAVE_COLUMN /* temporary */ - /* 1+column number of pbase(); 0 is unknown. */ - unsigned short _cur_column; - signed char _vtable_offset; - char _shortbuf[1]; - - /* char* _save_gptr; char* _save_egptr; */ - - _IO_lock_t *_lock; -#ifdef _IO_USE_OLD_IO_FILE -}; - -struct _IO_FILE_complete -{ - struct _IO_FILE _file; -#endif -#if defined _G_IO_IO_FILE_VERSION && _G_IO_IO_FILE_VERSION == 0x20001 - _IO_off64_t _offset; -# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - /* Wide character stream stuff. */ - struct _IO_codecvt *_codecvt; - struct _IO_wide_data *_wide_data; -# else - void *__pad1; - void *__pad2; -# endif - int _mode; - /* Make sure we don't get into trouble again. */ - char _unused2[15 * sizeof (int) - 2 * sizeof (void *)]; -#endif -}; - -#ifndef __cplusplus -typedef struct _IO_FILE _IO_FILE; -#endif - -struct _IO_FILE_plus; - -extern struct _IO_FILE_plus _IO_2_1_stdin_; -extern struct _IO_FILE_plus _IO_2_1_stdout_; -extern struct _IO_FILE_plus _IO_2_1_stderr_; -#ifndef _LIBC -#define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_)) -#define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_)) -#define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_)) -#else -extern _IO_FILE *_IO_stdin; -extern _IO_FILE *_IO_stdout; -extern _IO_FILE *_IO_stderr; -#endif - - -/* Functions to do I/O and file management for a stream. */ - -/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF. - Return number of bytes read. */ -typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); - -/* Write N bytes pointed to by BUF to COOKIE. Write all N bytes - unless there is an error. Return number of bytes written, or -1 if - there is an error without writing anything. If the file has been - opened for append (__mode.__append set), then set the file pointer - to the end of the file and then do the write; if not, just write at - the current file pointer. */ -typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, - size_t __n); - -/* Move COOKIE's file position to *POS bytes from the - beginning of the file (if W is SEEK_SET), - the current position (if W is SEEK_CUR), - or the end of the file (if W is SEEK_END). - Set *POS to the new file position. - Returns zero if successful, nonzero if not. */ -typedef int __io_seek_fn (void *__cookie, _IO_off64_t *__pos, int __w); - -/* Close COOKIE. */ -typedef int __io_close_fn (void *__cookie); - - -#ifdef _GNU_SOURCE -/* User-visible names for the above. */ -typedef __io_read_fn cookie_read_function_t; -typedef __io_write_fn cookie_write_function_t; -typedef __io_seek_fn cookie_seek_function_t; -typedef __io_close_fn cookie_close_function_t; - -/* The structure with the cookie function pointers. */ -typedef struct -{ - __io_read_fn *read; /* Read bytes. */ - __io_write_fn *write; /* Write bytes. */ - __io_seek_fn *seek; /* Seek/tell file position. */ - __io_close_fn *close; /* Close file. */ -} _IO_cookie_io_functions_t; -typedef _IO_cookie_io_functions_t cookie_io_functions_t; - -struct _IO_cookie_file; - -/* Initialize one of those. */ -extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, - void *__cookie, _IO_cookie_io_functions_t __fns); -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -extern int __underflow (_IO_FILE *) __THROW; -extern int __uflow (_IO_FILE *) __THROW; -extern int __overflow (_IO_FILE *, int) __THROW; -extern _IO_wint_t __wunderflow (_IO_FILE *) __THROW; -extern _IO_wint_t __wuflow (_IO_FILE *) __THROW; -extern _IO_wint_t __woverflow (_IO_FILE *, _IO_wint_t) __THROW; - -#define _IO_getc_unlocked(_fp) \ - ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end ? __uflow (_fp) \ - : *(unsigned char *) (_fp)->_IO_read_ptr++) -#define _IO_peekc_unlocked(_fp) \ - ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end \ - && __underflow (_fp) == EOF ? EOF \ - : *(unsigned char *) (_fp)->_IO_read_ptr) -#define _IO_putc_unlocked(_ch, _fp) \ - (((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) \ - ? __overflow (_fp, (unsigned char) (_ch)) \ - : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch))) - -#define _IO_getwc_unlocked(_fp) \ - ((_fp)->_wide_data->_IO_read_ptr >= (_fp)->_wide_data->_IO_read_end \ - ? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++) -#define _IO_putwc_unlocked(_wch, _fp) \ - ((_fp)->_wide_data->_IO_write_ptr >= (_fp)->_wide_data->_IO_write_end \ - ? __woverflow (_fp, _wch) \ - : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch))) - -#define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0) -#define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0) - -extern int _IO_getc (_IO_FILE *__fp) __THROW; -extern int _IO_putc (int __c, _IO_FILE *__fp) __THROW; -extern int _IO_feof (_IO_FILE *__fp) __THROW; -extern int _IO_ferror (_IO_FILE *__fp) __THROW; - -extern int _IO_peekc_locked (_IO_FILE *__fp) __THROW; - -/* This one is for Emacs. */ -#define _IO_PENDING_OUTPUT_COUNT(_fp) \ - ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base) - -extern void _IO_flockfile (_IO_FILE *) __THROW; -extern void _IO_funlockfile (_IO_FILE *) __THROW; -extern int _IO_ftrylockfile (_IO_FILE *) __THROW; - -#ifdef _IO_MTSAFE_IO -# define _IO_peekc(_fp) _IO_peekc_locked (_fp) -#else -# define _IO_peekc(_fp) _IO_peekc_unlocked (_fp) -# define _IO_flockfile(_fp) /**/ -# define _IO_funlockfile(_fp) /**/ -# define _IO_ftrylockfile(_fp) /**/ -# define _IO_cleanup_region_start(_fct, _fp) /**/ -# define _IO_cleanup_region_end(_Doit) /**/ -#endif /* !_IO_MTSAFE_IO */ - -extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, - _IO_va_list, int *__restrict) __THROW; -extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, - _IO_va_list) __THROW; -extern _IO_ssize_t _IO_padn (_IO_FILE *, int, _IO_ssize_t) __THROW; -extern _IO_size_t _IO_sgetn (_IO_FILE *, void *, _IO_size_t) __THROW; - -extern _IO_off64_t _IO_seekoff (_IO_FILE *, _IO_off64_t, int, int) __THROW; -extern _IO_off64_t _IO_seekpos (_IO_FILE *, _IO_off64_t, int) __THROW; - -extern void _IO_free_backup_area (_IO_FILE *) __THROW; - -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -extern _IO_wint_t _IO_getwc (_IO_FILE *__fp) __THROW; -extern _IO_wint_t _IO_putwc (wchar_t __wc, _IO_FILE *__fp) __THROW; -extern int _IO_fwide (_IO_FILE *__fp, int __mode) __THROW; -# if __GNUC__ >= 2 -/* A special optimized version of the function above. It optimizes the - case of initializing an unoriented byte stream. */ -# define _IO_fwide(__fp, __mode) \ - ({ int __result = (__mode); \ - if (__result < 0) \ - { \ - if ((__fp)->_mode == 0) \ - /* We know that all we have to do is to set the flag. */ \ - (__fp)->_mode = -1; \ - __result = (__fp)->_mode; \ - } \ - else \ - __result = _IO_fwide (__fp, __result); \ - __result; }) -# endif - -extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict, - _IO_va_list, int *__restrict) __THROW; -extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict, - _IO_va_list) __THROW; -extern _IO_ssize_t _IO_wpadn (_IO_FILE *, wint_t, _IO_ssize_t) __THROW; -extern void _IO_free_wbackup_area (_IO_FILE *) __THROW; -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _IO_STDIO_H */ diff --git a/contrib/libstdc++/libio/libioP.h b/contrib/libstdc++/libio/libioP.h deleted file mode 100644 index 4aecf4eaa1b2..000000000000 --- a/contrib/libstdc++/libio/libioP.h +++ /dev/null @@ -1,821 +0,0 @@ -/* Copyright (C) 1993, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -# include <errno.h> - -#ifndef __set_errno -# define __set_errno(Val) errno = (Val) -#endif -#if defined __GLIBC__ && __GLIBC__ >= 2 -# include <bits/libc-lock.h> -#else -/*# include <comthread.h>*/ -#endif - -#include "iolibio.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define _IO_seek_set 0 -#define _IO_seek_cur 1 -#define _IO_seek_end 2 - -/* THE JUMPTABLE FUNCTIONS. - - * The _IO_FILE type is used to implement the FILE type in GNU libc, - * as well as the streambuf class in GNU iostreams for C++. - * These are all the same, just used differently. - * An _IO_FILE (or FILE) object is allows followed by a pointer to - * a jump table (of pointers to functions). The pointer is accessed - * with the _IO_JUMPS macro. The jump table has a eccentric format, - * so as to be compatible with the layout of a C++ virtual function table. - * (as implemented by g++). When a pointer to a streambuf object is - * coerced to an (_IO_FILE*), then _IO_JUMPS on the result just - * happens to point to the virtual function table of the streambuf. - * Thus the _IO_JUMPS function table used for C stdio/libio does - * double duty as the virtual function table for C++ streambuf. - * - * The entries in the _IO_JUMPS function table (and hence also the - * virtual functions of a streambuf) are described below. - * The first parameter of each function entry is the _IO_FILE/streambuf - * object being acted on (i.e. the 'this' parameter). - */ - -#if (!defined _IO_USE_OLD_IO_FILE \ - && (!defined _G_IO_NO_BACKWARD_COMPAT || _G_IO_NO_BACKWARD_COMPAT == 0)) -# define _IO_JUMPS_OFFSET 1 -#endif - -#define _IO_JUMPS(THIS) (THIS)->vtable -#define _IO_WIDE_JUMPS(THIS) ((struct _IO_FILE *) (THIS))->_wide_data->_wide_vtable -#define _IO_CHECK_WIDE(THIS) (((struct _IO_FILE *) (THIS))->_wide_data != NULL) - -#if _IO_JUMPS_OFFSET -# define _IO_JUMPS_FUNC(THIS) \ - (*(struct _IO_jump_t **) ((void *) &_IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) \ - + (THIS)->_vtable_offset)) -#else -# define _IO_JUMPS_FUNC(THIS) _IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) -#endif -#define _IO_WIDE_JUMPS_FUNC(THIS) _IO_WIDE_JUMPS(THIS) -#if _G_USING_THUNKS -# define JUMP_FIELD(TYPE, NAME) TYPE NAME -# define JUMP0(FUNC, THIS) _IO_JUMPS_FUNC(THIS)->FUNC (THIS) -# define JUMP1(FUNC, THIS, X1) _IO_JUMPS_FUNC(THIS)->FUNC (THIS, X1) -# define JUMP2(FUNC, THIS, X1, X2) _IO_JUMPS_FUNC(THIS)->FUNC (THIS, X1, X2) -# define JUMP3(FUNC, THIS, X1,X2,X3) _IO_JUMPS_FUNC(THIS)->FUNC (THIS, X1,X2, X3) -# define JUMP_INIT(NAME, VALUE) VALUE -# define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0), JUMP_INIT (dummy2, 0) - -# define WJUMP0(FUNC, THIS) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS) -# define WJUMP1(FUNC, THIS, X1) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS, X1) -# define WJUMP2(FUNC, THIS, X1, X2) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS, X1, X2) -# define WJUMP3(FUNC, THIS, X1,X2,X3) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS, X1,X2, X3) -#else -/* These macros will change when we re-implement vtables to use "thunks"! */ -# define JUMP_FIELD(TYPE, NAME) struct { short delta1, delta2; TYPE pfn; } NAME -# define JUMP0(FUNC, THIS) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS) -# define JUMP1(FUNC, THIS, X1) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1) -# define JUMP2(FUNC, THIS, X1, X2) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1, X2) -# define JUMP3(FUNC, THIS, X1,X2,X3) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1,X2,X3) -# define JUMP_INIT(NAME, VALUE) {0, 0, VALUE} -# define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0) - -# define WJUMP0(FUNC, THIS) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS) -# define WJUMP1(FUNC, THIS, X1) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1) -# define WJUMP2(FUNC, THIS, X1, X2) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1, X2) -# define WJUMP3(FUNC, THIS, X1,X2,X3) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1,X2,X3) -#endif - -/* The 'finish' function does any final cleaning up of an _IO_FILE object. - It does not delete (free) it, but does everything else to finalize it. - It matches the streambuf::~streambuf virtual destructor. */ -typedef void (*_IO_finish_t) __PMT ((_IO_FILE *, int)); /* finalize */ -#define _IO_FINISH(FP) JUMP1 (__finish, FP, 0) -#define _IO_WFINISH(FP) WJUMP1 (__finish, FP, 0) - -/* The 'overflow' hook flushes the buffer. - The second argument is a character, or EOF. - It matches the streambuf::overflow virtual function. */ -typedef int (*_IO_overflow_t) __PMT ((_IO_FILE *, int)); -#define _IO_OVERFLOW(FP, CH) JUMP1 (__overflow, FP, CH) -#define _IO_WOVERFLOW(FP, CH) WJUMP1 (__overflow, FP, CH) - -/* The 'underflow' hook tries to fills the get buffer. - It returns the next character (as an unsigned char) or EOF. The next - character remains in the get buffer, and the get position is not changed. - It matches the streambuf::underflow virtual function. */ -typedef int (*_IO_underflow_t) __PMT ((_IO_FILE *)); -#define _IO_UNDERFLOW(FP) JUMP0 (__underflow, FP) -#define _IO_WUNDERFLOW(FP) WJUMP0 (__underflow, FP) - -/* The 'uflow' hook returns the next character in the input stream - (cast to unsigned char), and increments the read position; - EOF is returned on failure. - It matches the streambuf::uflow virtual function, which is not in the - cfront implementation, but was added to C++ by the ANSI/ISO committee. */ -#define _IO_UFLOW(FP) JUMP0 (__uflow, FP) -#define _IO_WUFLOW(FP) WJUMP0 (__uflow, FP) - -/* The 'pbackfail' hook handles backing up. - It matches the streambuf::pbackfail virtual function. */ -typedef int (*_IO_pbackfail_t) __PMT ((_IO_FILE *, int)); -#define _IO_PBACKFAIL(FP, CH) JUMP1 (__pbackfail, FP, CH) -#define _IO_WPBACKFAIL(FP, CH) WJUMP1 (__pbackfail, FP, CH) - -/* The 'xsputn' hook writes upto N characters from buffer DATA. - Returns the number of character actually written. - It matches the streambuf::xsputn virtual function. */ -typedef _IO_size_t (*_IO_xsputn_t) __PMT ((_IO_FILE *FP, const void *DATA, - _IO_size_t N)); -#define _IO_XSPUTN(FP, DATA, N) JUMP2 (__xsputn, FP, DATA, N) -#define _IO_WXSPUTN(FP, DATA, N) WJUMP2 (__xsputn, FP, DATA, N) - -/* The 'xsgetn' hook reads upto N characters into buffer DATA. - Returns the number of character actually read. - It matches the streambuf::xsgetn virtual function. */ -typedef _IO_size_t (*_IO_xsgetn_t) __PMT ((_IO_FILE *FP, void *DATA, - _IO_size_t N)); -#define _IO_XSGETN(FP, DATA, N) JUMP2 (__xsgetn, FP, DATA, N) -#define _IO_WXSGETN(FP, DATA, N) WJUMP2 (__xsgetn, FP, DATA, N) - -/* The 'seekoff' hook moves the stream position to a new position - relative to the start of the file (if DIR==0), the current position - (MODE==1), or the end of the file (MODE==2). - It matches the streambuf::seekoff virtual function. - It is also used for the ANSI fseek function. */ -typedef _IO_off64_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off64_t OFF, - int DIR, int MODE)); -#define _IO_SEEKOFF(FP, OFF, DIR, MODE) JUMP3 (__seekoff, FP, OFF, DIR, MODE) -#define _IO_WSEEKOFF(FP, OFF, DIR, MODE) WJUMP3 (__seekoff, FP, OFF, DIR, MODE) - -/* The 'seekpos' hook also moves the stream position, - but to an absolute position given by a fpos64_t (seekpos). - It matches the streambuf::seekpos virtual function. - It is also used for the ANSI fgetpos and fsetpos functions. */ -/* The _IO_seek_cur and _IO_seek_end options are not allowed. */ -typedef _IO_off64_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_off64_t, int)); -#define _IO_SEEKPOS(FP, POS, FLAGS) JUMP2 (__seekpos, FP, POS, FLAGS) -#define _IO_WSEEKPOS(FP, POS, FLAGS) WJUMP2 (__seekpos, FP, POS, FLAGS) - -/* The 'setbuf' hook gives a buffer to the file. - It matches the streambuf::setbuf virtual function. */ -typedef _IO_FILE* (*_IO_setbuf_t) __PMT ((_IO_FILE *, char *, _IO_ssize_t)); -#define _IO_SETBUF(FP, BUFFER, LENGTH) JUMP2 (__setbuf, FP, BUFFER, LENGTH) -#define _IO_WSETBUF(FP, BUFFER, LENGTH) WJUMP2 (__setbuf, FP, BUFFER, LENGTH) - -/* The 'sync' hook attempts to synchronize the internal data structures - of the file with the external state. - It matches the streambuf::sync virtual function. */ -typedef int (*_IO_sync_t) __PMT ((_IO_FILE *)); -#define _IO_SYNC(FP) JUMP0 (__sync, FP) -#define _IO_WSYNC(FP) WJUMP0 (__sync, FP) - -/* The 'doallocate' hook is used to tell the file to allocate a buffer. - It matches the streambuf::doallocate virtual function, which is not - in the ANSI/ISO C++ standard, but is part traditional implementations. */ -typedef int (*_IO_doallocate_t) __PMT ((_IO_FILE *)); -#define _IO_DOALLOCATE(FP) JUMP0 (__doallocate, FP) -#define _IO_WDOALLOCATE(FP) WJUMP0 (__doallocate, FP) - -/* The following four hooks (sysread, syswrite, sysclose, sysseek, and - sysstat) are low-level hooks specific to this implementation. - There is no correspondence in the ANSI/ISO C++ standard library. - The hooks basically correspond to the Unix system functions - (read, write, close, lseek, and stat) except that a _IO_FILE* - parameter is used instead of a integer file descriptor; the default - implementation used for normal files just calls those functions. - The advantage of overriding these functions instead of the higher-level - ones (underflow, overflow etc) is that you can leave all the buffering - higher-level functions. */ - -/* The 'sysread' hook is used to read data from the external file into - an existing buffer. It generalizes the Unix read(2) function. - It matches the streambuf::sys_read virtual function, which is - specific to this implementation. */ -typedef _IO_ssize_t (*_IO_read_t) __PMT ((_IO_FILE *, void *, _IO_ssize_t)); -#define _IO_SYSREAD(FP, DATA, LEN) JUMP2 (__read, FP, DATA, LEN) -#define _IO_WSYSREAD(FP, DATA, LEN) WJUMP2 (__read, FP, DATA, LEN) - -/* The 'syswrite' hook is used to write data from an existing buffer - to an external file. It generalizes the Unix write(2) function. - It matches the streambuf::sys_write virtual function, which is - specific to this implementation. */ -typedef _IO_ssize_t (*_IO_write_t) __PMT ((_IO_FILE *, const void *, - _IO_ssize_t)); -#define _IO_SYSWRITE(FP, DATA, LEN) JUMP2 (__write, FP, DATA, LEN) -#define _IO_WSYSWRITE(FP, DATA, LEN) WJUMP2 (__write, FP, DATA, LEN) - -/* The 'sysseek' hook is used to re-position an external file. - It generalizes the Unix lseek(2) function. - It matches the streambuf::sys_seek virtual function, which is - specific to this implementation. */ -typedef _IO_off64_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off64_t, int)); -#define _IO_SYSSEEK(FP, OFFSET, MODE) JUMP2 (__seek, FP, OFFSET, MODE) -#define _IO_WSYSSEEK(FP, OFFSET, MODE) WJUMP2 (__seek, FP, OFFSET, MODE) - -/* The 'sysclose' hook is used to finalize (close, finish up) an - external file. It generalizes the Unix close(2) function. - It matches the streambuf::sys_close virtual function, which is - specific to this implementation. */ -typedef int (*_IO_close_t) __PMT ((_IO_FILE *)); /* finalize */ -#define _IO_SYSCLOSE(FP) JUMP0 (__close, FP) -#define _IO_WSYSCLOSE(FP) WJUMP0 (__close, FP) - -/* The 'sysstat' hook is used to get information about an external file - into a struct stat buffer. It generalizes the Unix fstat(2) call. - It matches the streambuf::sys_stat virtual function, which is - specific to this implementation. */ -typedef int (*_IO_stat_t) __PMT ((_IO_FILE *, void *)); -#define _IO_SYSSTAT(FP, BUF) JUMP1 (__stat, FP, BUF) -#define _IO_WSYSSTAT(FP, BUF) WJUMP1 (__stat, FP, BUF) - -/* The 'showmany' hook can be used to get an image how much input is - available. In many cases the answer will be 0 which means unknown - but some cases one can provide real information. */ -typedef int (*_IO_showmanyc_t) __PMT ((_IO_FILE *)); -#define _IO_SHOWMANYC(FP) JUMP0 (__showmanyc, FP) -#define _IO_WSHOWMANYC(FP) WJUMP0 (__showmanyc, FP) - -/* The 'imbue' hook is used to get information about the currently - installed locales. */ -typedef void (*_IO_imbue_t) __PMT ((_IO_FILE *, void *)); -#define _IO_IMBUE(FP, LOCALE) JUMP1 (__imbue, FP, LOCALE) -#define _IO_WIMBUE(FP, LOCALE) WJUMP1 (__imbue, FP, LOCALE) - - -#define _IO_CHAR_TYPE char /* unsigned char ? */ -#define _IO_INT_TYPE int - -struct _IO_jump_t -{ - JUMP_FIELD(_G_size_t, __dummy); -#if _G_USING_THUNKS - JUMP_FIELD(_G_size_t, __dummy2); -#endif - JUMP_FIELD(_IO_finish_t, __finish); - JUMP_FIELD(_IO_overflow_t, __overflow); - JUMP_FIELD(_IO_underflow_t, __underflow); - JUMP_FIELD(_IO_underflow_t, __uflow); - JUMP_FIELD(_IO_pbackfail_t, __pbackfail); - /* showmany */ - JUMP_FIELD(_IO_xsputn_t, __xsputn); - JUMP_FIELD(_IO_xsgetn_t, __xsgetn); - JUMP_FIELD(_IO_seekoff_t, __seekoff); - JUMP_FIELD(_IO_seekpos_t, __seekpos); - JUMP_FIELD(_IO_setbuf_t, __setbuf); - JUMP_FIELD(_IO_sync_t, __sync); - JUMP_FIELD(_IO_doallocate_t, __doallocate); - JUMP_FIELD(_IO_read_t, __read); - JUMP_FIELD(_IO_write_t, __write); - JUMP_FIELD(_IO_seek_t, __seek); - JUMP_FIELD(_IO_close_t, __close); - JUMP_FIELD(_IO_stat_t, __stat); - JUMP_FIELD(_IO_showmanyc_t, __showmanyc); - JUMP_FIELD(_IO_imbue_t, __imbue); -#if 0 - get_column; - set_column; -#endif -}; - -/* We always allocate an extra word following an _IO_FILE. - This contains a pointer to the function jump table used. - This is for compatibility with C++ streambuf; the word can - be used to smash to a pointer to a virtual function table. */ - -struct _IO_FILE_plus -{ - _IO_FILE file; - const struct _IO_jump_t *vtable; -}; - -/* Special file type for fopencookie function. */ -struct _IO_cookie_file -{ - struct _IO_FILE_plus __fp; - void *__cookie; - _IO_cookie_io_functions_t __io_functions; -}; - -/* Iterator type for walking global linked list of _IO_FILE objects. */ - -typedef struct _IO_FILE *_IO_ITER; - -/* Generic functions */ - -extern void _IO_switch_to_main_get_area __P ((_IO_FILE *)); -extern void _IO_switch_to_backup_area __P ((_IO_FILE *)); -extern int _IO_switch_to_get_mode __P ((_IO_FILE *)); -extern void _IO_init __P ((_IO_FILE *, int)); -extern int _IO_sputbackc __P ((_IO_FILE *, int)); -extern int _IO_sungetc __P ((_IO_FILE *)); -extern void _IO_un_link __P ((struct _IO_FILE_plus *)); -extern void _IO_link_in __P ((struct _IO_FILE_plus *)); -extern void _IO_doallocbuf __P ((_IO_FILE *)); -extern void _IO_unsave_markers __P ((_IO_FILE *)); -extern void _IO_setb __P ((_IO_FILE *, char *, char *, int)); -extern unsigned _IO_adjust_column __P ((unsigned, const char *, int)); -#define _IO_sputn(__fp, __s, __n) _IO_XSPUTN (__fp, __s, __n) - -extern void _IO_switch_to_main_wget_area __P ((_IO_FILE *)); -extern void _IO_switch_to_wbackup_area __P ((_IO_FILE *)); -extern int _IO_switch_to_wget_mode __P ((_IO_FILE *)); -extern void _IO_wsetb __P ((_IO_FILE *, wchar_t *, wchar_t *, int)); -extern wint_t _IO_sputbackwc __P ((_IO_FILE *, wint_t)); -extern wint_t _IO_sungetwc __P ((_IO_FILE *)); -extern void _IO_wdoallocbuf __P ((_IO_FILE *)); -extern void _IO_unsave_wmarkers __P ((_IO_FILE *)); -extern unsigned _IO_adjust_wcolumn __P ((unsigned, const wchar_t *, int)); - -/* Marker-related function. */ - -extern void _IO_init_marker __P ((struct _IO_marker *, _IO_FILE *)); -extern void _IO_init_wmarker __P ((struct _IO_marker *, _IO_FILE *)); -extern void _IO_remove_marker __P ((struct _IO_marker *)); -extern int _IO_marker_difference __P ((struct _IO_marker *, - struct _IO_marker *)); -extern int _IO_marker_delta __P ((struct _IO_marker *)); -extern int _IO_wmarker_delta __P ((struct _IO_marker *)); -extern int _IO_seekmark __P ((_IO_FILE *, struct _IO_marker *, int)); -extern int _IO_seekwmark __P ((_IO_FILE *, struct _IO_marker *, int)); - -/* Functions for iterating global list and dealing with - its lock */ - -extern _IO_ITER _IO_iter_begin __P ((void)); -extern _IO_ITER _IO_iter_end __P ((void)); -extern _IO_ITER _IO_iter_next __P ((_IO_ITER)); -extern _IO_FILE *_IO_iter_file __P ((_IO_ITER)); -extern void _IO_list_lock __P ((void)); -extern void _IO_list_unlock __P ((void)); -extern void _IO_list_resetlock __P ((void)); - -/* Default jumptable functions. */ - -extern int _IO_default_underflow __P ((_IO_FILE *)); -extern int _IO_default_uflow __P ((_IO_FILE *)); -extern wint_t _IO_wdefault_uflow __P ((_IO_FILE *)); -extern int _IO_default_doallocate __P ((_IO_FILE *)); -extern int _IO_wdefault_doallocate __P ((_IO_FILE *)); -extern void _IO_default_finish __P ((_IO_FILE *, int)); -extern void _IO_wdefault_finish __P ((_IO_FILE *, int)); -extern int _IO_default_pbackfail __P ((_IO_FILE *, int)); -extern wint_t _IO_wdefault_pbackfail __P ((_IO_FILE *, wint_t)); -extern _IO_FILE* _IO_default_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t)); -extern _IO_FILE* _IO_wdefault_setbuf __P ((_IO_FILE *, wchar_t *, - _IO_ssize_t)); -extern _IO_size_t _IO_default_xsputn __P ((_IO_FILE *, const void *, - _IO_size_t)); -extern _IO_size_t _IO_wdefault_xsputn __P ((_IO_FILE *, const void *, - _IO_size_t)); -extern _IO_size_t _IO_default_xsgetn __P ((_IO_FILE *, void *, _IO_size_t)); -extern _IO_size_t _IO_wdefault_xsgetn __P ((_IO_FILE *, void *, _IO_size_t)); -extern _IO_off64_t _IO_default_seekoff __P ((_IO_FILE *, - _IO_off64_t, int, int)); -extern _IO_off64_t _IO_default_seekpos __P ((_IO_FILE *, _IO_off64_t, int)); -extern _IO_ssize_t _IO_default_write __P ((_IO_FILE *, const void *, - _IO_ssize_t)); -extern _IO_ssize_t _IO_default_read __P ((_IO_FILE *, void *, _IO_ssize_t)); -extern int _IO_default_stat __P ((_IO_FILE *, void *)); -extern _IO_off64_t _IO_default_seek __P ((_IO_FILE *, _IO_off64_t, int)); -extern int _IO_default_sync __P ((_IO_FILE *)); -#define _IO_default_close ((_IO_close_t) _IO_default_sync) -extern int _IO_default_showmanyc __P ((_IO_FILE *)); -extern void _IO_default_imbue __P ((_IO_FILE *, void *)); - -extern struct _IO_jump_t _IO_file_jumps; -extern struct _IO_jump_t _IO_wfile_jumps; -extern struct _IO_jump_t _IO_old_file_jumps; -extern struct _IO_jump_t _IO_streambuf_jumps; -extern struct _IO_jump_t _IO_proc_jumps; -extern struct _IO_jump_t _IO_old_proc_jumps; -extern struct _IO_jump_t _IO_str_jumps; -extern struct _IO_jump_t _IO_wstr_jumps; -extern struct _IO_codecvt __libio_codecvt; -extern int _IO_do_write __P ((_IO_FILE *, const char *, _IO_size_t)); -extern int _IO_new_do_write __P ((_IO_FILE *, const char *, _IO_size_t)); -extern int _IO_old_do_write __P ((_IO_FILE *, const char *, _IO_size_t)); -extern int _IO_wdo_write __P ((_IO_FILE *, const wchar_t *, _IO_size_t)); -extern int _IO_flush_all __P ((void)); -extern int _IO_cleanup __P ((void)); -extern void _IO_flush_all_linebuffered __P ((void)); -extern int _IO_new_fgetpos __P ((_IO_FILE *, _IO_fpos_t *)); -extern int _IO_old_fgetpos __P ((_IO_FILE *, _IO_fpos_t *)); -extern int _IO_new_fsetpos __P ((_IO_FILE *, const _IO_fpos_t *)); -extern int _IO_old_fsetpos __P ((_IO_FILE *, const _IO_fpos_t *)); -extern int _IO_new_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *)); -extern int _IO_old_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *)); -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 defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -# define _IO_do_flush(_f) \ - ((_f)->_mode <= 0 \ - ? _IO_do_write(_f, (_f)->_IO_write_base, \ - (_f)->_IO_write_ptr-(_f)->_IO_write_base) \ - : _IO_wdo_write(_f, (_f)->_wide_data->_IO_write_base, \ - ((_f)->_wide_data->_IO_write_ptr \ - - (_f)->_wide_data->_IO_write_base))) -#else -# define _IO_do_flush(_f) \ - _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) -#define _IO_in_put_mode(_fp) ((_fp)->_flags & _IO_CURRENTLY_PUTTING) -#define _IO_mask_flags(fp, f, mask) \ - ((fp)->_flags = ((fp)->_flags & ~(mask)) | ((f) & (mask))) -#define _IO_setg(fp, eb, g, eg) ((fp)->_IO_read_base = (eb),\ - (fp)->_IO_read_ptr = (g), (fp)->_IO_read_end = (eg)) -#define _IO_wsetg(fp, eb, g, eg) ((fp)->_wide_data->_IO_read_base = (eb),\ - (fp)->_wide_data->_IO_read_ptr = (g), \ - (fp)->_wide_data->_IO_read_end = (eg)) -#define _IO_setp(__fp, __p, __ep) \ - ((__fp)->_IO_write_base = (__fp)->_IO_write_ptr \ - = __p, (__fp)->_IO_write_end = (__ep)) -#define _IO_wsetp(__fp, __p, __ep) \ - ((__fp)->_wide_data->_IO_write_base \ - = (__fp)->_wide_data->_IO_write_ptr = __p, \ - (__fp)->_wide_data->_IO_write_end = (__ep)) -#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL) -#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL) -#define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP) -#define _IO_have_markers(fp) ((fp)->_markers != NULL) -#define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base) -#define _IO_wblen(fp) ((fp)->_wide_data->_IO_buf_end \ - - (fp)->_wide_data->_IO_buf_base) - -/* Jumptable functions for files. */ - -extern int _IO_file_doallocate __P ((_IO_FILE *)); -extern _IO_FILE* _IO_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t)); -extern _IO_off64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int)); -extern _IO_size_t _IO_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t)); -extern _IO_size_t _IO_file_xsgetn __P ((_IO_FILE *, void *, _IO_size_t)); -extern int _IO_file_stat __P ((_IO_FILE *, void *)); -extern int _IO_file_close __P ((_IO_FILE *)); -extern int _IO_file_underflow __P ((_IO_FILE *)); -extern int _IO_file_overflow __P ((_IO_FILE *, int)); -#define _IO_file_is_open(__fp) ((__fp)->_fileno != -1) -extern void _IO_file_init __P ((struct _IO_FILE_plus *)); -extern _IO_FILE* _IO_file_attach __P ((_IO_FILE *, int)); -extern _IO_FILE* _IO_file_open __P ((_IO_FILE *, const char *, int, int, - int, int)); -extern _IO_FILE* _IO_file_fopen __P ((_IO_FILE *, const char *, const char *, - int)); -extern _IO_ssize_t _IO_file_write __P ((_IO_FILE *, const void *, - _IO_ssize_t)); -extern _IO_ssize_t _IO_file_read __P ((_IO_FILE *, void *, _IO_ssize_t)); -extern int _IO_file_sync __P ((_IO_FILE *)); -extern int _IO_file_close_it __P ((_IO_FILE *)); -extern _IO_off64_t _IO_file_seek __P ((_IO_FILE *, _IO_off64_t, int)); -extern void _IO_file_finish __P ((_IO_FILE *, int)); - -extern _IO_FILE* _IO_new_file_attach __P ((_IO_FILE *, int)); -extern int _IO_new_file_close_it __P ((_IO_FILE *)); -extern void _IO_new_file_finish __P ((_IO_FILE *, int)); -extern _IO_FILE* _IO_new_file_fopen __P ((_IO_FILE *, const char *, const char *, - int)); -extern void _IO_no_init __P ((_IO_FILE *, int, int, struct _IO_wide_data *, - struct _IO_jump_t *)); -extern void _IO_new_file_init __P ((struct _IO_FILE_plus *)); -extern _IO_FILE* _IO_new_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t)); -extern int _IO_new_file_sync __P ((_IO_FILE *)); -extern int _IO_new_file_underflow __P ((_IO_FILE *)); -extern int _IO_new_file_overflow __P ((_IO_FILE *, int)); -extern _IO_off64_t _IO_new_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int)); -extern _IO_ssize_t _IO_new_file_write __P ((_IO_FILE *, const void *, - _IO_ssize_t)); -extern _IO_size_t _IO_new_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t)); - -extern _IO_FILE* _IO_old_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t)); -extern _IO_off64_t _IO_old_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, - int)); -extern _IO_size_t _IO_old_file_xsputn __P ((_IO_FILE *, const void *, - _IO_size_t)); -extern int _IO_old_file_underflow __P ((_IO_FILE *)); -extern int _IO_old_file_overflow __P ((_IO_FILE *, int)); -extern void _IO_old_file_init __P ((struct _IO_FILE_plus *)); -extern _IO_FILE* _IO_old_file_attach __P ((_IO_FILE *, int)); -extern _IO_FILE* _IO_old_file_fopen __P ((_IO_FILE *, const char *, - const char *)); -extern _IO_ssize_t _IO_old_file_write __P ((_IO_FILE *, const void *, - _IO_ssize_t)); -extern int _IO_old_file_sync __P ((_IO_FILE *)); -extern int _IO_old_file_close_it __P ((_IO_FILE *)); -extern void _IO_old_file_finish __P ((_IO_FILE *, int)); - -extern int _IO_wfile_doallocate __P ((_IO_FILE *)); -extern _IO_size_t _IO_wfile_xsputn __P ((_IO_FILE *, const void *, - _IO_size_t)); -extern _IO_FILE* _IO_wfile_setbuf __P ((_IO_FILE *, wchar_t *, _IO_ssize_t)); -extern wint_t _IO_wfile_sync __P ((_IO_FILE *)); -extern wint_t _IO_wfile_underflow __P ((_IO_FILE *)); -extern wint_t _IO_wfile_overflow __P ((_IO_FILE *, wint_t)); -extern _IO_off64_t _IO_wfile_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int)); - -/* Jumptable functions for proc_files. */ -extern _IO_FILE* _IO_proc_open __P ((_IO_FILE *, const char *, const char *)); -extern _IO_FILE* _IO_new_proc_open __P ((_IO_FILE *, const char *, const char *)); -extern _IO_FILE* _IO_old_proc_open __P ((_IO_FILE *, const char *, const char *)); -extern int _IO_proc_close __P ((_IO_FILE *)); -extern int _IO_new_proc_close __P ((_IO_FILE *)); -extern int _IO_old_proc_close __P ((_IO_FILE *)); - -/* Jumptable functions for strfiles. */ -extern int _IO_str_underflow __P ((_IO_FILE *)); -extern int _IO_str_overflow __P ((_IO_FILE *, int)); -extern int _IO_str_pbackfail __P ((_IO_FILE *, int)); -extern _IO_off64_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int)); -extern void _IO_str_finish __P ((_IO_FILE *, int)); - -/* Other strfile functions */ -struct _IO_strfile_; -extern void _IO_str_init_static __P ((struct _IO_strfile_ *, char *, int, char *)); -extern void _IO_str_init_readonly __P ((struct _IO_strfile_ *, const char *, int)); -extern _IO_ssize_t _IO_str_count __P ((_IO_FILE *)); - -/* And the wide character versions. */ -extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, int, wchar_t *)); -extern void _IO_wstr_init_readonly __P ((_IO_FILE *, const char *, int)); -extern _IO_ssize_t _IO_wstr_count __P ((_IO_FILE *)); -extern _IO_wint_t _IO_wstr_overflow __P ((_IO_FILE *, _IO_wint_t)); -extern _IO_wint_t _IO_wstr_underflow __P ((_IO_FILE *)); -extern _IO_off64_t _IO_wstr_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int)); -extern _IO_wint_t _IO_wstr_pbackfail __P ((_IO_FILE *, _IO_wint_t)); -extern void _IO_wstr_finish __P ((_IO_FILE *, int)); - -extern int _IO_vasprintf __P ((char **result_ptr, __const char *format, - _IO_va_list args)); -extern int _IO_vdprintf __P ((int d, __const char *format, _IO_va_list arg)); -extern int _IO_vsnprintf __P ((char *string, _IO_size_t maxlen, - __const char *format, _IO_va_list args)); - - -extern _IO_size_t _IO_getline __P ((_IO_FILE *,char *, _IO_size_t, int, int)); -extern _IO_size_t _IO_getline_info __P ((_IO_FILE *,char *, _IO_size_t, - int, int, int *)); -extern _IO_ssize_t _IO_getdelim __P ((char **, _IO_size_t *, int, _IO_FILE *)); -extern _IO_size_t _IO_getwline __P ((_IO_FILE *,wchar_t *, _IO_size_t, wint_t, - int)); -extern _IO_size_t _IO_getwline_info __P ((_IO_FILE *,wchar_t *, _IO_size_t, - wint_t, int, wint_t *)); -extern double _IO_strtod __P ((const char *, char **)); -extern char *_IO_dtoa __P ((double __d, int __mode, int __ndigits, - int *__decpt, int *__sign, char **__rve)); -extern int _IO_outfloat __P ((double __value, _IO_FILE *__sb, int __type, - int __width, int __precision, int __flags, - int __sign_mode, int __fill)); - -extern struct _IO_FILE_plus *_IO_list_all; -extern void (*_IO_cleanup_registration_needed) __PMT ((void)); - -#ifndef EOF -# define EOF (-1) -#endif -#ifndef NULL -# if defined __GNUG__ && \ - (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) -# define NULL (__null) -# else -# if !defined(__cplusplus) -# define NULL ((void*)0) -# else -# define NULL (0) -# endif -# endif -#endif - -#if _G_HAVE_MMAP - -#ifdef __cplusplus -} -#endif - -# include <unistd.h> -# include <fcntl.h> -# include <sys/mman.h> -# include <sys/param.h> - -#ifdef __cplusplus -extern "C" { -#endif - -# if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) -# define MAP_ANONYMOUS MAP_ANON -# endif - -# if !defined(MAP_ANONYMOUS) || !defined(EXEC_PAGESIZE) -# undef _G_HAVE_MMAP -# define _G_HAVE_MMAP 0 -# endif - -#endif /* _G_HAVE_MMAP */ - -#if _G_HAVE_MMAP - -# ifdef _LIBC -/* When using this code in the GNU libc we must not pollute the name space. */ -# define mmap __mmap -# define munmap __munmap -# define ftruncate __ftruncate -# endif - -# define ROUND_TO_PAGE(_S) \ - (((_S) + EXEC_PAGESIZE - 1) & ~(EXEC_PAGESIZE - 1)) - -# define FREE_BUF(_B, _S) \ - munmap ((_B), ROUND_TO_PAGE (_S)) -# define ALLOC_BUF(_B, _S, _R) \ - do { \ - (_B) = (char *) mmap (0, ROUND_TO_PAGE (_S), \ - PROT_READ | PROT_WRITE, \ - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \ - if ((_B) == (char *) MAP_FAILED) \ - return (_R); \ - } while (0) -# define ALLOC_WBUF(_B, _S, _R) \ - do { \ - (_B) = (wchar_t *) mmap (0, ROUND_TO_PAGE (_S), \ - PROT_READ | PROT_WRITE, \ - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \ - if ((_B) == (wchar_t *) MAP_FAILED) \ - return (_R); \ - } while (0) - -#else /* _G_HAVE_MMAP */ - -# define FREE_BUF(_B, _S) \ - free(_B) -# define ALLOC_BUF(_B, _S, _R) \ - do { \ - (_B) = (char*)malloc(_S); \ - if ((_B) == NULL) \ - return (_R); \ - } while (0) -# define ALLOC_WBUF(_B, _S, _R) \ - do { \ - (_B) = (wchar_t *)malloc(_S); \ - if ((_B) == NULL) \ - return (_R); \ - } while (0) - -#endif /* _G_HAVE_MMAP */ - -#ifndef OS_FSTAT -# define OS_FSTAT fstat -#endif -struct stat; -extern _IO_ssize_t _IO_read __P ((int, void *, _IO_size_t)); -extern _IO_ssize_t _IO_write __P ((int, const void *, _IO_size_t)); -extern _IO_off64_t _IO_lseek __P ((int, _IO_off64_t, int)); -extern int _IO_close __P ((int)); -extern int _IO_fstat __P ((int, struct stat *)); -extern int _IO_vscanf __P ((const char *, _IO_va_list)); - -/* _IO_pos_BAD is an _IO_off64_t value indicating error, unknown, or EOF. */ -#ifndef _IO_pos_BAD -# define _IO_pos_BAD ((_IO_off64_t) -1) -#endif -/* _IO_pos_adjust adjust an _IO_off64_t by some number of bytes. */ -#ifndef _IO_pos_adjust -# define _IO_pos_adjust(pos, delta) ((pos) += (delta)) -#endif -/* _IO_pos_0 is an _IO_off64_t value indicating beginning of file. */ -#ifndef _IO_pos_0 -# define _IO_pos_0 ((_IO_off64_t) 0) -#endif - -#ifdef __cplusplus -} -#endif - -#ifdef _IO_MTSAFE_IO -/* check following! */ -# ifdef _IO_USE_OLD_IO_FILE -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock } -# else -# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock, _IO_pos_BAD,\ - NULL, WDP, 0 } -# else -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock, _IO_pos_BAD,\ - 0 } -# endif -# endif -#else -# ifdef _IO_USE_OLD_IO_FILE -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD } -# else -# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, 0, _IO_pos_BAD, \ - NULL, WDP, 0 } -# else -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, 0, _IO_pos_BAD, \ - 0 } -# endif -# endif -#endif - -/* VTABLE_LABEL defines NAME as of the CLASS class. - CNLENGTH is strlen(#CLASS). */ -#ifdef __GNUC__ -# if _G_VTABLE_LABEL_HAS_LENGTH -# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ - extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CNLENGTH #CLASS); -# else -# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ - extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CLASS); -# endif -#endif /* __GNUC__ */ - -#if !defined(builtinbuf_vtable) && defined(__cplusplus) -# ifdef __GNUC__ -VTABLE_LABEL(builtinbuf_vtable, builtinbuf, 10) -# else -# if _G_VTABLE_LABEL_HAS_LENGTH -# define builtinbuf_vtable _G_VTABLE_LABEL_PREFIX_ID##10builtinbuf -# else -# define builtinbuf_vtable _G_VTABLE_LABEL_PREFIX_ID##builtinbuf -# endif -# endif -#endif /* !defined(builtinbuf_vtable) && defined(__cplusplus) */ - -#if defined(__STDC__) || defined(__cplusplus) -# define _IO_va_start(args, last) va_start(args, last) -#else -# define _IO_va_start(args, last) va_start(args) -#endif - -extern struct _IO_fake_stdiobuf _IO_stdin_buf, _IO_stdout_buf, _IO_stderr_buf; - -#if 1 -# define COERCE_FILE(FILE) /* Nothing */ -#else -/* This is part of the kludge for binary compatibility with old stdio. */ -# define COERCE_FILE(FILE) \ - (((FILE)->_IO_file_flags & _IO_MAGIC_MASK) == _OLD_MAGIC_MASK \ - && (FILE) = *(FILE**)&((int*)fp)[1]) -#endif - -#ifdef EINVAL -# define MAYBE_SET_EINVAL __set_errno (EINVAL) -#else -# define MAYBE_SET_EINVAL /* nothing */ -#endif - -#ifdef IO_DEBUG -# define CHECK_FILE(FILE, RET) \ - if ((FILE) == NULL) { MAYBE_SET_EINVAL; return RET; } \ - else { COERCE_FILE(FILE); \ - if (((FILE)->_IO_file_flags & _IO_MAGIC_MASK) != _IO_MAGIC) \ - { MAYBE_SET_EINVAL; return RET; }} -#else -# define CHECK_FILE(FILE, RET) COERCE_FILE (FILE) -#endif diff --git a/contrib/libstdc++/libio/stdfiles.c b/contrib/libstdc++/libio/stdfiles.c deleted file mode 100644 index b81fef8b8830..000000000000 --- a/contrib/libstdc++/libio/stdfiles.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 1993, 1994, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - - -/* This file provides definitions of _IO_stdin, _IO_stdout, and _IO_stderr - for C code. Compare stdstreams.cc. - (The difference is that here the vtable field is set to 0, - so the objects defined are not valid C++ objects. On the other - hand, we don't need a C++ compiler to build this file.) */ - -#include "libioP.h" - -#ifdef _IO_MTSAFE_IO -# 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 \ - = { ._wide_vtable = &_IO_wfile_jumps }; \ - struct _IO_FILE_plus NAME \ - = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ - &_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), \ - &_IO_file_jumps}; -# 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 \ - = { ._wide_vtable = &_IO_wfile_jumps }; \ - struct _IO_FILE_plus NAME \ - = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ - &_IO_file_jumps}; -# else -# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ - struct _IO_FILE_plus NAME \ - = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \ - &_IO_file_jumps}; -# endif -#endif - -DEF_STDFILE(_IO_2_1_stdin_, 0, 0, _IO_NO_WRITES); -DEF_STDFILE(_IO_2_1_stdout_, 1, &_IO_2_1_stdin_, _IO_NO_READS); -DEF_STDFILE(_IO_2_1_stderr_, 2, &_IO_2_1_stdout_, _IO_NO_READS+_IO_UNBUFFERED); - -struct _IO_FILE_plus *_IO_list_all = &_IO_2_1_stderr_; diff --git a/contrib/libstdc++/libio/stdio.c b/contrib/libstdc++/libio/stdio.c deleted file mode 100644 index 3b897ced1767..000000000000 --- a/contrib/libstdc++/libio/stdio.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1993, 1994, 1996, 1997, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -#include "libioP.h" -#include "stdio.h" - -#undef stdin -#undef stdout -#undef stderr -_IO_FILE *stdin = (FILE *) &_IO_2_1_stdin_; -_IO_FILE *stdout = (FILE *) &_IO_2_1_stdout_; -_IO_FILE *stderr = (FILE *) &_IO_2_1_stderr_; - -#undef _IO_stdin -#undef _IO_stdout -#undef _IO_stderr -#ifdef _LIBC -strong_alias (stdin, _IO_stdin); -strong_alias (stdout, _IO_stdout); -strong_alias (stderr, _IO_stderr); -#endif diff --git a/contrib/libstdc++/libio/wfiledoalloc.c b/contrib/libstdc++/libio/wfiledoalloc.c deleted file mode 100644 index 9c0516204148..000000000000 --- a/contrib/libstdc++/libio/wfiledoalloc.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Copyright (C) 1993, 1997, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -/* - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* Modified for GNU iostream by Per Bothner 1991, 1992. */ - -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE -#endif -#include "libioP.h" -#ifdef _GLIBCPP_USE_WCHAR_T -#include <sys/types.h> -#include <sys/stat.h> -#ifdef __STDC__ -#include <stdlib.h> -#include <unistd.h> -#endif - -#ifdef _LIBC -# undef isatty -# define isatty(Fd) __isatty (Fd) -#endif - -/* - * Allocate a file buffer, or switch to unbuffered I/O. - * Per the ANSI C standard, ALL tty devices default to line buffered. - * - * As a side effect, we set __SOPT or __SNPT (en/dis-able fseek - * optimisation) right after the _fstat() that finds the buffer size. - */ - -int -_IO_wfile_doallocate (fp) - _IO_FILE *fp; -{ - _IO_size_t size; - int couldbetty; - wchar_t *p; - struct _G_stat64 st; - - /* Allocate room for the external buffer. */ - if (fp->_IO_buf_base == NULL) - _IO_file_doallocate (fp); - - if (fp->_fileno < 0 || _IO_SYSSTAT (fp, &st) < 0) - { - couldbetty = 0; - size = _IO_BUFSIZ; -#if 0 - /* do not try to optimise fseek() */ - fp->_flags |= __SNPT; -#endif - } - else - { - couldbetty = S_ISCHR (st.st_mode); -#if _IO_HAVE_ST_BLKSIZE - size = st.st_blksize <= 0 ? _IO_BUFSIZ : st.st_blksize; -#else - size = _IO_BUFSIZ; -#endif - } - ALLOC_WBUF (p, size * sizeof (wchar_t), EOF); - _IO_wsetb (fp, p, p + size, 1); - if (couldbetty && isatty (fp->_fileno)) - fp->_flags |= _IO_LINE_BUF; - return 1; -} - -#endif /* _GLIBCPP_USE_WCHAR_T */ diff --git a/contrib/libstdc++/libio/wfileops.c b/contrib/libstdc++/libio/wfileops.c deleted file mode 100644 index 1dd524a3ffb2..000000000000 --- a/contrib/libstdc++/libio/wfileops.c +++ /dev/null @@ -1,754 +0,0 @@ -/* Copyright (C) 1993, 95, 97, 98, 99, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - Written by Ulrich Drepper <drepper@cygnus.com>. - Based on the single byte version by Per Bothner <bothner@cygnus.com>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -#include <assert.h> -#include <libioP.h> -#ifdef _GLIBCPP_USE_WCHAR_T -#include <wchar.h> -#ifdef HAVE_GCONV_H -# include <gconv.h> -#endif -#include <stdlib.h> -#include <string.h> - - -#ifndef _LIBC -# define _IO_new_do_write _IO_do_write -# define _IO_new_file_attach _IO_file_attach -# define _IO_new_file_close_it _IO_file_close_it -# define _IO_new_file_finish _IO_file_finish -# define _IO_new_file_fopen _IO_file_fopen -# define _IO_new_file_init _IO_file_init -# define _IO_new_file_setbuf _IO_file_setbuf -# define _IO_new_file_sync _IO_file_sync -# define _IO_new_file_overflow _IO_file_overflow -# define _IO_new_file_seekoff _IO_file_seekoff -# define _IO_new_file_underflow _IO_file_underflow -# define _IO_new_file_write _IO_file_write -# define _IO_new_file_xsputn _IO_file_xsputn -#endif - - -_IO_FILE * -_IO_wfile_setbuf (fp, p, len) - _IO_FILE *fp; - wchar_t *p; - _IO_ssize_t len; -{ - if (_IO_wdefault_setbuf (fp, p, len) == NULL) - return NULL; - - fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr = - fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_buf_base; - _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base); - - return fp; -} - - -/* Convert TO_DO wide character from DATA to FP. - Then mark FP as having empty buffers. */ -int -_IO_wdo_write (fp, data, to_do) - _IO_FILE *fp; - const wchar_t *data; - _IO_size_t to_do; -{ - struct _IO_codecvt *cc = fp->_codecvt; - - if (to_do > 0) - { - if (fp->_IO_write_end == fp->_IO_write_ptr - && fp->_IO_write_end != fp->_IO_write_base) - { - if (_IO_new_do_write (fp, fp->_IO_write_base, - fp->_IO_write_ptr - fp->_IO_write_base) == EOF) - return EOF; - } - - do - { - enum __codecvt_result result; - const wchar_t *new_data; - - /* Now convert from the internal format into the external buffer. */ - result = (*cc->__codecvt_do_out) (cc, &fp->_wide_data->_IO_state, - data, data + to_do, &new_data, - fp->_IO_write_ptr, - fp->_IO_buf_end, - &fp->_IO_write_ptr); - - /* Write out what we produced so far. */ - if (_IO_new_do_write (fp, fp->_IO_write_base, - fp->_IO_write_ptr - fp->_IO_write_base) == EOF) - /* Something went wrong. */ - return EOF; - - to_do -= new_data - data; - - /* Next see whether we had problems during the conversion. If yes, - we cannot go on. */ - if (result != __codecvt_ok - && (result != __codecvt_partial || new_data - data == 0)) - break; - - data = new_data; - } - while (to_do > 0); - } - - _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base); - fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr - = fp->_wide_data->_IO_buf_base; - fp->_wide_data->_IO_write_end = ((fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED)) - ? fp->_wide_data->_IO_buf_base - : fp->_wide_data->_IO_buf_end); - - return to_do == 0 ? 0 : WEOF; -} - - -wint_t -_IO_wfile_underflow (fp) - _IO_FILE *fp; -{ - struct _IO_codecvt *cd; - enum __codecvt_result status; - _IO_ssize_t count; - int tries; - const char *read_ptr_copy; - - if (fp->_flags & _IO_NO_READS) - { - fp->_flags |= _IO_ERR_SEEN; - __set_errno (EBADF); - return WEOF; - } - if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) - return *fp->_wide_data->_IO_read_ptr; - - cd = fp->_codecvt; - - /* Maybe there is something left in the external buffer. */ - if (fp->_IO_read_ptr < fp->_IO_read_end) - { - /* Convert it. */ - size_t avail_bytes = fp->_IO_read_end - fp->_IO_read_ptr; - - if (avail_bytes >= (*cd->__codecvt_do_max_length) (cd)) - { - /* There is more in the external. */ - const char *read_stop = (const char *) fp->_IO_read_ptr; - - fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state; - status = (*cd->__codecvt_do_in) (cd, &fp->_wide_data->_IO_state, - fp->_IO_read_ptr, fp->_IO_read_end, - &read_stop, - fp->_wide_data->_IO_read_end, - fp->_wide_data->_IO_buf_end, - &fp->_wide_data->_IO_read_end); - - fp->_IO_read_ptr = (char *) read_stop; - - /* If we managed to generate some text return the next character. */ - if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) - return *fp->_wide_data->_IO_read_ptr; - - if (status == __codecvt_error) - { - __set_errno (EILSEQ); - fp->_flags |= _IO_ERR_SEEN; - return WEOF; - } - } - - /* Move the remaining content of the read buffer to the beginning. */ - memmove (fp->_IO_buf_base, fp->_IO_read_ptr, - fp->_IO_read_end - fp->_IO_read_ptr); - fp->_IO_read_end = (fp->_IO_buf_base - + (fp->_IO_read_end - fp->_IO_read_ptr)); - fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_buf_base; - } - else - fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end = - fp->_IO_buf_base; - - if (fp->_IO_buf_base == NULL) - { - /* Maybe we already have a push back pointer. */ - if (fp->_IO_save_base != NULL) - { - free (fp->_IO_save_base); - fp->_flags &= ~_IO_IN_BACKUP; - } - _IO_doallocbuf (fp); - - fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end = - fp->_IO_buf_base; - } - - fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end = - fp->_IO_buf_base; - - if (fp->_wide_data->_IO_buf_base == NULL) - { - /* Maybe we already have a push back pointer. */ - if (fp->_wide_data->_IO_save_base != NULL) - { - free (fp->_wide_data->_IO_save_base); - fp->_flags &= ~_IO_IN_BACKUP; - } - _IO_wdoallocbuf (fp); - } - - /* Flush all line buffered files before reading. */ - /* FIXME This can/should be moved to genops ?? */ - if (fp->_flags & (_IO_LINE_BUF|_IO_UNBUFFERED)) - _IO_flush_all_linebuffered (); - - _IO_switch_to_get_mode (fp); - - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr = - fp->_wide_data->_IO_buf_base; - fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_buf_base; - fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr = - fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_buf_base; - - tries = 0; - again: - count = _IO_SYSREAD (fp, fp->_IO_read_end, - fp->_IO_buf_end - fp->_IO_read_end); - if (count <= 0) - { - if (count == 0 && tries == 0) - fp->_flags |= _IO_EOF_SEEN; - else - fp->_flags |= _IO_ERR_SEEN, count = 0; - } - fp->_IO_read_end += count; - if (count == 0) - { - if (tries != 0) - /* There are some bytes in the external buffer but they don't - convert to anything. */ - __set_errno (EILSEQ); - return WEOF; - } - if (fp->_offset != _IO_pos_BAD) - _IO_pos_adjust (fp->_offset, count); - - /* Now convert the read input. */ - fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state; - fp->_IO_read_base = fp->_IO_read_ptr; - status = (*cd->__codecvt_do_in) (cd, &fp->_wide_data->_IO_state, - fp->_IO_read_ptr, fp->_IO_read_end, - &read_ptr_copy, - fp->_wide_data->_IO_read_end, - fp->_wide_data->_IO_buf_end, - &fp->_wide_data->_IO_read_end); - - fp->_IO_read_ptr = (char *) read_ptr_copy; - if (fp->_wide_data->_IO_read_end == fp->_wide_data->_IO_buf_base) - { - if (status == __codecvt_error || fp->_IO_read_end == fp->_IO_buf_end) - { - __set_errno (EILSEQ); - fp->_flags |= _IO_ERR_SEEN; - return WEOF; - } - - /* The read bytes make no complete character. Try reading again. */ - assert (status == __codecvt_partial); - ++tries; - goto again; - } - - return *fp->_wide_data->_IO_read_ptr; -} - - -wint_t -_IO_wfile_overflow (f, wch) - _IO_FILE *f; - wint_t wch; -{ - if (f->_flags & _IO_NO_WRITES) /* SET ERROR */ - { - f->_flags |= _IO_ERR_SEEN; - __set_errno (EBADF); - return WEOF; - } - /* If currently reading or no buffer allocated. */ - if ((f->_flags & _IO_CURRENTLY_PUTTING) == 0) - { - /* Allocate a buffer if needed. */ - if (f->_wide_data->_IO_write_base == 0) - { - _IO_wdoallocbuf (f); - _IO_wsetg (f, f->_wide_data->_IO_buf_base, - f->_wide_data->_IO_buf_base, f->_wide_data->_IO_buf_base); - - if (f->_IO_write_base == NULL) - { - _IO_doallocbuf (f); - _IO_setg (f, f->_IO_buf_base, f->_IO_buf_base, f->_IO_buf_base); - } - } - else - { - /* Otherwise must be currently reading. If _IO_read_ptr - (and hence also _IO_read_end) is at the buffer end, - logically slide the buffer forwards one block (by setting - the read pointers to all point at the beginning of the - block). This makes room for subsequent output. - Otherwise, set the read pointers to _IO_read_end (leaving - that alone, so it can continue to correspond to the - external position). */ - if (f->_wide_data->_IO_read_ptr == f->_wide_data->_IO_buf_end) - { - f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base; - f->_wide_data->_IO_read_end = f->_wide_data->_IO_read_ptr = - f->_wide_data->_IO_buf_base; - } - } - f->_wide_data->_IO_write_ptr = f->_wide_data->_IO_read_ptr; - f->_wide_data->_IO_write_base = f->_wide_data->_IO_write_ptr; - f->_wide_data->_IO_write_end = f->_wide_data->_IO_buf_end; - f->_wide_data->_IO_read_base = f->_wide_data->_IO_read_ptr = - f->_wide_data->_IO_read_end; - - f->_IO_write_ptr = f->_IO_read_ptr; - f->_IO_write_base = f->_IO_write_ptr; - f->_IO_write_end = f->_IO_buf_end; - f->_IO_read_base = f->_IO_read_ptr = f->_IO_read_end; - - f->_flags |= _IO_CURRENTLY_PUTTING; - if (f->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED)) - f->_wide_data->_IO_write_end = f->_wide_data->_IO_write_ptr; - } - if (wch == WEOF) - return _IO_do_flush (f); - if (f->_wide_data->_IO_write_ptr == f->_wide_data->_IO_buf_end) - /* Buffer is really full */ - if (_IO_do_flush (f) == WEOF) - return WEOF; - *f->_wide_data->_IO_write_ptr++ = wch; - if ((f->_flags & _IO_UNBUFFERED) - || ((f->_flags & _IO_LINE_BUF) && wch == L'\n')) - if (_IO_do_flush (f) == WEOF) - return WEOF; - return wch; -} - -wint_t -_IO_wfile_sync (fp) - _IO_FILE *fp; -{ - _IO_ssize_t delta; - wint_t retval = 0; - - /* char* ptr = cur_ptr(); */ - if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base) - if (_IO_do_flush (fp)) - return WEOF; - delta = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end; - if (delta != 0) - { - /* We have to find out how many bytes we have to go back in the - external buffer. */ - struct _IO_codecvt *cv = fp->_codecvt; - _IO_off64_t new_pos; - - int clen = (*cv->__codecvt_do_encoding) (cv); - - if (clen > 0) - /* It is easy, a fixed number of input bytes are used for each - wide character. */ - delta *= clen; - else - { - /* We have to find out the hard way how much to back off. - To do this we determine how much input we needed to - generate the wide characters up to the current reading - position. */ - int nread; - - fp->_wide_data->_IO_state = fp->_wide_data->_IO_last_state; - nread = (*cv->__codecvt_do_length) (cv, &fp->_wide_data->_IO_state, - fp->_IO_read_base, - fp->_IO_read_end, delta); - fp->_IO_read_ptr = fp->_IO_read_base + nread; - delta = -(fp->_IO_read_end - fp->_IO_read_base - nread); - } - - new_pos = _IO_SYSSEEK (fp, delta, 1); - if (new_pos != (_IO_off64_t) EOF) - { - fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_read_ptr; - fp->_IO_read_end = fp->_IO_read_ptr; - } -#ifdef ESPIPE - else if (errno == ESPIPE) - ; /* Ignore error from unseekable devices. */ -#endif - else - retval = WEOF; - } - if (retval != WEOF) - fp->_offset = _IO_pos_BAD; - /* FIXME: Cleanup - can this be shared? */ - /* setg(base(), ptr, ptr); */ - return retval; -} - -_IO_off64_t -_IO_wfile_seekoff (fp, offset, dir, mode) - _IO_FILE *fp; - _IO_off64_t offset; - int dir; - int mode; -{ - _IO_off64_t result; - _IO_off64_t delta, new_offset; - long int count; - /* POSIX.1 8.2.3.7 says that after a call the fflush() the file - offset of the underlying file must be exact. */ - int must_be_exact = ((fp->_wide_data->_IO_read_base - == fp->_wide_data->_IO_read_end) - && (fp->_wide_data->_IO_write_base - == fp->_wide_data->_IO_write_ptr)); - - if (mode == 0) - dir = _IO_seek_cur, offset = 0; /* Don't move any pointers. */ - - /* Flush unwritten characters. - (This may do an unneeded write if we seek within the buffer. - But to be able to switch to reading, we would need to set - egptr to ptr. That can't be done in the current design, - which assumes file_ptr() is eGptr. Anyway, since we probably - end up flushing when we close(), it doesn't make much difference.) - FIXME: simulate mem-papped files. */ - - if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base - || _IO_in_put_mode (fp)) - if (_IO_switch_to_wget_mode (fp)) - return WEOF; - - if (fp->_wide_data->_IO_buf_base == NULL) - { - /* It could be that we already have a pushback buffer. */ - if (fp->_wide_data->_IO_read_base != NULL) - { - free (fp->_wide_data->_IO_read_base); - fp->_flags &= ~_IO_IN_BACKUP; - } - _IO_doallocbuf (fp); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base); - _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base); - } - - switch (dir) - { - struct _IO_codecvt *cv; - int clen; - - case _IO_seek_cur: - /* Adjust for read-ahead (bytes is buffer). To do this we must - find out which position in the external buffer corresponds to - the current position in the internal buffer. */ - cv = fp->_codecvt; - clen = (*cv->__codecvt_do_encoding) (cv); - - if (clen > 0) - offset -= (fp->_wide_data->_IO_read_end - - fp->_wide_data->_IO_read_ptr) * clen; - else - { - int nread; - - delta = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end; - fp->_wide_data->_IO_state = fp->_wide_data->_IO_last_state; - nread = (*cv->__codecvt_do_length) (cv, &fp->_wide_data->_IO_state, - fp->_IO_read_base, - fp->_IO_read_end, delta); - fp->_IO_read_ptr = fp->_IO_read_base + nread; - offset -= fp->_IO_read_end - fp->_IO_read_base - nread; - } - - if (fp->_offset == _IO_pos_BAD) - goto dumb; - /* Make offset absolute, assuming current pointer is file_ptr(). */ - offset += fp->_offset; - - dir = _IO_seek_set; - break; - case _IO_seek_set: - break; - case _IO_seek_end: - { - struct _G_stat64 st; - if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode)) - { - offset += st.st_size; - dir = _IO_seek_set; - } - else - goto dumb; - } - } - /* At this point, dir==_IO_seek_set. */ - - /* If we are only interested in the current position we've found it now. */ - if (mode == 0) - return offset; - - /* If destination is within current buffer, optimize: */ - if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL - && !_IO_in_backup (fp)) - { - /* Offset relative to start of main get area. */ - _IO_off64_t rel_offset = (offset - fp->_offset - + (fp->_IO_read_end - fp->_IO_read_base)); - if (rel_offset >= 0) - { -#if 0 - if (_IO_in_backup (fp)) - _IO_switch_to_main_get_area (fp); -#endif - if (rel_offset <= fp->_IO_read_end - fp->_IO_read_base) - { - fp->_IO_read_ptr = fp->_IO_read_base + rel_offset; - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - - /* Now set the pointer for the internal buffer. This - might be an iterative process. Though the read - pointer is somewhere in the current external buffer - this does not mean we can convert this whole buffer - at once fitting in the internal buffer. */ - do - { - - } - while (0); - - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -#ifdef TODO - /* If we have streammarkers, seek forward by reading ahead. */ - if (_IO_have_markers (fp)) - { - int to_skip = rel_offset - - (fp->_IO_read_ptr - fp->_IO_read_base); - if (ignore (to_skip) != to_skip) - goto dumb; - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -#endif - } -#ifdef TODO - if (rel_offset < 0 && rel_offset >= Bbase () - Bptr ()) - { - if (!_IO_in_backup (fp)) - _IO_switch_to_backup_area (fp); - gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr); - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -#endif - } - -#ifdef TODO - _IO_unsave_markers (fp); -#endif - - if (fp->_flags & _IO_NO_READS) - goto dumb; - - /* Try to seek to a block boundary, to improve kernel page management. */ - new_offset = offset & ~(fp->_IO_buf_end - fp->_IO_buf_base - 1); - delta = offset - new_offset; - if (delta > fp->_IO_buf_end - fp->_IO_buf_base) - { - new_offset = offset; - delta = 0; - } - result = _IO_SYSSEEK (fp, new_offset, 0); - if (result < 0) - return EOF; - if (delta == 0) - count = 0; - else - { - count = _IO_SYSREAD (fp, fp->_IO_buf_base, - (must_be_exact - ? delta : fp->_IO_buf_end - fp->_IO_buf_base)); - if (count < delta) - { - /* We weren't allowed to read, but try to seek the remainder. */ - offset = count == EOF ? delta : delta-count; - dir = _IO_seek_cur; - goto dumb; - } - } - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + delta, - fp->_IO_buf_base + count); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - fp->_offset = result + count; - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - return offset; - dumb: - - _IO_unsave_markers (fp); - result = _IO_SYSSEEK (fp, offset, dir); - if (result != EOF) - { - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - fp->_offset = result; - _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); - _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base); - } - return result; - -resync: - /* We need to do it since it is possible that the file offset in - the kernel may be changed behind our back. It may happen when - we fopen a file and then do a fork. One process may access the - the file and the kernel file offset will be changed. */ - if (fp->_offset >= 0) - _IO_SYSSEEK (fp, fp->_offset, 0); - - return offset; -} - - -_IO_size_t -_IO_wfile_xsputn (f, data, n) - _IO_FILE *f; - const void *data; - _IO_size_t n; -{ - register const wchar_t *s = (const wchar_t *) data; - _IO_size_t to_do = n; - int must_flush = 0; - _IO_size_t count; - - if (n <= 0) - return 0; - /* This is an optimized implementation. - If the amount to be written straddles a block boundary - (or the filebuf is unbuffered), use sys_write directly. */ - - /* First figure out how much space is available in the buffer. */ - count = f->_wide_data->_IO_write_end - f->_wide_data->_IO_write_ptr; - if ((f->_flags & _IO_LINE_BUF) && (f->_flags & _IO_CURRENTLY_PUTTING)) - { - count = f->_wide_data->_IO_buf_end - f->_wide_data->_IO_write_ptr; - if (count >= n) - { - register const wchar_t *p; - for (p = s + n; p > s; ) - { - if (*--p == L'\n') - { - count = p - s + 1; - must_flush = 1; - break; - } - } - } - } - /* Then fill the buffer. */ - if (count > 0) - { - if (count > to_do) - count = to_do; - if (count > 20) - { -#ifdef _LIBC - f->_wide_data->_IO_write_ptr = - __wmempcpy (f->_wide_data->_IO_write_ptr, s, count); -#else - wmemcpy (f->_wide_data->_IO_write_ptr, s, count); - f->_wide_data->_IO_write_ptr += count; -#endif - s += count; - } - else - { - register wchar_t *p = f->_wide_data->_IO_write_ptr; - register int i = (int) count; - while (--i >= 0) - *p++ = *s++; - f->_wide_data->_IO_write_ptr = p; - } - to_do -= count; - } - if (to_do > 0) - to_do -= _IO_wdefault_xsputn (f, s, to_do); - if (must_flush - && f->_wide_data->_IO_write_ptr != f->_wide_data->_IO_write_base) - _IO_wdo_write (f, f->_wide_data->_IO_write_base, - f->_wide_data->_IO_write_ptr - - f->_wide_data->_IO_write_base); - - return n - to_do; -} - - -struct _IO_jump_t _IO_wfile_jumps = -{ - JUMP_INIT_DUMMY, - JUMP_INIT(finish, _IO_new_file_finish), - JUMP_INIT(overflow, (_IO_overflow_t) _IO_wfile_overflow), - JUMP_INIT(underflow, (_IO_underflow_t) _IO_wfile_underflow), - JUMP_INIT(uflow, (_IO_underflow_t) _IO_wdefault_uflow), - JUMP_INIT(pbackfail, (_IO_pbackfail_t) _IO_wdefault_pbackfail), - JUMP_INIT(xsputn, _IO_wfile_xsputn), - JUMP_INIT(xsgetn, _IO_file_xsgetn), - JUMP_INIT(seekoff, _IO_wfile_seekoff), - JUMP_INIT(seekpos, _IO_default_seekpos), - JUMP_INIT(setbuf, _IO_new_file_setbuf), - JUMP_INIT(sync, (_IO_sync_t) _IO_wfile_sync), - JUMP_INIT(doallocate, _IO_wfile_doallocate), - JUMP_INIT(read, _IO_file_read), - JUMP_INIT(write, _IO_new_file_write), - JUMP_INIT(seek, _IO_file_seek), - JUMP_INIT(close, _IO_file_close), - JUMP_INIT(stat, _IO_file_stat), - JUMP_INIT(showmanyc, _IO_default_showmanyc), - JUMP_INIT(imbue, _IO_default_imbue) -}; - -#endif /* _GLIBCPP_USE_WCHAR_T */ diff --git a/contrib/libstdc++/libio/wgenops.c b/contrib/libstdc++/libio/wgenops.c deleted file mode 100644 index 748545242953..000000000000 --- a/contrib/libstdc++/libio/wgenops.c +++ /dev/null @@ -1,756 +0,0 @@ -/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU IO Library. - Written by Ulrich Drepper <drepper@cygnus.com>. - Based on the single byte version by Per Bothner <bothner@cygnus.com>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - As a special exception, if you link this library with files - compiled with a GNU compiler to produce an executable, this does - not cause the resulting executable to be covered by the GNU General - Public License. This exception does not however invalidate any - other reasons why the executable file might be covered by the GNU - General Public License. */ - -/* Generic or default I/O operations. */ - -#include "libioP.h" -#ifdef _GLIBCPP_USE_WCHAR_T -#ifdef __STDC__ -#include <stdlib.h> -#endif -#include <string.h> -#include <wchar.h> - - -#ifndef _LIBC -# define __wmemcpy(dst, src, n) wmemcpy (dst, src, n) -#endif - - -static int save_for_wbackup __P ((_IO_FILE *fp, wchar_t *end_p)) -#ifdef _LIBC - internal_function -#endif - ; - -/* Return minimum _pos markers - Assumes the current get area is the main get area. */ -_IO_ssize_t _IO_least_wmarker __P ((_IO_FILE *fp, wchar_t *end_p)); - -_IO_ssize_t -_IO_least_wmarker (fp, end_p) - _IO_FILE *fp; - wchar_t *end_p; -{ - _IO_ssize_t least_so_far = end_p - fp->_wide_data->_IO_read_base; - struct _IO_marker *mark; - for (mark = fp->_markers; mark != NULL; mark = mark->_next) - if (mark->_pos < least_so_far) - least_so_far = mark->_pos; - return least_so_far; -} - -/* Switch current get area from backup buffer to (start of) main get area. */ -void -_IO_switch_to_main_wget_area (fp) - _IO_FILE *fp; -{ - wchar_t *tmp; - fp->_flags &= ~_IO_IN_BACKUP; - /* Swap _IO_read_end and _IO_save_end. */ - tmp = fp->_wide_data->_IO_read_end; - fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_save_end; - fp->_wide_data->_IO_save_end= tmp; - /* Swap _IO_read_base and _IO_save_base. */ - tmp = fp->_wide_data->_IO_read_base; - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_save_base; - fp->_wide_data->_IO_save_base = tmp; - /* Set _IO_read_ptr. */ - fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_base; -} - - -/* Switch current get area from main get area to (end of) backup area. */ -void -_IO_switch_to_wbackup_area (fp) - _IO_FILE *fp; -{ - wchar_t *tmp; - fp->_flags |= _IO_IN_BACKUP; - /* Swap _IO_read_end and _IO_save_end. */ - tmp = fp->_wide_data->_IO_read_end; - fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_save_end; - fp->_wide_data->_IO_save_end = tmp; - /* Swap _IO_read_base and _IO_save_base. */ - tmp = fp->_wide_data->_IO_read_base; - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_save_base; - fp->_wide_data->_IO_save_base = tmp; - /* Set _IO_read_ptr. */ - fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end; -} - - -void -_IO_wsetb (f, b, eb, a) - _IO_FILE *f; - wchar_t *b; - wchar_t *eb; - int a; -{ - if (f->_wide_data->_IO_buf_base && !(f->_flags & _IO_USER_BUF)) - FREE_BUF (f->_wide_data->_IO_buf_base, _IO_wblen (f)); - f->_wide_data->_IO_buf_base = b; - f->_wide_data->_IO_buf_end = eb; - if (a) - f->_flags &= ~_IO_USER_BUF; - else - f->_flags |= _IO_USER_BUF; -} - - -wint_t -_IO_wdefault_pbackfail (fp, c) - _IO_FILE *fp; - wint_t c; -{ - if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base - && !_IO_in_backup (fp) - && (wint_t) fp->_IO_read_ptr[-1] == c) - --fp->_IO_read_ptr; - else - { - /* Need to handle a filebuf in write mode (switch to read mode). FIXME!*/ - if (!_IO_in_backup (fp)) - { - /* We need to keep the invariant that the main get area - logically follows the backup area. */ - if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base - && _IO_have_wbackup (fp)) - { - if (save_for_wbackup (fp, fp->_wide_data->_IO_read_ptr)) - return WEOF; - } - else if (!_IO_have_wbackup (fp)) - { - /* No backup buffer: allocate one. */ - /* Use nshort buffer, if unused? (probably not) FIXME */ - int backup_size = 128; - wchar_t *bbuf = (wchar_t *) malloc (backup_size - * sizeof (wchar_t)); - if (bbuf == NULL) - return WEOF; - fp->_wide_data->_IO_save_base = bbuf; - fp->_wide_data->_IO_save_end = (fp->_wide_data->_IO_save_base - + backup_size); - fp->_wide_data->_IO_backup_base = fp->_wide_data->_IO_save_end; - } - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr; - _IO_switch_to_wbackup_area (fp); - } - else if (fp->_wide_data->_IO_read_ptr <= fp->_wide_data->_IO_read_base) - { - /* Increase size of existing backup buffer. */ - _IO_size_t new_size; - _IO_size_t old_size = (fp->_wide_data->_IO_read_end - - fp->_wide_data->_IO_read_base); - wchar_t *new_buf; - new_size = 2 * old_size; - new_buf = (wchar_t *) malloc (new_size * sizeof (wchar_t)); - if (new_buf == NULL) - return WEOF; - __wmemcpy (new_buf + (new_size - old_size), - fp->_wide_data->_IO_read_base, old_size); - free (fp->_wide_data->_IO_read_base); - _IO_wsetg (fp, new_buf, new_buf + (new_size - old_size), - new_buf + new_size); - fp->_wide_data->_IO_backup_base = fp->_wide_data->_IO_read_ptr; - } - - *--fp->_wide_data->_IO_read_ptr = c; - } - return c; -} - - -void -_IO_wdefault_finish (fp, dummy) - _IO_FILE *fp; - int dummy; -{ - struct _IO_marker *mark; - if (fp->_wide_data->_IO_buf_base && !(fp->_flags & _IO_USER_BUF)) - { - FREE_BUF (fp->_wide_data->_IO_buf_base, - _IO_wblen (fp) * sizeof (wchar_t)); - fp->_wide_data->_IO_buf_base = fp->_wide_data->_IO_buf_end = NULL; - } - - for (mark = fp->_markers; mark != NULL; mark = mark->_next) - mark->_sbuf = NULL; - - if (fp->_IO_save_base) - { - free (fp->_wide_data->_IO_save_base); - fp->_IO_save_base = NULL; - } - -#ifdef _IO_MTSAFE_IO - _IO_lock_fini (*fp->_lock); -#endif - - _IO_un_link ((struct _IO_FILE_plus *) fp); -} - - -wint_t -_IO_wdefault_uflow (fp) - _IO_FILE *fp; -{ - wint_t wch; - wch = _IO_UNDERFLOW (fp); - if (wch == WEOF) - return WEOF; - return *fp->_wide_data->_IO_read_ptr++; -} - - -wint_t -__woverflow (f, wch) - _IO_FILE *f; - wint_t wch; -{ - if (f->_mode == 0) - _IO_fwide (f, 1); - return _IO_OVERFLOW (f, wch); -} - - -wint_t -__wuflow (fp) - _IO_FILE *fp; -{ - if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1)) - return WEOF; - - if (fp->_mode == 0) - _IO_fwide (fp, 1); - if (_IO_in_put_mode (fp)) - if (_IO_switch_to_wget_mode (fp) == EOF) - return WEOF; - if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) - return *fp->_wide_data->_IO_read_ptr++; - if (_IO_in_backup (fp)) - { - _IO_switch_to_main_wget_area (fp); - if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) - return *fp->_wide_data->_IO_read_ptr++; - } - if (_IO_have_markers (fp)) - { - if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end)) - return WEOF; - } - else if (_IO_have_wbackup (fp)) - _IO_free_wbackup_area (fp); - return _IO_UFLOW (fp); -} - - -wint_t -__wunderflow (fp) - _IO_FILE *fp; -{ - if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1)) - return WEOF; - - if (fp->_mode == 0) - _IO_fwide (fp, 1); - if (_IO_in_put_mode (fp)) - if (_IO_switch_to_wget_mode (fp) == EOF) - return WEOF; - if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) - return *fp->_wide_data->_IO_read_ptr; - if (_IO_in_backup (fp)) - { - _IO_switch_to_main_wget_area (fp); - if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) - return *fp->_wide_data->_IO_read_ptr; - } - if (_IO_have_markers (fp)) - { - if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end)) - return WEOF; - } - else if (_IO_have_backup (fp)) - _IO_free_wbackup_area (fp); - return _IO_UNDERFLOW (fp); -} - - -_IO_size_t -_IO_wdefault_xsputn (f, data, n) - _IO_FILE *f; - const void *data; - _IO_size_t n; -{ - const wchar_t *s = (const wchar_t *) data; - _IO_size_t more = n; - if (more <= 0) - return 0; - for (;;) - { - /* Space available. */ - _IO_ssize_t count = (f->_wide_data->_IO_write_end - - f->_wide_data->_IO_write_ptr); - if (count > 0) - { - if ((_IO_size_t) count > more) - count = more; - if (count > 20) - { -#ifdef _LIBC - f->_wide_data->_IO_write_ptr = - __wmempcpy (f->_wide_data->_IO_write_ptr, s, count); -#else - memcpy (f->_wide_data->_IO_write_ptr, s, count); - f->_wide_data->_IO_write_ptr += count; -#endif - s += count; - } - else if (count <= 0) - count = 0; - else - { - wchar_t *p = f->_wide_data->_IO_write_ptr; - _IO_ssize_t i; - for (i = count; --i >= 0; ) - *p++ = *s++; - f->_wide_data->_IO_write_ptr = p; - } - more -= count; - } - if (more == 0 || __woverflow (f, *s++) == WEOF) - break; - more--; - } - return n - more; -} - - -_IO_size_t -_IO_wdefault_xsgetn (fp, data, n) - _IO_FILE *fp; - void *data; - _IO_size_t n; -{ - _IO_size_t more = n; - wchar_t *s = (wchar_t*) data; - for (;;) - { - /* Data available. */ - _IO_ssize_t count = (fp->_wide_data->_IO_read_end - - fp->_wide_data->_IO_read_ptr); - if (count > 0) - { - if ((_IO_size_t) count > more) - count = more; - if (count > 20) - { -#ifdef _LIBC - s = __wmempcpy (s, fp->_wide_data->_IO_read_ptr, count); -#else - memcpy (s, fp->_wide_data->_IO_read_ptr, count); - s += count; -#endif - fp->_wide_data->_IO_read_ptr += count; - } - else if (count <= 0) - count = 0; - else - { - wchar_t *p = fp->_wide_data->_IO_read_ptr; - int i = (int) count; - while (--i >= 0) - *s++ = *p++; - fp->_wide_data->_IO_read_ptr = p; - } - more -= count; - } - if (more == 0 || __wunderflow (fp) == WEOF) - break; - } - return n - more; -} - - -void -_IO_wdoallocbuf (fp) - _IO_FILE *fp; -{ - if (fp->_wide_data->_IO_buf_base) - return; - if (!(fp->_flags & _IO_UNBUFFERED)) - if (_IO_DOALLOCATE (fp) != WEOF) - return; - _IO_wsetb (fp, fp->_wide_data->_shortbuf, fp->_wide_data->_shortbuf + 1, 0); -} - - -_IO_FILE * -_IO_wdefault_setbuf (fp, p, len) - _IO_FILE *fp; - wchar_t *p; - _IO_ssize_t len; -{ - if (_IO_SYNC (fp) == EOF) - return NULL; - if (p == NULL || len == 0) - { - fp->_flags |= _IO_UNBUFFERED; - _IO_wsetb (fp, fp->_wide_data->_shortbuf, fp->_wide_data->_shortbuf + 1, - 0); - } - else - { - fp->_flags &= ~_IO_UNBUFFERED; - _IO_wsetb (fp, p, p + len, 0); - } - fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr - = fp->_wide_data->_IO_write_end = 0; - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr - = fp->_wide_data->_IO_read_end = 0; - return fp; -} - - -int -_IO_wdefault_doallocate (fp) - _IO_FILE *fp; -{ - wchar_t *buf; - - ALLOC_WBUF (buf, _IO_BUFSIZ, EOF); - _IO_wsetb (fp, buf, buf + _IO_BUFSIZ, 1); - return 1; -} - - -int -_IO_switch_to_wget_mode (fp) - _IO_FILE *fp; -{ - if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base) - if (_IO_OVERFLOW (fp, WEOF) == WEOF) - return EOF; - if (_IO_in_backup (fp)) - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_backup_base; - else - { - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_buf_base; - if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_read_end) - fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_write_ptr; - } - fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_write_ptr; - - fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr - = fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_read_ptr; - - fp->_flags &= ~_IO_CURRENTLY_PUTTING; - return 0; -} - -void -_IO_free_wbackup_area (fp) - _IO_FILE *fp; -{ - if (_IO_in_backup (fp)) - _IO_switch_to_main_wget_area (fp); /* Just in case. */ - free (fp->_wide_data->_IO_save_base); - fp->_wide_data->_IO_save_base = NULL; - fp->_wide_data->_IO_save_end = NULL; - fp->_wide_data->_IO_backup_base = NULL; -} - -#if 0 -int -_IO_switch_to_wput_mode (fp) - _IO_FILE *fp; -{ - fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_read_ptr; - fp->_wide_data->_IO_write_ptr = fp->_wide_data->_IO_read_ptr; - /* Following is wrong if line- or un-buffered? */ - fp->_wide_data->_IO_write_end = (fp->_flags & _IO_IN_BACKUP - ? fp->_wide_data->_IO_read_end - : fp->_wide_data->_IO_buf_end); - - fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end; - fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_end; - - fp->_flags |= _IO_CURRENTLY_PUTTING; - return 0; -} -#endif - - -static int -#ifdef _LIBC -internal_function -#endif -save_for_wbackup (fp, end_p) - _IO_FILE *fp; - wchar_t *end_p; -{ - /* Append [_IO_read_base..end_p] to backup area. */ - _IO_ssize_t least_mark = _IO_least_wmarker (fp, end_p); - /* needed_size is how much space we need in the backup area. */ - _IO_size_t needed_size = ((end_p - fp->_wide_data->_IO_read_base) - - least_mark); - /* FIXME: Dubious arithmetic if pointers are NULL */ - _IO_size_t current_Bsize = (fp->_wide_data->_IO_save_end - - fp->_wide_data->_IO_save_base); - _IO_size_t avail; /* Extra space available for future expansion. */ - _IO_ssize_t delta; - struct _IO_marker *mark; - if (needed_size > current_Bsize) - { - wchar_t *new_buffer; - avail = 100; - new_buffer = (wchar_t *) malloc ((avail + needed_size) - * sizeof (wchar_t)); - if (new_buffer == NULL) - return EOF; /* FIXME */ - if (least_mark < 0) - { -#ifdef _LIBC - __wmempcpy (__wmempcpy (new_buffer + avail, - fp->_wide_data->_IO_save_end + least_mark, - -least_mark), - fp->_wide_data->_IO_read_base, - end_p - fp->_wide_data->_IO_read_base); -#else - memcpy (new_buffer + avail, - fp->_wide_data->_IO_save_end + least_mark, - -least_mark * sizeof (wchar_t)); - memcpy (new_buffer + avail - least_mark, - fp->_wide_data->_IO_read_base, - (end_p - fp->_wide_data->_IO_read_base) * sizeof (wchar_t)); -#endif - } - else - { -#ifdef _LIBC - __wmemcpy (new_buffer + avail, - fp->_wide_data->_IO_read_base + least_mark, - needed_size); -#else - memcpy (new_buffer + avail, - fp->_wide_data->_IO_read_base + least_mark, - needed_size * sizeof (wchar_t)); -#endif - } - if (fp->_wide_data->_IO_save_base) - free (fp->_wide_data->_IO_save_base); - fp->_wide_data->_IO_save_base = new_buffer; - fp->_wide_data->_IO_save_end = new_buffer + avail + needed_size; - } - else - { - avail = current_Bsize - needed_size; - if (least_mark < 0) - { -#ifdef _LIBC - __wmemmove (fp->_wide_data->_IO_save_base + avail, - fp->_wide_data->_IO_save_end + least_mark, - -least_mark); - __wmemcpy (fp->_wide_data->_IO_save_base + avail - least_mark, - fp->_wide_data->_IO_read_base, - end_p - fp->_wide_data->_IO_read_base); -#else - memmove (fp->_wide_data->_IO_save_base + avail, - fp->_wide_data->_IO_save_end + least_mark, - -least_mark * sizeof (wchar_t)); - memcpy (fp->_wide_data->_IO_save_base + avail - least_mark, - fp->_wide_data->_IO_read_base, - (end_p - fp->_wide_data->_IO_read_base) * sizeof (wchar_t)); -#endif - } - else if (needed_size > 0) -#ifdef _LIBC - __wmemcpy (fp->_wide_data->_IO_save_base + avail, - fp->_wide_data->_IO_read_base + least_mark, - needed_size); -#else - memcpy (fp->_wide_data->_IO_save_base + avail, - fp->_wide_data->_IO_read_base + least_mark, - needed_size * sizeof (wchar_t)); -#endif - } - fp->_wide_data->_IO_backup_base = fp->_wide_data->_IO_save_base + avail; - /* Adjust all the streammarkers. */ - delta = end_p - fp->_wide_data->_IO_read_base; - for (mark = fp->_markers; mark != NULL; mark = mark->_next) - mark->_pos -= delta; - return 0; -} - -wint_t -_IO_sputbackwc (fp, c) - _IO_FILE *fp; - wint_t c; -{ - wint_t result; - - if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base - && (wchar_t)fp->_wide_data->_IO_read_ptr[-1] == (wchar_t) c) - { - fp->_wide_data->_IO_read_ptr--; - result = c; - } - else - result = _IO_PBACKFAIL (fp, c); - - if (result != EOF) - fp->_flags &= ~_IO_EOF_SEEN; - - return result; -} - -wint_t -_IO_sungetwc (fp) - _IO_FILE *fp; -{ - int result; - - if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base) - { - fp->_wide_data->_IO_read_ptr--; - result = *fp->_wide_data->_IO_read_ptr; - } - else - result = _IO_PBACKFAIL (fp, EOF); - - if (result != WEOF) - fp->_flags &= ~_IO_EOF_SEEN; - - return result; -} - - -unsigned -_IO_adjust_wcolumn (start, line, count) - unsigned start; - const wchar_t *line; - int count; -{ - const wchar_t *ptr = line + count; - while (ptr > line) - if (*--ptr == L'\n') - return line + count - ptr - 1; - return start + count; -} - -void -_IO_init_wmarker (marker, fp) - struct _IO_marker *marker; - _IO_FILE *fp; -{ - marker->_sbuf = fp; - if (_IO_in_put_mode (fp)) - _IO_switch_to_wget_mode (fp); - if (_IO_in_backup (fp)) - marker->_pos = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end; - else - marker->_pos = (fp->_wide_data->_IO_read_ptr - - fp->_wide_data->_IO_read_base); - - /* Should perhaps sort the chain? */ - marker->_next = fp->_markers; - fp->_markers = marker; -} - -#define BAD_DELTA EOF - -/* Return difference between MARK and current position of MARK's stream. */ -int -_IO_wmarker_delta (mark) - struct _IO_marker *mark; -{ - int cur_pos; - if (mark->_sbuf == NULL) - return BAD_DELTA; - if (_IO_in_backup (mark->_sbuf)) - cur_pos = (mark->_sbuf->_wide_data->_IO_read_ptr - - mark->_sbuf->_wide_data->_IO_read_end); - else - cur_pos = (mark->_sbuf->_wide_data->_IO_read_ptr - - mark->_sbuf->_wide_data->_IO_read_base); - return mark->_pos - cur_pos; -} - -int -_IO_seekwmark (fp, mark, delta) - _IO_FILE *fp; - struct _IO_marker *mark; - int delta; -{ - if (mark->_sbuf != fp) - return EOF; - if (mark->_pos >= 0) - { - if (_IO_in_backup (fp)) - _IO_switch_to_main_wget_area (fp); - fp->_wide_data->_IO_read_ptr = (fp->_wide_data->_IO_read_base - + mark->_pos); - } - else - { - if (!_IO_in_backup (fp)) - _IO_switch_to_wbackup_area (fp); - fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end + mark->_pos; - } - return 0; -} - -void -_IO_unsave_wmarkers (fp) - _IO_FILE *fp; -{ - struct _IO_marker *mark = fp->_markers; - if (mark) - { -#ifdef TODO - streampos offset = seekoff (0, ios::cur, ios::in); - if (offset != EOF) - { - offset += eGptr () - Gbase (); - for ( ; mark != NULL; mark = mark->_next) - mark->set_streampos (mark->_pos + offset); - } - else - { - for ( ; mark != NULL; mark = mark->_next) - mark->set_streampos (EOF); - } -#endif - fp->_markers = 0; - } - - if (_IO_have_backup (fp)) - _IO_free_wbackup_area (fp); -} - -#endif /* _GLIBCPP_USE_WCHAR_T */ |