basic_file_stdio.cc: Revert.
authorBenjamin Kosnik <bkoz@redhat.com>
Fri, 4 Jul 2003 21:24:35 +0000 (21:24 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 4 Jul 2003 21:24:35 +0000 (21:24 +0000)
2003-07-04  Benjamin Kosnik  <bkoz@redhat.com>
            Petur Runolfsson  <peturr02@ru.is>

* config/io/basic_file_stdio.cc: Revert.

Co-Authored-By: Petur Runolfsson <peturr02@ru.is>
From-SVN: r68938

libstdc++-v3/ChangeLog
libstdc++-v3/config/io/basic_file_stdio.cc

index 98515f99b389f3c0d9e9cd8062313e947974beb5..f20272d01f51e5157cc567ae6d496bb096270836 100644 (file)
@@ -1,3 +1,8 @@
+2003-07-04  Benjamin Kosnik  <bkoz@redhat.com>
+            Petur Runolfsson  <peturr02@ru.is>
+       
+       * config/io/basic_file_stdio.cc: Revert.
+
 2003-07-04  Paolo Carlini  <pcarlini@unitus.it>
 
        * include/bits/deque.tcc: Fully qualify standard
index a5453c24200a6835328d37f1c5a3e0c92135c544..8e6695b9f17bf168cc8fe673dafc2b83438c9e53 100644 (file)
@@ -207,32 +207,32 @@ namespace std
  
   streamsize 
   __basic_file<char>::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<char>::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<char>::seekoff(streamoff off, ios_base::seekdir way, 
+  __basic_file<char>::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<char>::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<char>::seekpos(streampos __pos, ios_base::openmode /*__mode*/)
+  { return lseek(this->fd(), __pos, ios_base::beg); }
 
   int 
   __basic_file<char>::sync()