Compare commits

...

16 Commits

Author SHA1 Message Date
Beman Dawes 99a4447afc Release 1.41.0
[SVN r57747]
2009-11-18 14:58:26 +00:00
Beman Dawes f8ddc693ae System: merge trunk
[SVN r57634]
2009-11-13 14:37:32 +00:00
Troy D. Straszheim cf8fbe855f rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release.
[SVN r56941]
2009-10-17 01:10:45 +00:00
Beman Dawes 691fb5522c system: merge trunk
[SVN r56777]
2009-10-13 13:44:42 +00:00
Beman Dawes e8e4f47902 Merge from trunk
[SVN r55489]
2009-08-09 17:34:58 +00:00
Troy D. Straszheim 078a1f23c4 Copyrights on CMakeLists.txt to keep them from clogging up the inspect
reports.  This is essentially the same commit as r55095 on the release
branch.



[SVN r55159]
2009-07-26 00:49:56 +00:00
Troy D. Straszheim accf4f8414 Add basic copyright/license to keep cmake out of the inspection report
[SVN r55095]
2009-07-22 21:51:01 +00:00
Beman Dawes 3f26239374 System: fix #3113
[SVN r53460]
2009-05-30 15:13:39 +00:00
Beman Dawes fd0605bd7e System, Filesystem: remove boost/detail/test_framework.hpp; use boost/detail/lightweight_test.hpp instead (Thanks to Peter Dimov for pointing this out)
[SVN r51966]
2009-03-25 12:11:47 +00:00
Beman Dawes 83db702d99 System: removed dependency on Boost.Test
[SVN r51960]
2009-03-24 15:38:10 +00:00
Beman Dawes f1cdde273a System: move throws function to namespace boost to allow peaceful coexistence with throws object.
[SVN r50727]
2009-01-22 14:47:50 +00:00
Beman Dawes 5bc362e4f3 System: provide optional throws function rather than throws object
[SVN r50705]
2009-01-21 18:01:14 +00:00
Beman Dawes a6728e5fb9 System: add deprecated get_posix_category() to fix ticket #2461
[SVN r49717]
2008-11-13 16:05:49 +00:00
Beman Dawes 99ee7ddaab System: rename msvc_system -> system->msvc so VC++ start page recent solutions list is easier to use
[SVN r49716]
2008-11-13 15:57:04 +00:00
Michael A. Jackson 3e8a2633f4 Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor
[SVN r49510]
2008-11-01 13:15:41 +00:00
Beman Dawes 888786e838 System: apply patch from ticket #2175
[SVN r49293]
2008-10-12 14:07:22 +00:00
10 changed files with 144 additions and 159 deletions
-21
View File
@@ -1,21 +0,0 @@
#----------------------------------------------------------------------------
# This file was automatically generated from the original CMakeLists.txt file
# Add a variable to hold the headers for the library
set (lib_headers
system
)
# Add a library target to the build system
boost_library_project(
system
SRCDIRS src
# TESTDIRS
HEADERS ${lib_headers}
# DOCDIRS
# DESCRIPTION
MODULARIZED
# AUTHORS
# MAINTAINERS
)
+31 -19
View File
@@ -129,7 +129,7 @@ namespace boost
too_many_files_open_in_system = ENFILE,
too_many_files_open = EMFILE,
too_many_links = EMLINK,
too_many_synbolic_link_levels = ELOOP,
too_many_symbolic_link_levels = ELOOP,
value_too_large = EOVERFLOW,
wrong_protocol_type = EPROTOTYPE
};
@@ -183,11 +183,14 @@ namespace boost
{
public:
virtual ~error_category(){}
virtual inline const char * name() const; // see implementation note below
virtual inline std::string message( int ev ) const; // see implementation note below
virtual inline error_condition default_error_condition( int ev ) const;
virtual inline bool equivalent( int code, const error_condition & condition ) const;
virtual inline bool equivalent( const error_code & code, int condition ) const;
virtual const char * name() const = 0;
virtual std::string message( int ev ) const = 0;
virtual error_condition default_error_condition( int ev ) const;
virtual bool equivalent( int code,
const error_condition & condition ) const;
virtual bool equivalent( const error_code & code,
int condition ) const;
bool operator==(const error_category & rhs) const { return this == &rhs; }
bool operator!=(const error_category & rhs) const { return this != &rhs; }
@@ -384,8 +387,30 @@ namespace boost
};
// predefined error_code object used as "throw on error" tag
# ifndef BOOST_SYSTEM_NO_DEPRECATED
BOOST_SYSTEM_DECL extern error_code throws;
# endif
// Moving from a "throws" object to a "throws" function without breaking
// existing code is a bit of a problem. The workaround is to place the
// "throws" function in namespace boost rather than namespace boost::system.
} // namespace system
namespace detail { inline system::error_code * throws() { return 0; } }
// Misuse of the error_code object is turned into a noisy failure by
// poisoning the reference. This particular implementation doesn't
// produce warnings or errors from popular compilers, is very efficient
// (as determined by inspecting generated code), and does not suffer
// from order of initialization problems. In practice, it also seems
// cause user function error handling implementation errors to be detected
// very early in the development cycle.
inline system::error_code & throws()
{ return *detail::throws(); }
namespace system
{
// non-member functions ------------------------------------------------//
inline bool operator!=( const error_code & lhs,
@@ -474,19 +499,6 @@ namespace boost
return *this == code.category() && code.value() == condition;
}
// error_category implementation note: VC++ 8.0 objects to name() and
// message() being pure virtual functions. Thus these implementations.
inline const char * error_category::name() const
{
return "error: should never be called";
}
inline std::string error_category::message( int ) const
{
static std::string s("error: should never be called");
return s;
}
} // namespace system
} // namespace boost
-1
View File
@@ -1 +0,0 @@
boost_module(system DEPENDS utility)
-7
View File
@@ -1,7 +0,0 @@
boost_add_library(
boost_system
error_code.cpp
SHARED_COMPILE_FLAGS "-DBOOST_SYSTEM_DYN_LINK=1"
STATIC_COMPILE_FLAGS "-DBOOST_SYSTEM_STATIC_LINK=1"
)
+4 -2
View File
@@ -23,7 +23,7 @@
#include <cassert>
using namespace boost::system;
using namespace boost::system::posix_error;
using namespace boost::system::errc;
#include <cstring> // for strerror/strerror_r
@@ -193,7 +193,7 @@ namespace
case EIO: return make_error_condition( io_error );
case EISCONN: return make_error_condition( already_connected );
case EISDIR: return make_error_condition( is_a_directory );
case ELOOP: return make_error_condition( too_many_synbolic_link_levels );
case ELOOP: return make_error_condition( too_many_symbolic_link_levels );
case EMFILE: return make_error_condition( too_many_files_open );
case EMLINK: return make_error_condition( too_many_links );
case EMSGSIZE: return make_error_condition( message_size );
@@ -411,11 +411,13 @@ namespace boost
namespace system
{
# ifndef BOOST_SYSTEM_NO_DEPRECATED
BOOST_SYSTEM_DECL error_code throws; // "throw on error" special error_code;
// note that it doesn't matter if this
// isn't initialized before use since
// the only use is to take its
// address for comparison purposes
# endif
BOOST_SYSTEM_DECL const error_category & get_system_category()
{
+1 -1
View File
@@ -40,4 +40,4 @@ project
[ run header_only_test.cpp
: : : <link>static
]
;
;
+108 -108
View File
@@ -11,7 +11,7 @@
#include <boost/config/warning_disable.hpp>
#include <boost/test/minimal.hpp>
#include <boost/detail/lightweight_test.hpp>
#include <boost/system/error_code.hpp>
#include <boost/system/cygwin_error.hpp>
#include <boost/system/linux_error.hpp>
@@ -45,100 +45,100 @@ namespace
ss << ec;
ss >> s;
BOOST_CHECK( s == expected );
BOOST_TEST( s == expected );
}
}
// test_main ---------------------------------------------------------------//
// main ------------------------------------------------------------------------------//
// TODO: add hash_value tests
int test_main( int, char ** )
int main( int, char ** )
{
std::cout << "General tests...\n";
// unit tests:
BOOST_CHECK( posix_category == posix_category );
BOOST_CHECK( system_category == system_category );
BOOST_CHECK( posix_category != system_category );
BOOST_CHECK( system_category != posix_category );
BOOST_TEST( posix_category == posix_category );
BOOST_TEST( system_category == system_category );
BOOST_TEST( posix_category != system_category );
BOOST_TEST( system_category != posix_category );
if ( std::less<const error_category*>()( &posix_category, &system_category ) )
{
BOOST_CHECK( posix_category < system_category );
BOOST_CHECK( !(system_category < posix_category) );
BOOST_TEST( posix_category < system_category );
BOOST_TEST( !(system_category < posix_category) );
}
else
{
BOOST_CHECK( system_category < posix_category );
BOOST_CHECK( !(posix_category < system_category) );
BOOST_TEST( system_category < posix_category );
BOOST_TEST( !(posix_category < system_category) );
}
error_code ec;
error_condition dec;
BOOST_CHECK( !ec );
BOOST_CHECK( ec.value() == 0 );
BOOST_TEST( !ec );
BOOST_TEST( ec.value() == 0 );
dec = ec.default_error_condition();
BOOST_CHECK( dec.value() == 0 );
BOOST_CHECK( dec.category() == posix_category );
BOOST_CHECK( ec == posix::success );
BOOST_CHECK( ec.category() == system_category );
BOOST_CHECK( std::strcmp( ec.category().name(), "system") == 0 );
BOOST_CHECK( !(ec < error_code( 0, system_category )) );
BOOST_CHECK( !(error_code( 0, system_category ) < ec) );
BOOST_CHECK( ec < error_code( 1, system_category ) );
BOOST_CHECK( !(error_code( 1, system_category ) < ec) );
BOOST_TEST( dec.value() == 0 );
BOOST_TEST( dec.category() == posix_category );
BOOST_TEST( ec == posix::success );
BOOST_TEST( ec.category() == system_category );
BOOST_TEST( std::strcmp( ec.category().name(), "system") == 0 );
BOOST_TEST( !(ec < error_code( 0, system_category )) );
BOOST_TEST( !(error_code( 0, system_category ) < ec) );
BOOST_TEST( ec < error_code( 1, system_category ) );
BOOST_TEST( !(error_code( 1, system_category ) < ec) );
error_code ec_0_system( 0, system_category );
BOOST_CHECK( !ec_0_system );
BOOST_CHECK( ec_0_system.value() == 0 );
BOOST_TEST( !ec_0_system );
BOOST_TEST( ec_0_system.value() == 0 );
dec = ec_0_system.default_error_condition();
BOOST_CHECK( dec.value() == 0 );
BOOST_CHECK( dec.category() == posix_category );
BOOST_CHECK( ec_0_system == posix::success );
BOOST_CHECK( ec_0_system.category() == system_category );
BOOST_CHECK( std::strcmp( ec_0_system.category().name(), "system") == 0 );
BOOST_TEST( dec.value() == 0 );
BOOST_TEST( dec.category() == posix_category );
BOOST_TEST( ec_0_system == posix::success );
BOOST_TEST( ec_0_system.category() == system_category );
BOOST_TEST( std::strcmp( ec_0_system.category().name(), "system") == 0 );
check_ostream( ec_0_system, "system:0" );
BOOST_CHECK( ec_0_system == ec );
BOOST_TEST( ec_0_system == ec );
error_code ec_1_system( 1, system_category );
BOOST_CHECK( ec_1_system );
BOOST_CHECK( ec_1_system.value() == 1 );
BOOST_CHECK( ec_1_system.value() != 0 );
BOOST_CHECK( ec != ec_1_system );
BOOST_CHECK( ec_0_system != ec_1_system );
BOOST_TEST( ec_1_system );
BOOST_TEST( ec_1_system.value() == 1 );
BOOST_TEST( ec_1_system.value() != 0 );
BOOST_TEST( ec != ec_1_system );
BOOST_TEST( ec_0_system != ec_1_system );
check_ostream( ec_1_system, "system:1" );
ec = error_code( BOOST_ACCESS_ERROR_MACRO, system_category );
BOOST_CHECK( ec );
BOOST_CHECK( ec.value() == BOOST_ACCESS_ERROR_MACRO );
BOOST_TEST( ec );
BOOST_TEST( ec.value() == BOOST_ACCESS_ERROR_MACRO );
dec = ec.default_error_condition();
BOOST_CHECK( dec.value() == static_cast<int>(posix::permission_denied) );
BOOST_CHECK( dec.category() == posix_category );
BOOST_CHECK( dec == error_condition( posix::permission_denied, posix_category ) );
BOOST_CHECK( dec == posix::permission_denied );
BOOST_CHECK( posix::permission_denied == dec );
BOOST_CHECK( ec == posix::permission_denied );
BOOST_CHECK( ec.category() == system_category );
BOOST_CHECK( std::strcmp( ec.category().name(), "system") == 0 );
BOOST_TEST( dec.value() == static_cast<int>(posix::permission_denied) );
BOOST_TEST( dec.category() == posix_category );
BOOST_TEST( dec == error_condition( posix::permission_denied, posix_category ) );
BOOST_TEST( dec == posix::permission_denied );
BOOST_TEST( posix::permission_denied == dec );
BOOST_TEST( ec == posix::permission_denied );
BOOST_TEST( ec.category() == system_category );
BOOST_TEST( std::strcmp( ec.category().name(), "system") == 0 );
// test the explicit make_error_code conversion for posix
ec = make_error_code( posix::bad_message );
BOOST_CHECK( ec );
BOOST_CHECK( ec == posix::bad_message );
BOOST_CHECK( posix::bad_message == ec );
BOOST_CHECK( ec != posix::permission_denied );
BOOST_CHECK( posix::permission_denied != ec );
BOOST_CHECK( ec.category() == posix_category );
BOOST_TEST( ec );
BOOST_TEST( ec == posix::bad_message );
BOOST_TEST( posix::bad_message == ec );
BOOST_TEST( ec != posix::permission_denied );
BOOST_TEST( posix::permission_denied != ec );
BOOST_TEST( ec.category() == posix_category );
// test the deprecated predefined error_category synonyms
BOOST_CHECK( &system_category == &native_ecat );
BOOST_CHECK( &posix_category == &errno_ecat );
BOOST_CHECK( system_category == native_ecat );
BOOST_CHECK( posix_category == errno_ecat );
BOOST_TEST( &system_category == &native_ecat );
BOOST_TEST( &posix_category == &errno_ecat );
BOOST_TEST( system_category == native_ecat );
BOOST_TEST( posix_category == errno_ecat );
// test error_code and error_condition message();
// see Boost.Filesystem operations_test for code specific message() tests
@@ -146,120 +146,120 @@ int test_main( int, char ** )
std::cout << "error_code message for -1 is \"" << ec.message() << "\"\n";
#if defined(BOOST_WINDOWS_API)
// Borland appends newline, so just check text
BOOST_CHECK( ec.message().substr(0,13) == "Unknown error" );
BOOST_TEST( ec.message().substr(0,13) == "Unknown error" );
#elif defined(linux) || defined(__linux) || defined(__linux__)
// Linux appends value to message as unsigned, so it varies with # of bits
BOOST_CHECK( ec.message().substr(0,13) == "Unknown error" );
BOOST_TEST( ec.message().substr(0,13) == "Unknown error" );
#elif defined(__hpux)
BOOST_CHECK( ec.message() == "" );
BOOST_TEST( ec.message() == "" );
#elif defined(__osf__)
BOOST_CHECK( ec.message() == "Error -1 occurred." );
BOOST_TEST( ec.message() == "Error -1 occurred." );
#elif defined(__vms)
BOOST_CHECK( ec.message() == "error -1" );
BOOST_TEST( ec.message() == "error -1" );
#endif
ec = error_code( BOOST_ACCESS_ERROR_MACRO, system_category );
BOOST_CHECK( ec.message() != "" );
BOOST_CHECK( ec.message().substr( 0, 13) != "Unknown error" );
BOOST_TEST( ec.message() != "" );
BOOST_TEST( ec.message().substr( 0, 13) != "Unknown error" );
dec = error_condition( -1, posix_category );
std::cout << "error_condition message for -1 is \"" << dec.message() << "\"\n";
#if defined(BOOST_WINDOWS_API)
// Borland appends newline, so just check text
BOOST_CHECK( dec.message().substr(0,13) == "Unknown error" );
BOOST_TEST( dec.message().substr(0,13) == "Unknown error" );
#elif defined(linux) || defined(__linux) || defined(__linux__)
// Linux appends value to message as unsigned, so it varies with # of bits
BOOST_CHECK( dec.message().substr(0,13) == "Unknown error" );
BOOST_TEST( dec.message().substr(0,13) == "Unknown error" );
#elif defined(__hpux)
BOOST_CHECK( dec.message() == "" );
BOOST_TEST( dec.message() == "" );
#elif defined(__osf__)
BOOST_CHECK( dec.message() == "Error -1 occurred." );
BOOST_TEST( dec.message() == "Error -1 occurred." );
#elif defined(__vms)
BOOST_CHECK( dec.message() == "error -1" );
BOOST_TEST( dec.message() == "error -1" );
#endif
dec = error_condition( BOOST_ACCESS_ERROR_MACRO, posix_category );
BOOST_CHECK( dec.message() != "" );
BOOST_CHECK( dec.message().substr( 0, 13) != "Unknown error" );
BOOST_TEST( dec.message() != "" );
BOOST_TEST( dec.message().substr( 0, 13) != "Unknown error" );
#ifdef BOOST_WINDOWS_API
std::cout << "Windows tests...\n";
// these tests probe the Windows posix decoder
// test the first entry in the decoder table:
ec = error_code( ERROR_ACCESS_DENIED, system_category );
BOOST_CHECK( ec.value() == ERROR_ACCESS_DENIED );
BOOST_CHECK( ec == posix::permission_denied );
BOOST_CHECK( ec.default_error_condition().value() == posix::permission_denied );
BOOST_CHECK( ec.default_error_condition().category() == posix_category );
BOOST_TEST( ec.value() == ERROR_ACCESS_DENIED );
BOOST_TEST( ec == posix::permission_denied );
BOOST_TEST( ec.default_error_condition().value() == posix::permission_denied );
BOOST_TEST( ec.default_error_condition().category() == posix_category );
// test the second entry in the decoder table:
ec = error_code( ERROR_ALREADY_EXISTS, system_category );
BOOST_CHECK( ec.value() == ERROR_ALREADY_EXISTS );
BOOST_CHECK( ec == posix::file_exists );
BOOST_CHECK( ec.default_error_condition().value() == posix::file_exists );
BOOST_CHECK( ec.default_error_condition().category() == posix_category );
BOOST_TEST( ec.value() == ERROR_ALREADY_EXISTS );
BOOST_TEST( ec == posix::file_exists );
BOOST_TEST( ec.default_error_condition().value() == posix::file_exists );
BOOST_TEST( ec.default_error_condition().category() == posix_category );
// test the third entry in the decoder table:
ec = error_code( ERROR_BAD_UNIT, system_category );
BOOST_CHECK( ec.value() == ERROR_BAD_UNIT );
BOOST_CHECK( ec == posix::no_such_device );
BOOST_CHECK( ec.default_error_condition().value() == posix::no_such_device );
BOOST_CHECK( ec.default_error_condition().category() == posix_category );
BOOST_TEST( ec.value() == ERROR_BAD_UNIT );
BOOST_TEST( ec == posix::no_such_device );
BOOST_TEST( ec.default_error_condition().value() == posix::no_such_device );
BOOST_TEST( ec.default_error_condition().category() == posix_category );
// test the last non-Winsock entry in the decoder table:
ec = error_code( ERROR_WRITE_PROTECT, system_category );
BOOST_CHECK( ec.value() == ERROR_WRITE_PROTECT );
BOOST_CHECK( ec == posix::permission_denied );
BOOST_CHECK( ec.default_error_condition().value() == posix::permission_denied );
BOOST_CHECK( ec.default_error_condition().category() == posix_category );
BOOST_TEST( ec.value() == ERROR_WRITE_PROTECT );
BOOST_TEST( ec == posix::permission_denied );
BOOST_TEST( ec.default_error_condition().value() == posix::permission_denied );
BOOST_TEST( ec.default_error_condition().category() == posix_category );
// test the last Winsock entry in the decoder table:
ec = error_code( WSAEWOULDBLOCK, system_category );
BOOST_CHECK( ec.value() == WSAEWOULDBLOCK );
BOOST_CHECK( ec == posix::operation_would_block );
BOOST_CHECK( ec.default_error_condition().value() == posix::operation_would_block );
BOOST_CHECK( ec.default_error_condition().category() == posix_category );
BOOST_TEST( ec.value() == WSAEWOULDBLOCK );
BOOST_TEST( ec == posix::operation_would_block );
BOOST_TEST( ec.default_error_condition().value() == posix::operation_would_block );
BOOST_TEST( ec.default_error_condition().category() == posix_category );
// test not-in-table condition:
ec = error_code( 1234567890, system_category );
BOOST_CHECK( ec.value() == 1234567890 );
BOOST_CHECK( ec.default_error_condition().value() == 1234567890 );
BOOST_CHECK( ec.default_error_condition().category() == system_category );
BOOST_TEST( ec.value() == 1234567890 );
BOOST_TEST( ec.default_error_condition().value() == 1234567890 );
BOOST_TEST( ec.default_error_condition().category() == system_category );
#else // POSIX
std::cout << "POSIX tests...\n";
ec = error_code( EACCES, system_category );
BOOST_CHECK( ec == error_code( posix::permission_denied, system_category ) );
BOOST_CHECK( error_code( posix::permission_denied, system_category ) == ec );
BOOST_CHECK( ec == posix::permission_denied );
BOOST_CHECK( posix::permission_denied == ec );
BOOST_CHECK( ec.default_error_condition().value() == posix::permission_denied );
BOOST_CHECK( ec.default_error_condition().category() == posix_category );
BOOST_TEST( ec == error_code( posix::permission_denied, system_category ) );
BOOST_TEST( error_code( posix::permission_denied, system_category ) == ec );
BOOST_TEST( ec == posix::permission_denied );
BOOST_TEST( posix::permission_denied == ec );
BOOST_TEST( ec.default_error_condition().value() == posix::permission_denied );
BOOST_TEST( ec.default_error_condition().category() == posix_category );
# ifdef __CYGWIN__
std::cout << "Cygwin tests...\n";
ec = cygwin_error::no_package;
BOOST_CHECK( ec == cygwin_error::no_package );
BOOST_CHECK( ec == error_code( ENOPKG, system_category ) );
BOOST_CHECK( ec == error_code( cygwin_error::no_package, system_category ) );
BOOST_CHECK( ec.default_error_condition().category() == system_category );
BOOST_TEST( ec == cygwin_error::no_package );
BOOST_TEST( ec == error_code( ENOPKG, system_category ) );
BOOST_TEST( ec == error_code( cygwin_error::no_package, system_category ) );
BOOST_TEST( ec.default_error_condition().category() == system_category );
# elif defined(linux) || defined(__linux) || defined(__linux__)
std::cout << "Linux tests...\n";
ec = linux_error::dot_dot_error;
BOOST_CHECK( ec == linux_error::dot_dot_error );
BOOST_CHECK( ec == error_code( EDOTDOT, system_category ) );
BOOST_CHECK( ec == error_code( linux_error::dot_dot_error, system_category ) );
BOOST_CHECK( ec.default_error_condition().category() == system_category );
BOOST_TEST( ec == linux_error::dot_dot_error );
BOOST_TEST( ec == error_code( EDOTDOT, system_category ) );
BOOST_TEST( ec == error_code( linux_error::dot_dot_error, system_category ) );
BOOST_TEST( ec.default_error_condition().category() == system_category );
# endif
#endif
return 0;
return ::boost::report_errors();
}