diff --git a/include/boost/process/v1/detail/posix/environment.hpp b/include/boost/process/v1/detail/posix/environment.hpp index 6ddfc559c..64bb63556 100644 --- a/include/boost/process/v1/detail/posix/environment.hpp +++ b/include/boost/process/v1/detail/posix/environment.hpp @@ -107,7 +107,7 @@ class native_environment_impl using string_type = std::basic_string; using native_handle_type = char_type **; - void reload() {this->_env_impl = ::environ;} + void reload() {this->_env_impl = environ;} string_type get(const pointer_type id) { return getenv(id); } void set(const pointer_type id, const pointer_type value) @@ -136,7 +136,7 @@ class native_environment_impl native_environment_impl & operator=(native_environment_impl && ) = default; native_handle_type _env_impl = environ; - native_handle_type native_handle() const {return ::environ;} + native_handle_type native_handle() const {return environ;} }; diff --git a/include/boost/process/v1/detail/posix/executor.hpp b/include/boost/process/v1/detail/posix/executor.hpp index cc1bcb6cf..b462e41d4 100644 --- a/include/boost/process/v1/detail/posix/executor.hpp +++ b/include/boost/process/v1/detail/posix/executor.hpp @@ -275,7 +275,7 @@ class executor prepare_cmd_style_fn = exe; if ((prepare_cmd_style_fn.find('/') == std::string::npos) && ::access(prepare_cmd_style_fn.c_str(), X_OK)) { - const auto * e = ::environ; + const auto * e = environ; while ((e != nullptr) && (*e != nullptr) && !boost::starts_with(*e, "PATH=")) e++; @@ -316,7 +316,7 @@ class executor const char * exe = nullptr; char *const* cmd_line = nullptr; bool cmd_style = false; - char **env = ::environ; + char **env = environ; pid_t pid = -1; std::shared_ptr> exit_status = std::make_shared>(still_active); diff --git a/include/boost/process/v1/extend.hpp b/include/boost/process/v1/extend.hpp index 185972225..cb7b05c79 100644 --- a/include/boost/process/v1/extend.hpp +++ b/include/boost/process/v1/extend.hpp @@ -249,7 +249,7 @@ struct posix_executor ///A pointer to the argument-vector. char *const* cmd_line = nullptr; ///A pointer to the environment variables, as default it is set to [environ](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html) - char **env = ::environ; + char **env = environ; ///The pid of the process - it will be -1 before invoking [fork](http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html), and after forking either 0 for the new process or a positive value if in the current process. */ pid_t pid = -1; ///This shared-pointer holds the exit code. It's done this way, so it can be shared between an `asio::io_context` and \ref child. diff --git a/include/boost/process/v2/detail/environment_posix.hpp b/include/boost/process/v2/detail/environment_posix.hpp index 756432d66..becd9f3e8 100644 --- a/include/boost/process/v2/detail/environment_posix.hpp +++ b/include/boost/process/v2/detail/environment_posix.hpp @@ -14,8 +14,13 @@ #include #include -#if defined(__APPLE__) || defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) -extern "C" { extern char **environ; } +#if defined(__APPLE__) +# include +# if !defined(environ) +# define environ (*_NSGetEnviron()) +# endif +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) + extern "C" { extern char **environ; } #endif BOOST_PROCESS_V2_BEGIN_NAMESPACE diff --git a/include/boost/process/v2/posix/default_launcher.hpp b/include/boost/process/v2/posix/default_launcher.hpp index d17bda5e7..fc826fea2 100644 --- a/include/boost/process/v2/posix/default_launcher.hpp +++ b/include/boost/process/v2/posix/default_launcher.hpp @@ -30,9 +30,13 @@ #include #include - -#if defined(__APPLE__) || defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) -extern "C" { extern char **environ; } +#if defined(__APPLE__) +# include +# if !defined(environ) +# define environ (*_NSGetEnviron()) +# endif +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) + extern "C" { extern char **environ; } #endif BOOST_PROCESS_V2_BEGIN_NAMESPACE @@ -260,7 +264,7 @@ inline void on_exec_error(Launcher & launcher, const filesystem::path &executabl struct default_launcher { /// The pointer to the environment forwarded to the subprocess. - const char * const * env = ::environ; + const char * const * env = environ; /// The pid of the subprocess - will be assigned after fork. int pid = -1; diff --git a/src/detail/environment_posix.cpp b/src/detail/environment_posix.cpp index 7a7913671..5c2f81260 100644 --- a/src/detail/environment_posix.cpp +++ b/src/detail/environment_posix.cpp @@ -51,7 +51,7 @@ void unset(basic_cstring_ref> key, error_c } -native_handle_type load_native_handle() { return ::environ; } +native_handle_type load_native_handle() { return environ; } native_iterator next(native_iterator nh) diff --git a/src/posix/close_handles.cpp b/src/posix/close_handles.cpp index 0da2b755e..5795a3b1c 100644 --- a/src/posix/close_handles.cpp +++ b/src/posix/close_handles.cpp @@ -185,7 +185,7 @@ void close_all(const std::vector & whitelist, error_code & ec) return ; } - auto dir_fd = ::dirfd(dir.get()); + auto dir_fd = dirfd(dir.get()); if (dir_fd == -1) { ec = BOOST_PROCESS_V2_NAMESPACE::detail::get_last_error(); diff --git a/test/v1/limit_fd.cpp b/test/v1/limit_fd.cpp index df76b9759..4844cb5fd 100644 --- a/test/v1/limit_fd.cpp +++ b/test/v1/limit_fd.cpp @@ -107,7 +107,7 @@ BOOST_AUTO_TEST_CASE(leak_test, *boost::unit_test::timeout(5)) BOOST_CHECK(!bt::is_stream_handle(event_fd , ec)); BOOST_CHECK_MESSAGE(!ec, ec.message()); #endif auto od = ::opendir("."); - int dir_fd = ::dirfd(od); + int dir_fd = dirfd(od); BOOST_CHECK(!bt::is_stream_handle(dir_fd , ec)); BOOST_CHECK_MESSAGE(!ec, ec.message()); #endif