diff --git a/include/boost/process/v1/detail/posix/environment.hpp b/include/boost/process/v1/detail/posix/environment.hpp index 6ddfc559..64bb6355 100644 --- a/include/boost/process/v1/detail/posix/environment.hpp +++ b/include/boost/process/v1/detail/posix/environment.hpp @@ -107,7 +107,7 @@ public: 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 @@ public: 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 cc1bcb6c..b462e41d 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 @@ public: 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 18597222..cb7b05c7 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 756432d6..becd9f3e 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 d17bda5e..fc826fea 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 7a791367..5c2f8126 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)