diff --git a/CMakeLists.txt b/CMakeLists.txt index 92ac20f73b51bbfbcf8194549cb97202523ffd2f..f1f95f7e8da3d743fe47e1d2577adecf149e844a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -447,6 +447,11 @@ ELSE(KWSYS_IOS_USE_ANSI AND NOT WATCOM) KWSYS_PLATFORM_CXX_TEST(KWSYS_STL_STRING_HAVE_ISTREAM "Checking whether stl string has istream operator>>" DIRECT) ENDIF(KWSYS_IOS_USE_ANSI AND NOT WATCOM) +SET(KWSYS_PLATFORM_CXX_TEST_DEFINES + -DKWSYS_IOS_USE_ANSI=${KWSYS_IOS_USE_ANSI} + -DKWSYS_IOS_HAVE_STD=${KWSYS_IOS_HAVE_STD}) +KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_BINARY + "Checking whether ios has binary openmode" DIRECT) SET(KWSYS_PLATFORM_CXX_TEST_DEFINES) KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS diff --git a/Configure.hxx.in b/Configure.hxx.in index 4916c12cbbed03e7d6c38ee6c3d3b65768f695a1..444f46f310b793f71353ac73278fb3b8c41856e9 100644 --- a/Configure.hxx.in +++ b/Configure.hxx.in @@ -32,6 +32,9 @@ /* Whether old C++ <strstrea.h> header is to be used. */ #define @KWSYS_NAMESPACE@_IOS_USE_STRSTREA_H @KWSYS_IOS_USE_STRSTREA_H@ +/* Whether C++ streams support the ios::binary openmode. */ +#define @KWSYS_NAMESPACE@_IOS_HAVE_BINARY @KWSYS_IOS_HAVE_BINARY@ + /* Whether STL is in std namespace. */ #define @KWSYS_NAMESPACE@_STL_HAVE_STD @KWSYS_STL_HAVE_STD@ @@ -63,6 +66,13 @@ # define @KWSYS_NAMESPACE@_ios @KWSYS_NAMESPACE@_ios #endif +/* Define the ios::binary openmode macro. */ +#if @KWSYS_NAMESPACE@_IOS_HAVE_BINARY +# define @KWSYS_NAMESPACE@_ios_binary @KWSYS_NAMESPACE@_ios::ios::binary +#else +# define @KWSYS_NAMESPACE@_ios_binary 0 +#endif + /* Whether the cstddef header is available. */ #define @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF @KWSYS_CXX_HAS_CSTDDEF@ @@ -133,6 +143,7 @@ # define kwsys_stl @KWSYS_NAMESPACE@_stl # define kwsys_ios @KWSYS_NAMESPACE@_ios # define kwsys @KWSYS_NAMESPACE@ +# define kwsys_ios_binary @KWSYS_NAMESPACE@_ios_binary # endif # define KWSYS_NAME_IS_KWSYS @KWSYS_NAMESPACE@_NAME_IS_KWSYS # define KWSYS_STL_HAVE_STD @KWSYS_NAMESPACE@_STL_HAVE_STD @@ -141,6 +152,7 @@ # define KWSYS_IOS_USE_SSTREAM @KWSYS_NAMESPACE@_IOS_USE_SSTREAM # define KWSYS_IOS_USE_STRSTREAM_H @KWSYS_NAMESPACE@_IOS_USE_STRSTREAM_H # define KWSYS_IOS_USE_STRSTREA_H @KWSYS_NAMESPACE@_IOS_USE_STRSTREA_H +# define KWSYS_IOS_HAVE_BINARY @KWSYS_NAMESPACE@_IOS_HAVE_BINARY # define KWSYS_STAT_HAS_ST_MTIM @KWSYS_NAMESPACE@_STAT_HAS_ST_MTIM # define KWSYS_CXX_HAS_CSTDDEF @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF # define KWSYS_STL_STRING_HAVE_OSTREAM @KWSYS_NAMESPACE@_STL_STRING_HAVE_OSTREAM diff --git a/kwsysDateStamp.cmake b/kwsysDateStamp.cmake index 7c7896e01b337457b9e2ded4dc69d9c5571b74da..64f208c013c506d8f18f1a43d1cd2c01b944628e 100644 --- a/kwsysDateStamp.cmake +++ b/kwsysDateStamp.cmake @@ -7,4 +7,4 @@ SET(KWSYS_DATE_STAMP_YEAR 2009) SET(KWSYS_DATE_STAMP_MONTH 08) # KWSys version date day component. Format is DD. -SET(KWSYS_DATE_STAMP_DAY 06) +SET(KWSYS_DATE_STAMP_DAY 31) diff --git a/kwsysPlatformTestsCXX.cxx b/kwsysPlatformTestsCXX.cxx index 3d5550dd600f2adae6355d5036ee15d6d722e330..502e2d88b170b36f2acd40e5f09a01e03888036f 100644 --- a/kwsysPlatformTestsCXX.cxx +++ b/kwsysPlatformTestsCXX.cxx @@ -294,6 +294,17 @@ int main() } #endif +#ifdef TEST_KWSYS_IOS_HAVE_BINARY +int test_binary(int, ...) +{ + return 0; +} +int main() +{ + return test_binary(1, kwsys_ios::ios::binary); +} +#endif + #ifdef TEST_KWSYS_IOS_HAS_ISTREAM_LONG_LONG int test_istream(kwsys_ios::istream& is, long long& x) { diff --git a/testIOS.cxx b/testIOS.cxx index 5b65d20b5a326cd80022dba415a9fefb9137c2d3..2839109278ff1f7b90e2eea6eeb376308c4e9388 100644 --- a/testIOS.cxx +++ b/testIOS.cxx @@ -1,6 +1,7 @@ #include "kwsysPrivate.h" #include KWSYS_HEADER(stl/vector) #include KWSYS_HEADER(ios/sstream) +#include KWSYS_HEADER(ios/fstream) #include KWSYS_HEADER(ios/iostream) // Work-around CMake dependency scanning limitation. This must @@ -9,6 +10,7 @@ # include "kwsys_stl_string.hxx.in" # include "kwsys_stl_vector.h.in" # include "kwsys_ios_sstream.h.in" +# include "kwsys_ios_fstream.h.in" # include "kwsys_ios_iostream.h.in" #endif @@ -142,6 +144,13 @@ int testIOS(int, char*[]) return 1; } + // Just try to compile this. + if(x == 12345) + { + kwsys_ios::ifstream fin("/does_not_exist", + kwsys_ios::ios::in | kwsys_ios_binary); + } + kwsys_ios::cout << "IOS tests passed" << kwsys_ios::endl; return 0; }