From 3be919f1630bbb2eb9ec88c4e1179dbeb5f21e97 Mon Sep 17 00:00:00 2001 From: Suyash458 Date: Thu, 13 Feb 2020 18:35:22 +0530 Subject: [PATCH 1/2] use rcutils_get_env instead of getenv() in node_options.cpp Signed-off-by: Suyash458 --- rclcpp/src/rclcpp/node_options.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rclcpp/src/rclcpp/node_options.cpp b/rclcpp/src/rclcpp/node_options.cpp index af424ae106..4c75e755b0 100644 --- a/rclcpp/src/rclcpp/node_options.cpp +++ b/rclcpp/src/rclcpp/node_options.cpp @@ -25,6 +25,7 @@ #include "rclcpp/logging.hpp" #include "rclcpp/publisher_options.hpp" #include "rclcpp/qos.hpp" +#include "rcutils/get_env.h" using rclcpp::exceptions::throw_from_rcl_error; @@ -315,10 +316,10 @@ NodeOptions::get_domain_id_from_env() const { // Determine the domain id based on the options and the ROS_DOMAIN_ID env variable. size_t domain_id = std::numeric_limits::max(); - char * ros_domain_id = nullptr; + const char * ros_domain_id = nullptr; const char * env_var = "ROS_DOMAIN_ID"; #ifndef _WIN32 - ros_domain_id = getenv(env_var); + rcutils_get_env(env_var, &ros_domain_id); #else size_t ros_domain_id_size; _dupenv_s(&ros_domain_id, &ros_domain_id_size, env_var); From 3fcf556f36abdabdccde23da8c21b590e02ecdb0 Mon Sep 17 00:00:00 2001 From: Suyash458 Date: Fri, 14 Feb 2020 00:16:08 +0530 Subject: [PATCH 2/2] remove check for Windows in get_domain_id_from_env() Signed-off-by: Suyash458 --- rclcpp/src/rclcpp/node_options.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/rclcpp/src/rclcpp/node_options.cpp b/rclcpp/src/rclcpp/node_options.cpp index 4c75e755b0..10eea0642a 100644 --- a/rclcpp/src/rclcpp/node_options.cpp +++ b/rclcpp/src/rclcpp/node_options.cpp @@ -309,21 +309,14 @@ NodeOptions::allocator(rcl_allocator_t allocator) return *this; } -// TODO(wjwwood): reuse rcutils_get_env() to avoid code duplication. -// See also: https://github.com/ros2/rcl/issues/119 size_t NodeOptions::get_domain_id_from_env() const { // Determine the domain id based on the options and the ROS_DOMAIN_ID env variable. - size_t domain_id = std::numeric_limits::max(); const char * ros_domain_id = nullptr; const char * env_var = "ROS_DOMAIN_ID"; -#ifndef _WIN32 rcutils_get_env(env_var, &ros_domain_id); -#else - size_t ros_domain_id_size; - _dupenv_s(&ros_domain_id, &ros_domain_id_size, env_var); -#endif + if (ros_domain_id) { uint32_t number = strtoul(ros_domain_id, NULL, 0); if (number == (std::numeric_limits::max)()) {