From 2068fd01f5acebeea9f0b92fbc43426772b10538 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 15 Jun 2018 12:04:27 +0300 Subject: Use portable environment variable manipulation functions --- bbot/utility.hxx | 4 ++++ 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; + // // 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() #else # include - -# include // getenv(), _putenv() #endif #include @@ -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)...); } -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 s = getenv ("PATH")) { paths += path::traits::path_separator; - paths += s; + paths += *s; } small_vector 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 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 (argc), const_cast (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); +} -- cgit v1.1