1 diff -r faddb1a6e933 libstdc++-v3/config/io/basic_file_stdio.cc
2 --- a/libstdc++-v3/config/io/basic_file_stdio.cc Fri Jul 31 08:58:42 2009 -0600
3 +++ b/libstdc++-v3/config/io/basic_file_stdio.cc Fri Jul 31 13:09:27 2009 -0600
10 - __basic_file<char>::open(const char* __name, ios_base::openmode __mode,
13 + __basic_file<char>::open(const char* __name, ios_base::openmode __mode,
16 __basic_file* __ret = NULL;
17 const char* __c_mode = fopen_mode(__mode);
18 if (__c_mode && !this->is_open())
20 -#ifdef _GLIBCXX_USE_LFS
21 +#if defined(_GLIBCXX_USE_LFS) || defined(__MINGW32__)
22 if ((_M_cfile = fopen64(__name, __c_mode)))
24 if ((_M_cfile = fopen(__name, __c_mode)))
27 __basic_file<char>::seekoff(streamoff __off, ios_base::seekdir __way)
29 -#ifdef _GLIBCXX_USE_LFS
30 +#if defined(_GLIBCXX_USE_LFS) || defined(__MINGW32__)
31 return lseek64(this->fd(), __off, __way);
33 if (__off > numeric_limits<off_t>::max()
36 return std::min(__off, streamoff(numeric_limits<streamsize>::max()));
38 +#elif defined(__MINGW32__)
39 + struct _stati64 __buffer;
40 + const int __err = _fstati64(this->fd(), &__buffer);
41 + if (!__err && _GLIBCXX_ISREG(__buffer.st_mode))
43 + const streamoff __off = __buffer.st_size - lseek64(this->fd(), 0,
45 + return std::min(__off, streamoff(numeric_limits<streamsize>::max()));
49 const int __err = fstat(this->fd(), &__buffer);
50 diff -r faddb1a6e933 libstdc++-v3/include/ext/stdio_sync_filebuf.h
51 --- a/libstdc++-v3/include/ext/stdio_sync_filebuf.h Fri Jul 31 08:58:42 2009 -0600
52 +++ b/libstdc++-v3/include/ext/stdio_sync_filebuf.h Fri Jul 31 13:09:27 2009 -0600
57 -#ifdef _GLIBCXX_USE_LFS
58 +#if defined(_GLIBCXX_USE_LFS) || defined(__MINGW32__)
59 if (!fseeko64(_M_file, __off, __whence))
60 __ret = std::streampos(ftello64(_M_file));