diff options
-rw-r--r-- | bbot/utility.hxx | 4 | ||||
-rw-r--r-- | bbot/worker/worker.cxx | 32 |
2 files changed, 26 insertions, 10 deletions
diff --git a/bbot/utility.hxx b/bbot/utility.hxx index 275c549..ee74816 100644 --- a/bbot/utility.hxx +++ b/bbot/utility.hxx @@ -43,6 +43,10 @@ namespace bbot using butl::make_guard; using butl::make_exception_guard; + using butl::getenv; + using butl::setenv; + using butl::unsetenv; + // <libbutl/fdstream.mxx> // using butl::auto_fd; diff --git a/bbot/worker/worker.cxx b/bbot/worker/worker.cxx index 5fff9bc..b9eeeb2 100644 --- a/bbot/worker/worker.cxx +++ b/bbot/worker/worker.cxx @@ -6,8 +6,6 @@ # include <signal.h> // signal() #else # include <libbutl/win32-utility.hxx> - -# include <stdlib.h> // getenv(), _putenv() #endif #include <map> @@ -38,6 +36,12 @@ using std::endl; namespace bbot { + int + main (int argc, char* argv[]); + + static void + build (size_t argc, const char* argv[]); + process_path argv0; worker_options ops; @@ -212,7 +216,7 @@ run_b (tracer& t, return run_b (t, log, warn_detect, envvars, buildspec, forward<A> (a)...); } -static void +static void bbot:: build (size_t argc, const char* argv[]) { tracer trace ("build"); @@ -687,10 +691,10 @@ build (size_t argc, const char* argv[]) // string paths ("PATH=" + (install_root / "bin").string ()); - if (char const* s = getenv ("PATH")) + if (optional<string> s = getenv ("PATH")) { paths += path::traits::path_separator; - paths += s; + paths += *s; } small_vector<string, 1> envvars {move (paths)}; @@ -960,7 +964,7 @@ bootstrap () serialize_manifest (bm, cout, "stdout", "bootstrap"); } -int +int bbot:: main (int argc, char* argv[]) try { @@ -976,15 +980,15 @@ try // #ifdef _WIN32 { - string mp ("PATH="); - if (const char* p = getenv ("PATH")) + string mp; + if (optional<string> p = getenv ("PATH")) { - mp += p; + mp = move (*p); mp += ';'; } mp += "/bin"; - _putenv (mp.c_str ()); + setenv ("PATH", mp); } #endif @@ -1086,6 +1090,8 @@ try case mode::build: build (static_cast<size_t> (argc), const_cast<const char**> (argv)); break; } + + return 0; } catch (const failed&) { @@ -1096,3 +1102,9 @@ catch (const cli::exception& e) error << e; return 1; } + +int +main (int argc, char* argv[]) +{ + return bbot::main (argc, argv); +} |