From 266afdd60e1f7c6429fd7a6902b4b3360f55a90a Mon Sep 17 00:00:00 2001 From: Kai Tietz Date: Thu, 2 Dec 2010 13:15:10 +0000 Subject: [PATCH] re PR libstdc++/43738 (basic_file_stdio.cc uses ioctl on a fd, but not available on mingw32) 2010-12-02 Kai Tietz PR libstdc++/43738 * config/io/basic_file_stdio.cc (showmanyc): Check _GLIBCXX_NO_IOCTL before use of ioctl. * config/os/mingw32/os_defines.h (_GLIBCXX_NO_IOCTL): New. From-SVN: r167369 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/config/io/basic_file_stdio.cc | 4 +++- libstdc++-v3/config/os/mingw32/os_defines.h | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 933fb23..c5f6ab9 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2010-12-02 Kai Tietz + + PR libstdc++/43738 + * config/io/basic_file_stdio.cc (showmanyc): Check _GLIBCXX_NO_IOCTL + before use of ioctl. + * config/os/mingw32/os_defines.h (_GLIBCXX_NO_IOCTL): New. + 2010-12-01 François Dumont * testsuite/23_containers/deque/cons/2.cc: Fix to explicitely invoke diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc index 472f123..d2de028 100644 --- a/libstdc++-v3/config/io/basic_file_stdio.cc +++ b/libstdc++-v3/config/io/basic_file_stdio.cc @@ -334,6 +334,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) streamsize __basic_file::showmanyc() { +#ifndef _GLIBCXX_NO_IOCTL #ifdef FIONREAD // Pipes and sockets. #ifdef _GLIBCXX_FIONREAD_TAKES_OFF_T @@ -344,7 +345,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) int __r = ioctl(this->fd(), FIONREAD, &__num); if (!__r && __num >= 0) return __num; -#endif +#endif +#endif #ifdef _GLIBCXX_HAVE_POLL // Cheap test. diff --git a/libstdc++-v3/config/os/mingw32/os_defines.h b/libstdc++-v3/config/os/mingw32/os_defines.h index 5435ce9..22a11f5 100644 --- a/libstdc++-v3/config/os/mingw32/os_defines.h +++ b/libstdc++-v3/config/os/mingw32/os_defines.h @@ -60,4 +60,9 @@ // See libstdc++/37522. #define _GLIBCXX_HAVE_BROKEN_VSWPRINTF 1 +// See libstdc++/43738 +// On native windows targets there is no ioctl function. And the existing +// ioctlsocket function doesn't work for normal file-descriptors. +#define _GLIBCXX_NO_IOCTL 1 + #endif -- 2.7.4