diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-03-14 18:35:17 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-03-14 18:35:17 (GMT) |
commit | a135c6ff4dcded5661a2321512960b14cf8c15c8 (patch) | |
tree | b0017ecfe702304f592b9d4e8b943784cff26fb2 /3rdParty/Boost/src/boost/filesystem | |
parent | 02d6188ab335e6c62b8341b84579d9549d215118 (diff) | |
download | swift-contrib-a135c6ff4dcded5661a2321512960b14cf8c15c8.zip swift-contrib-a135c6ff4dcded5661a2321512960b14cf8c15c8.tar.bz2 |
Updated Boost to 1.46.1.
This should hopefuily fix a hang on shutdown on Mac OS X.
Resolves: #782
Release-Notes: Fixed a potential hang on shutdown on Mac OS X.
Diffstat (limited to '3rdParty/Boost/src/boost/filesystem')
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/config.hpp | 5 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/exception.hpp | 5 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/fstream.hpp | 5 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/operations.hpp | 5 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/path.hpp | 5 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v2/config.hpp | 10 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp | 11 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp | 1 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v2/operations.hpp | 57 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v2/path.hpp | 9 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp | 3 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v3/operations.hpp | 103 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/v3/path.hpp | 3 |
13 files changed, 147 insertions, 75 deletions
diff --git a/3rdParty/Boost/src/boost/filesystem/config.hpp b/3rdParty/Boost/src/boost/filesystem/config.hpp index 9d12bce..c813bf5 100644 --- a/3rdParty/Boost/src/boost/filesystem/config.hpp +++ b/3rdParty/Boost/src/boost/filesystem/config.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_CONFIGX_HPP #define BOOST_FILESYSTEM_CONFIGX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/exception.hpp b/3rdParty/Boost/src/boost/filesystem/exception.hpp index cced257..6ba8466 100644 --- a/3rdParty/Boost/src/boost/filesystem/exception.hpp +++ b/3rdParty/Boost/src/boost/filesystem/exception.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_EXCEPTIONX_HPP #define BOOST_FILESYSTEM_EXCEPTIONX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/fstream.hpp index ae44cd9..e159e58 100644 --- a/3rdParty/Boost/src/boost/filesystem/fstream.hpp +++ b/3rdParty/Boost/src/boost/filesystem/fstream.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_FSTREAMX_HPP #define BOOST_FILESYSTEM_FSTREAMX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/operations.hpp b/3rdParty/Boost/src/boost/filesystem/operations.hpp index 7dc94e9..db7b123 100644 --- a/3rdParty/Boost/src/boost/filesystem/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/operations.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_OPERATIONSX_HPP #define BOOST_FILESYSTEM_OPERATIONSX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/path.hpp b/3rdParty/Boost/src/boost/filesystem/path.hpp index bf12174..3bed7d2 100644 --- a/3rdParty/Boost/src/boost/filesystem/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/path.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_PATHX_HPP #define BOOST_FILESYSTEM_PATHX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/v2/config.hpp b/3rdParty/Boost/src/boost/filesystem/v2/config.hpp index 62656ef..7116de5 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/config.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/config.hpp @@ -51,6 +51,16 @@ # endif # endif +// throw an exception ----------------------------------------------------------------// +// +// Exceptions were originally thrown via boost::throw_exception(). +// As throw_exception() became more complex, it caused user error reporting +// to be harder to interpret, since the exception reported became much more complex. +// The immediate fix was to throw directly, wrapped in a macro to make any later change +// easier. + +#define BOOST_FILESYSTEM_THROW(EX) throw EX + // narrow support only for badly broken compilers or libraries -------------// # if defined(BOOST_NO_STD_WSTRING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STD_LOCALE) || BOOST_WORKAROUND(__BORLANDC__, <0x610) diff --git a/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp b/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp index 4695a01..30b6ade 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp @@ -13,7 +13,8 @@ #ifndef BOOST_FILESYSTEM2_CONVENIENCE_HPP #define BOOST_FILESYSTEM2_CONVENIENCE_HPP -#include <boost/filesystem/operations.hpp> +#include <boost/filesystem/v2/config.hpp> +#include <boost/filesystem/v2/operations.hpp> #include <boost/system/error_code.hpp> #include <vector> #include <stack> @@ -85,11 +86,11 @@ namespace boost # if !defined(_STLPORT_VERSION) return ph.parent_path() / (basename(ph) + new_extension); # else - typedef BOOST_FS_TYPENAME Path::string_type string_type; - string_type filename = basename(ph) + new_extension; - return ph.parent_path() / filename; + typedef BOOST_FS_TYPENAME Path::string_type string_type; + string_type filename = basename(ph) + new_extension; + return ph.parent_path() / filename; # endif - } + } # endif # ifndef BOOST_FILESYSTEM2_NARROW_ONLY diff --git a/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp index bdcd485..887d59d 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp @@ -12,6 +12,7 @@ #ifndef BOOST_FILESYSTEM2_FSTREAM_HPP #define BOOST_FILESYSTEM2_FSTREAM_HPP +#include <boost/filesystem/v2/config.hpp> #include <boost/filesystem/v2/operations.hpp> // for 8.3 hack (see below) #include <boost/utility/enable_if.hpp> #include <boost/detail/workaround.hpp> diff --git a/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp b/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp index c60046f..57c406d 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp @@ -14,6 +14,7 @@ #ifndef BOOST_FILESYSTEM2_OPERATIONS_HPP #define BOOST_FILESYSTEM2_OPERATIONS_HPP +#include <boost/filesystem/v2/config.hpp> #include <boost/filesystem/v2/path.hpp> #include <boost/detail/scoped_enum_emulation.hpp> @@ -258,7 +259,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::status", ph, ec ) ); return result; } @@ -277,7 +278,7 @@ namespace boost system::error_code ec; file_status result( symlink_status( ph, ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::symlink_status", ph, ec ) ); return result; } @@ -292,7 +293,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::exists", ph, ec ) ); return exists( result ); } @@ -302,7 +303,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_directory", ph, ec ) ); return is_directory( result ); } @@ -312,7 +313,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_regular_file", ph, ec ) ); return is_regular_file( result ); } @@ -323,7 +324,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_regular", ph, ec ) ); return is_regular( result ); } @@ -334,7 +335,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_other", ph, ec ) ); return is_other( result ); } @@ -350,7 +351,7 @@ namespace boost system::error_code ec; file_status result( detail::symlink_status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_symlink", ph, ec ) ); return is_symlink( result ); # endif @@ -369,7 +370,7 @@ namespace boost detail::query_pair result( detail::is_empty_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_empty", ph, result.first ) ); return result.second; } @@ -379,7 +380,7 @@ namespace boost detail::query_pair result( detail::equivalent_api( ph1.external_file_string(), ph2.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::equivalent", ph1, ph2, result.first ) ); return result.second; } @@ -389,7 +390,7 @@ namespace boost detail::uintmax_pair result ( detail::file_size_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::file_size", ph, result.first ) ); return result.second; } @@ -399,7 +400,7 @@ namespace boost detail::space_pair result ( detail::space_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::space", ph, result.first ) ); return result.second; } @@ -409,7 +410,7 @@ namespace boost detail::time_pair result ( detail::last_write_time_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::last_write_time", ph, result.first ) ); return result.second; } @@ -422,7 +423,7 @@ namespace boost detail::query_pair result( detail::create_directory_api( dir_ph.external_directory_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::create_directory", dir_ph, result.first ) ); return result.second; @@ -437,7 +438,7 @@ namespace boost to_ph.external_file_string(), from_ph.external_file_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::create_hard_link", to_ph, from_ph, ec ) ); } @@ -461,7 +462,7 @@ namespace boost to_ph.external_file_string(), from_ph.external_file_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::create_symlink", to_ph, from_ph, ec ) ); } @@ -481,7 +482,7 @@ namespace boost system::error_code ec; file_status f = symlink_status( ph, ec ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::remove", ph, ec ) ); return detail::remove_aux( ph, f ); } @@ -491,7 +492,7 @@ namespace boost system::error_code ec; file_status f = symlink_status( ph, ec ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::remove_all", ph, ec ) ); return exists( f ) ? detail::remove_all_aux( ph, f ) : 0; } @@ -502,7 +503,7 @@ namespace boost from_path.external_directory_string(), to_path.external_directory_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::rename", from_path, to_path, ec ) ); } @@ -518,7 +519,7 @@ namespace boost from_path.external_directory_string(), to_path.external_directory_string(), option == copy_option::fail_if_exists ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::copy_file", from_path, to_path, ec ) ); } @@ -529,7 +530,7 @@ namespace boost typename Path::external_string_type ph; system::error_code ec( detail::get_current_path_api( ph ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::current_path", ec ) ); return Path( Path::traits_type::to_internal( ph ) ); } @@ -539,7 +540,7 @@ namespace boost system::error_code ec( detail::set_current_path_api( ph.external_directory_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::current_path", ph, ec ) ); } @@ -567,7 +568,7 @@ namespace boost system::error_code ec( detail::get_full_path_name_api( ph.external_file_string(), sys_ph ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::system_complete", ph, ec ) ); return Path( Path::traits_type::to_internal( sys_ph ) ); # else @@ -606,7 +607,7 @@ namespace boost system::error_code ec( detail::last_write_time_api( ph.external_file_string(), new_time ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::last_write_time", ph, ec ) ); } @@ -782,7 +783,7 @@ namespace boost { system::error_code ec = remove_api( ph.external_file_string() ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::remove", ph, ec ) ); return true; } @@ -803,7 +804,7 @@ namespace boost boost::system::error_code ec; boost::filesystem2::file_status fn = boost::filesystem2::symlink_status( itr->path(), ec ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem:remove_all", ph, ec ) ); count += remove_all_aux( itr->path(), fn ); } @@ -980,7 +981,7 @@ namespace boost system::error_code ec( m_init(dir_path) ); if ( ec ) { - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::basic_directory_iterator constructor", dir_path, ec ) ); } @@ -1013,7 +1014,7 @@ namespace boost name, fs, symlink_fs ); if ( ec ) { - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::basic_directory_iterator increment", m_imp->m_directory_entry.path().parent_path(), ec ) ); } diff --git a/3rdParty/Boost/src/boost/filesystem/v2/path.hpp b/3rdParty/Boost/src/boost/filesystem/v2/path.hpp index 16d67ca..615b89c 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/path.hpp @@ -20,16 +20,15 @@ #include <boost/filesystem/v2/config.hpp> #include <boost/system/system_error.hpp> #include <boost/iterator/iterator_facade.hpp> -#include <boost/throw_exception.hpp> #include <boost/shared_ptr.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/static_assert.hpp> +#include <boost/assert.hpp> #include <string> #include <algorithm> // for lexicographical_compare #include <iosfwd> // needed by basic_path inserter and extractor #include <stdexcept> -#include <cassert> # ifndef BOOST_FILESYSTEM2_NARROW_ONLY # include <locale> @@ -916,7 +915,7 @@ namespace boost boost::BOOST_FILESYSTEM2_NAMESPACE::basic_path<String, Traits> path_type; - assert( !str.empty() && str[pos] == slash<path_type>::value + BOOST_ASSERT( !str.empty() && str[pos] == slash<path_type>::value && "precondition violation" ); // subsequent logic expects pos to be for leftmost slash of a set @@ -1380,7 +1379,7 @@ namespace boost typedef typename Path::string_type string_type; typedef typename Path::traits_type traits_type; - assert( itr.m_pos < itr.m_path_ptr->m_path.size() && "basic_path::iterator increment past end()" ); + BOOST_ASSERT( itr.m_pos < itr.m_path_ptr->m_path.size() && "basic_path::iterator increment past end()" ); bool was_net( itr.m_name.size() > 2 && itr.m_name[0] == slash<Path>::value @@ -1439,7 +1438,7 @@ namespace boost template<class Path> void iterator_helper<Path>::do_decrement( iterator & itr ) { - assert( itr.m_pos && "basic_path::iterator decrement past begin()" ); + BOOST_ASSERT( itr.m_pos && "basic_path::iterator decrement past begin()" ); typedef typename Path::string_type string_type; typedef typename Path::traits_type traits_type; diff --git a/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp index 235aa79..60a2a3b 100644 --- a/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp @@ -27,7 +27,8 @@ // on Windows, except for standard libaries known to have wchar_t overloads for // file stream I/O, use path::string() to get a narrow character c_str() #if defined(BOOST_WINDOWS_API) \ - && !(defined(_CPPLIB_VER) && _CPPLIB_VER >= 405) // not (Dinkumware with overloads) + && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 405 || defined(_STLPORT_VERSION)) + // !Dinkumware || early Dinkumware || STLPort masquerading as Dinkumware # define BOOST_FILESYSTEM_C_STR string().c_str() // use narrow, since wide not available #else // use the native c_str, which will be narrow on POSIX, wide on Windows # define BOOST_FILESYSTEM_C_STR c_str() diff --git a/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp b/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp index cf47c56..7d1608d 100644 --- a/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp @@ -25,6 +25,7 @@ #include <boost/filesystem/v3/path.hpp> #include <boost/detail/scoped_enum_emulation.hpp> +#include <boost/detail/bitmask.hpp> #include <boost/system/error_code.hpp> #include <boost/system/system_error.hpp> #include <boost/shared_ptr.hpp> @@ -75,8 +76,8 @@ namespace boost fifo_file, socket_file, reparse_file, // Windows: FILE_ATTRIBUTE_REPARSE_POINT that is not a symlink - type_unknown, // file does exist, but isn't one of the above types or - // we don't have strong enough permission to find its type + type_unknown, // file does exist, but isn't one of the above types or + // we don't have strong enough permission to find its type _detail_directory_symlink // internal use only; never exposed to users }; @@ -84,7 +85,8 @@ namespace boost class BOOST_FILESYSTEM_DECL file_status { public: - explicit file_status(file_type v = status_error) : m_value(v) {} + file_status() : m_value(status_error) {} + explicit file_status(file_type v) : m_value(v) {} void type(file_type v) { m_value = v; } file_type type() const { return m_value; } @@ -122,7 +124,7 @@ namespace boost }; BOOST_SCOPED_ENUM_START(copy_option) - {fail_if_exists, overwrite_if_exists}; + {none, fail_if_exists = none, overwrite_if_exists}; BOOST_SCOPED_ENUM_END //--------------------------------------------------------------------------------------// @@ -191,6 +193,8 @@ namespace boost BOOST_FILESYSTEM_DECL path system_complete(const path& p, system::error_code* ec=0); BOOST_FILESYSTEM_DECL + path temp_directory_path(system::error_code* ec=0); + BOOST_FILESYSTEM_DECL path unique_path(const path& p, system::error_code* ec=0); } // namespace detail @@ -258,9 +262,7 @@ namespace boost // forward declarations path current_path(); // fwd declaration -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED path initial_path(); -# endif BOOST_FILESYSTEM_DECL path absolute(const path& p, const path& base=current_path()); @@ -331,17 +333,17 @@ namespace boost void create_directory_symlink(const path& to, const path& from, system::error_code& ec) {detail::create_directory_symlink(to, from, &ec);} inline - void create_hard_link(const path& to, const path& from) {detail::create_hard_link(to, from);} + void create_hard_link(const path& to, const path& new_hard_link) {detail::create_hard_link(to, new_hard_link);} inline - void create_hard_link(const path& to, const path& from, system::error_code& ec) - {detail::create_hard_link(to, from, &ec);} + void create_hard_link(const path& to, const path& new_hard_link, system::error_code& ec) + {detail::create_hard_link(to, new_hard_link, &ec);} inline - void create_symlink(const path& to, const path& from) {detail::create_symlink(to, from);} + void create_symlink(const path& to, const path& new_symlink) {detail::create_symlink(to, new_symlink);} inline - void create_symlink(const path& to, const path& from, system::error_code& ec) - {detail::create_symlink(to, from, &ec);} + void create_symlink(const path& to, const path& new_symlink, system::error_code& ec) + {detail::create_symlink(to, new_symlink, &ec);} inline path current_path() {return detail::current_path();} @@ -372,7 +374,6 @@ namespace boost inline boost::uintmax_t hard_link_count(const path& p, system::error_code& ec) {return detail::hard_link_count(p, &ec);} -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED inline path initial_path() {return detail::initial_path();} @@ -383,7 +384,6 @@ namespace boost path initial_path() {return initial_path();} template <class Path> path initial_path(system::error_code& ec) {return detail::initial_path(&ec);} -# endif inline std::time_t last_write_time(const path& p) {return detail::last_write_time(p);} @@ -446,6 +446,12 @@ namespace boost path system_complete(const path& p, system::error_code& ec) {return detail::system_complete(p, &ec);} inline + path temp_directory_path() {return detail::temp_directory_path();} + + inline + path temp_directory_path(system::error_code& ec) + {return detail::temp_directory_path(&ec);} + inline path unique_path(const path& p="%%%%-%%%%-%%%%-%%%%") { return detail::unique_path(p); } inline @@ -633,6 +639,17 @@ namespace detail // // //--------------------------------------------------------------------------------------// + BOOST_SCOPED_ENUM_START(symlink_option) + { + none, + no_recurse = none, // don't follow directory symlinks (default behavior) + recurse, // follow directory symlinks + _detail_no_push = recurse << 1 // internal use only + }; + BOOST_SCOPED_ENUM_END + + BOOST_BITMASK(BOOST_SCOPED_ENUM(symlink_option)) + namespace detail { struct recur_dir_itr_imp @@ -640,9 +657,9 @@ namespace detail typedef directory_iterator element_type; std::stack< element_type, std::vector< element_type > > m_stack; int m_level; - bool m_no_push_request; + BOOST_SCOPED_ENUM(symlink_option) m_options; - recur_dir_itr_imp() : m_level(0), m_no_push_request(false) {} + recur_dir_itr_imp() : m_level(0), m_options(symlink_option::none) {} void increment(system::error_code* ec); // ec == 0 means throw on error @@ -658,9 +675,11 @@ namespace detail void recur_dir_itr_imp::increment(system::error_code* ec) // ec == 0 means throw on error { - if (m_no_push_request) - { m_no_push_request = false; } - else if (is_directory(m_stack.top()->status())) + if ((m_options & symlink_option::_detail_no_push) == symlink_option::_detail_no_push) + m_options &= ~symlink_option::_detail_no_push; + else if (is_directory(m_stack.top()->status()) + && (!is_symlink(m_stack.top()->symlink_status()) + || (m_options & symlink_option::recurse) == symlink_option::recurse)) { if (ec == 0) m_stack.push(directory_iterator(m_stack.top()->path())); @@ -714,27 +733,41 @@ namespace detail recursive_directory_iterator(){} // creates the "end" iterator - explicit recursive_directory_iterator(const path& dir_path) + explicit recursive_directory_iterator(const path& dir_path, + BOOST_SCOPED_ENUM(symlink_option) opt = symlink_option::none) : m_imp(new detail::recur_dir_itr_imp) { + m_imp->m_options = opt; m_imp->m_stack.push(directory_iterator(dir_path)); if (m_imp->m_stack.top() == directory_iterator()) { m_imp.reset (); } } recursive_directory_iterator(const path& dir_path, + BOOST_SCOPED_ENUM(symlink_option) opt, + system::error_code & ec) + : m_imp(new detail::recur_dir_itr_imp) + { + m_imp->m_options = opt; + m_imp->m_stack.push(directory_iterator(dir_path, ec)); + if (m_imp->m_stack.top() == directory_iterator()) + { m_imp.reset (); } + } + + recursive_directory_iterator(const path& dir_path, system::error_code & ec) : m_imp(new detail::recur_dir_itr_imp) { + m_imp->m_options = symlink_option::none; m_imp->m_stack.push(directory_iterator(dir_path, ec)); if (m_imp->m_stack.top() == directory_iterator()) { m_imp.reset (); } } - recursive_directory_iterator& increment(system::error_code* ec) + recursive_directory_iterator& increment(system::error_code& ec) { BOOST_ASSERT(m_imp.get() && "increment() on end recursive_directory_iterator"); - m_imp->increment(ec); + m_imp->increment(&ec); return *this; } @@ -744,12 +777,17 @@ namespace detail return m_imp->m_level; } - bool no_push_request() const + bool no_push_pending() const { - BOOST_ASSERT(m_imp.get() && "no_push_request() on end recursive_directory_iterator"); - return m_imp->m_no_push_request; + BOOST_ASSERT(m_imp.get() && "is_no_push_requested() on end recursive_directory_iterator"); + return (m_imp->m_options & symlink_option::_detail_no_push) + == symlink_option::_detail_no_push; } +# ifndef BOOST_FILESYSTEM_NO_DEPRECATED + bool no_push_request() const { return no_push_pending(); } +# endif + void pop() { BOOST_ASSERT(m_imp.get() && "pop() on end recursive_directory_iterator"); @@ -757,10 +795,13 @@ namespace detail if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator } - void no_push() + void no_push(bool value=true) { BOOST_ASSERT(m_imp.get() && "no_push() on end recursive_directory_iterator"); - m_imp->m_no_push_request = true; + if (value) + m_imp->m_options |= symlink_option::_detail_no_push; + else + m_imp->m_options &= ~symlink_option::_detail_no_push; } file_status status() const @@ -799,7 +840,8 @@ namespace detail { BOOST_ASSERT(m_imp.get() && "increment of end recursive_directory_iterator"); m_imp->increment(0); - if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator + if (m_imp->m_stack.empty()) + m_imp.reset(); // done, so make end iterator } bool equal(const recursive_directory_iterator& rhs) const @@ -963,6 +1005,7 @@ namespace boost using filesystem3::file_type; using filesystem3::filesystem_error; using filesystem3::hard_link_count; + using filesystem3::initial_path; using filesystem3::is_directory; using filesystem3::is_directory; using filesystem3::is_empty; @@ -973,6 +1016,7 @@ namespace boost using filesystem3::read_symlink; using filesystem3::recursive_directory_iterator; using filesystem3::regular_file; + using filesystem3::reparse_file; using filesystem3::remove; using filesystem3::remove_all; using filesystem3::rename; @@ -984,12 +1028,13 @@ namespace boost using filesystem3::status_error; using filesystem3::status_known; using filesystem3::symlink_file; + using filesystem3::symlink_option; using filesystem3::symlink_status; using filesystem3::system_complete; + using filesystem3::temp_directory_path; using filesystem3::type_unknown; using filesystem3::unique_path; # ifndef BOOST_FILESYSTEM_NO_DEPRECATED - using filesystem3::initial_path; using filesystem3::is_regular; using filesystem3::status_unknown; using filesystem3::symbolic_link_exists; diff --git a/3rdParty/Boost/src/boost/filesystem/v3/path.hpp b/3rdParty/Boost/src/boost/filesystem/v3/path.hpp index 1cd1522..f81b631 100644 --- a/3rdParty/Boost/src/boost/filesystem/v3/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v3/path.hpp @@ -452,7 +452,6 @@ namespace filesystem3 void m_erase_redundant_separator(string_type::size_type sep_pos); string_type::size_type m_parent_path_end() const; - void m_portable(); path& m_normalize(); @@ -479,7 +478,7 @@ namespace filesystem3 class path::iterator : public boost::iterator_facade< - iterator, + path::iterator, path const, boost::bidirectional_traversal_tag > { |