|
Boost-Commit : |
From: bdawes_at_[hidden]
Date: 2007-11-13 08:54:58
Author: bemandawes
Date: 2007-11-13 08:54:58 EST (Tue, 13 Nov 2007)
New Revision: 41060
URL: http://svn.boost.org/trac/boost/changeset/41060
Log:
Correct detection of failure to run in a boost tree, and refactor code as a separate set_boost_root function.
Text files modified:
trunk/tools/regression/src/process_jam_log.cpp | 47 +++++++++++++++++++++++++++------------
1 files changed, 32 insertions(+), 15 deletions(-)
Modified: trunk/tools/regression/src/process_jam_log.cpp
==============================================================================
--- trunk/tools/regression/src/process_jam_log.cpp (original)
+++ trunk/tools/regression/src/process_jam_log.cpp 2007-11-13 08:54:58 EST (Tue, 13 Nov 2007)
@@ -16,9 +16,10 @@
#include <string>
#include <cstring>
#include <map>
-#include <utility> // for make_pair
+#include <utility> // for make_pair
#include <ctime>
#include <cctype> // for tolower
+#include <cstdlib> // for exit
using std::string;
namespace xml = boost::tiny_xml;
@@ -44,7 +45,33 @@
fs::path boost_root;
fs::path locate_root; // ALL_LOCATE_TARGET (or boost_root if none)
-// append_html -------------------------------------------------------------//
+ // set_boost_root --------------------------------------------------------//
+
+ void set_boost_root()
+ {
+
+ boost_root = fs::initial_path();
+
+ for(;;)
+ {
+ if ( fs::exists( boost_root / "libs" ) )
+ {
+ fs::current_path( fs::initial_path() ); // restore initial path
+ return;
+ }
+ fs::current_path( ".." );
+ if ( boost_root == fs::current_path() )
+ {
+ fs::current_path( fs::initial_path() ); // restore initial path
+ std::cout <<
+ "Abort: process_jam_log must be run from within a boost directory tree\n";
+ std::exit(1);
+ }
+ boost_root = fs::current_path();
+ }
+ }
+
+ // append_html -------------------------------------------------------------//
void append_html( const string & src, string & target )
{
@@ -527,6 +554,8 @@
// streams are implemented using standard C files.
std::ios::sync_with_stdio(false);
+ fs::initial_path();
+
if ( argc <= 1 )
std::cout << "Usage: bjam [bjam-args] | process_jam_log [--echo] [--create-directories] [--v1|v2] [locate-root]\n"
"locate-root - the same as the bjam ALL_LOCATE_TARGET\n"
@@ -537,19 +566,7 @@
"v1 - bjam version 1 used.\n"
;
- boost_root = fs::initial_path();
-
- while ( !boost_root.empty()
- && !fs::exists( boost_root / "libs" ) )
- {
- boost_root /= "..";
- }
-
- if ( boost_root.empty() )
- {
- std::cout << "must be run from within the boost-root directory tree\n";
- return 1;
- }
+ set_boost_root();
boost_root.normalize();
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk