aboutsummaryrefslogtreecommitdiff
path: root/system/include/libcxx/fstream
diff options
context:
space:
mode:
authorBruce Mitchener <bruce.mitchener@gmail.com>2013-08-08 15:29:07 +0700
committerBruce Mitchener <bruce.mitchener@gmail.com>2013-08-09 09:53:12 +0700
commit6f894d481d19e05fbc10f3ce7d74d9180d1cbb64 (patch)
tree8260bbd04f17fbee780c654b35175e89c10129fa /system/include/libcxx/fstream
parent6c275bebb45d6aac7e4a024b825ab34971b178d2 (diff)
Update libcxx to revision 187959, 2013-08-08.
Diffstat (limited to 'system/include/libcxx/fstream')
-rw-r--r--system/include/libcxx/fstream16
1 files changed, 16 insertions, 0 deletions
diff --git a/system/include/libcxx/fstream b/system/include/libcxx/fstream
index 0a5cf92a..e3f8306f 100644
--- a/system/include/libcxx/fstream
+++ b/system/include/libcxx/fstream
@@ -807,9 +807,15 @@ basic_filebuf<_CharT, _Traits>::seekoff(off_type __off, ios_base::seekdir __way,
default:
return pos_type(off_type(-1));
}
+#if _WIN32
+ if (fseek(__file_, __width > 0 ? __width * __off : 0, __whence))
+ return pos_type(off_type(-1));
+ pos_type __r = ftell(__file_);
+#else
if (fseeko(__file_, __width > 0 ? __width * __off : 0, __whence))
return pos_type(off_type(-1));
pos_type __r = ftello(__file_);
+#endif
__r.state(__st_);
return __r;
}
@@ -820,8 +826,13 @@ basic_filebuf<_CharT, _Traits>::seekpos(pos_type __sp, ios_base::openmode)
{
if (__file_ == 0 || sync())
return pos_type(off_type(-1));
+#if _WIN32
+ if (fseek(__file_, __sp, SEEK_SET))
+ return pos_type(off_type(-1));
+#else
if (fseeko(__file_, __sp, SEEK_SET))
return pos_type(off_type(-1));
+#endif
__st_ = __sp.state();
return __sp;
}
@@ -880,8 +891,13 @@ basic_filebuf<_CharT, _Traits>::sync()
}
}
}
+#if _WIN32
+ if (fseek(__file_, -__c, SEEK_CUR))
+ return -1;
+#else
if (fseeko(__file_, -__c, SEEK_CUR))
return -1;
+#endif
if (__update_st)
__st_ = __state;
__extbufnext_ = __extbufend_ = __extbuf_;