From 80c85eaec08cbbb608c478c036bfaac5109cfa0a Mon Sep 17 00:00:00 2001 From: bkoz Date: Fri, 4 Jul 2003 21:24:35 +0000 Subject: 2003-07-04 Benjamin Kosnik Petur Runolfsson * config/io/basic_file_stdio.cc: Revert. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68938 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/config/io/basic_file_stdio.cc | 36 +++++++++++++++--------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 98515f99b38..f20272d01f5 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2003-07-04 Benjamin Kosnik + Petur Runolfsson + + * config/io/basic_file_stdio.cc: Revert. + 2003-07-04 Paolo Carlini * include/bits/deque.tcc: Fully qualify standard diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc index a5453c24200..8e6695b9f17 100644 --- a/libstdc++-v3/config/io/basic_file_stdio.cc +++ b/libstdc++-v3/config/io/basic_file_stdio.cc @@ -207,32 +207,32 @@ namespace std streamsize __basic_file::xsgetn(char* __s, streamsize __n) - { return fread(__s, 1, __n, _M_cfile); } + { + streamsize __ret; + do + __ret = read(this->fd(), __s, __n); + while (__ret == -1L && errno == EINTR); + return __ret; + } streamsize __basic_file::xsputn(const char* __s, streamsize __n) - { return fwrite(__s, 1, __n, _M_cfile); } + { + streamsize __ret; + do + __ret = write(this->fd(), __s, __n); + while (__ret == -1L && errno == EINTR); + return __ret; + } streampos - __basic_file::seekoff(streamoff off, ios_base::seekdir way, + __basic_file::seekoff(streamoff __off, ios_base::seekdir __way, ios_base::openmode /*__mode*/) - { - streampos ret(-1); - fpos_t tmp; - if (!fseek(_M_cfile, off, way) && !fgetpos(_M_cfile, &tmp)) - ret = tmp; - return ret; - } + { return lseek(this->fd(), __off, __way); } streampos - __basic_file::seekpos(streampos pos, ios_base::openmode /*__mode*/) - { - streampos ret(-1); - fpos_t tmp = pos; - if (!fsetpos(_M_cfile, &tmp) && !fgetpos(_M_cfile, &tmp)) - ret = tmp; - return ret; - } + __basic_file::seekpos(streampos __pos, ios_base::openmode /*__mode*/) + { return lseek(this->fd(), __pos, ios_base::beg); } int __basic_file::sync() -- cgit v1.2.1