libstdc++/2071
* porting.texi: Add documentation about libstdc++-v3-specific macros that are currently included in os_defines.h files. * config/basic_file_stdio.h (sys_getc): New method. (sys_ungetc): New method. * include/bits/basic_file.h: (sys_getc): New method signature. (sys_ungetc): New method signature. * include/bits/fstream.tcc (underflow): Add conditional code paths which avoid using short seeks on streams (especially useful when the stream might be interactive or a pipe). At the moment, this alternate path only avoids seeking when the ``buffer size'' of underflow() is 1 since the C standard only guarantees buffer space for one ungetc (this technique could be extended since *-*-solaris* supports buffering for 4 calls to ungetc and *-*-*bsd* supports buffering limited only by memory resources). Also, _GLIBCPP_AVOID_FSEEK must be defined in a port's os_defines.h file for this alternate path to even be considered. As a bonus, the idiom of using getc/ungetc requires no system calls whereas fseek maps to one or two system call(s) on many platforms. * config/os/bsd/freebsd/bits/os_defines.h (_GLIBCPP_AVOID_FSEEK): Define it. * config/os/solaris/solaris2.5/bits/os_defines.h (_GLIBCPP_AVOID_FSEEK): Likewise. * config/os/solaris/solaris2.6/bits/os_defines.h (_GLIBCPP_AVOID_FSEEK): Likewise. * config/os/solaris/solaris2.7/bits/os_defines.h (_GLIBCPP_AVOID_FSEEK): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43278 138bc75d-0d04-0410-961f-82ee72b054a4
Showing
- libstdc++-v3/ChangeLog 34 additions, 0 deletionslibstdc++-v3/ChangeLog
- libstdc++-v3/config/basic_file_stdio.h 14 additions, 0 deletionslibstdc++-v3/config/basic_file_stdio.h
- libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h 1 addition, 0 deletionslibstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h
- libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h 4 additions, 3 deletionslibstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h
- libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h 3 additions, 2 deletionslibstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h
- libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h 5 additions, 2 deletionslibstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h
- libstdc++-v3/include/bits/basic_file.h 6 additions, 0 deletionslibstdc++-v3/include/bits/basic_file.h
- libstdc++-v3/include/bits/fstream.tcc 13 additions, 0 deletionslibstdc++-v3/include/bits/fstream.tcc
- libstdc++-v3/porting.texi 13 additions, 0 deletionslibstdc++-v3/porting.texi
Loading
Please register or sign in to comment