$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: bdawes_at_[hidden]
Date: 2007-11-12 21:54:33
Author: bemandawes
Date: 2007-11-12 21:54:32 EST (Mon, 12 Nov 2007)
New Revision: 41052
URL: http://svn.boost.org/trac/boost/changeset/41052
Log:
Add tests for, and fix, current_path overloading.
Text files modified: 
   trunk/boost/filesystem/operations.hpp          |    13 +++++++++----                           
   trunk/libs/filesystem/test/operations_test.cpp |     7 +++++++                                 
   2 files changed, 16 insertions(+), 4 deletions(-)
Modified: trunk/boost/filesystem/operations.hpp
==============================================================================
--- trunk/boost/filesystem/operations.hpp	(original)
+++ trunk/boost/filesystem/operations.hpp	2007-11-12 21:54:32 EST (Mon, 12 Nov 2007)
@@ -510,10 +510,10 @@
       return Path( Path::traits_type::to_internal( ph ) );
     }
 
-    template< class Path >
-    void current_path( const Path & ph )
+    BOOST_FS_FUNC(void) current_path( const Path & ph )
     {
-      system::error_code ec( detail::set_current_path_api( ph.string() ) );
+      system::error_code ec( detail::set_current_path_api(
+        ph.external_directory_string() ) );
       if ( ec )
           boost::throw_exception( basic_filesystem_error<Path>(
             "boost::filesystem::current_path", ph, ec ) );
@@ -735,7 +735,12 @@
     inline void last_write_time( const wpath & ph, const std::time_t new_time )
       { last_write_time<wpath>( ph, new_time ); }
 
-# endif // BOOST_FILESYSTEM_NARROW_ONLY
+    inline void current_path( const path & ph )
+      { current_path<path>( ph ); }
+    inline void current_path( const wpath & ph )
+      { current_path<wpath>( ph ); }
+
+# endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
 
     namespace detail
     {
Modified: trunk/libs/filesystem/test/operations_test.cpp
==============================================================================
--- trunk/libs/filesystem/test/operations_test.cpp	(original)
+++ trunk/libs/filesystem/test/operations_test.cpp	2007-11-12 21:54:32 EST (Mon, 12 Nov 2007)
@@ -411,6 +411,13 @@
   fs::current_path( original_dir );
   BOOST_CHECK( fs::current_path<fs::path>() == original_dir );
   BOOST_CHECK( fs::current_path<fs::path>() != dir );
+  // make sure the overloads work
+  fs::current_path( dir.string().c_str() );
+  BOOST_CHECK( fs::current_path<fs::path>() == dir );
+  BOOST_CHECK( fs::current_path<fs::path>() != original_dir );
+  fs::current_path( original_dir.string() );
+  BOOST_CHECK( fs::current_path<fs::path>() == original_dir );
+  BOOST_CHECK( fs::current_path<fs::path>() != dir );
 
   // make some reasonable assuptions for testing purposes
   fs::space_info spi( fs::space( dir ) );