summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp')
-rw-r--r--3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp37
1 files changed, 17 insertions, 20 deletions
diff --git a/3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp b/3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp
index 7ea37a4b7d9..23515a96c18 100644
--- a/3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp
+++ b/3rdparty/asio/include/asio/detail/impl/reactive_serial_port_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/reactive_serial_port_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -30,9 +30,9 @@ namespace asio {
namespace detail {
reactive_serial_port_service::reactive_serial_port_service(
- asio::io_context& io_context)
- : service_base<reactive_serial_port_service>(io_context),
- descriptor_service_(io_context)
+ execution_context& context)
+ : execution_context_service_base<reactive_serial_port_service>(context),
+ descriptor_service_(context)
{
}
@@ -69,11 +69,11 @@ asio::error_code reactive_serial_port_service::open(
// Set up default serial port options.
termios ios;
- errno = 0;
- s = descriptor_ops::error_wrapper(::tcgetattr(fd, &ios), ec);
+ s = ::tcgetattr(fd, &ios);
+ descriptor_ops::get_last_error(ec, s < 0);
if (s >= 0)
{
-#if defined(_BSD_SOURCE)
+#if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE)
::cfmakeraw(&ios);
#else
ios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK
@@ -85,8 +85,8 @@ asio::error_code reactive_serial_port_service::open(
#endif
ios.c_iflag |= IGNPAR;
ios.c_cflag |= CREAD | CLOCAL;
- errno = 0;
- s = descriptor_ops::error_wrapper(::tcsetattr(fd, TCSANOW, &ios), ec);
+ s = ::tcsetattr(fd, TCSANOW, &ios);
+ descriptor_ops::get_last_error(ec, s < 0);
}
if (s < 0)
{
@@ -111,18 +111,16 @@ asio::error_code reactive_serial_port_service::do_set_option(
const void* option, asio::error_code& ec)
{
termios ios;
- errno = 0;
- descriptor_ops::error_wrapper(::tcgetattr(
- descriptor_service_.native_handle(impl), &ios), ec);
- if (ec)
+ int s = ::tcgetattr(descriptor_service_.native_handle(impl), &ios);
+ descriptor_ops::get_last_error(ec, s < 0);
+ if (s < 0)
return ec;
if (store(option, ios, ec))
return ec;
- errno = 0;
- descriptor_ops::error_wrapper(::tcsetattr(
- descriptor_service_.native_handle(impl), TCSANOW, &ios), ec);
+ s = ::tcsetattr(descriptor_service_.native_handle(impl), TCSANOW, &ios);
+ descriptor_ops::get_last_error(ec, s < 0);
return ec;
}
@@ -132,10 +130,9 @@ asio::error_code reactive_serial_port_service::do_get_option(
void* option, asio::error_code& ec) const
{
termios ios;
- errno = 0;
- descriptor_ops::error_wrapper(::tcgetattr(
- descriptor_service_.native_handle(impl), &ios), ec);
- if (ec)
+ int s = ::tcgetattr(descriptor_service_.native_handle(impl), &ios);
+ descriptor_ops::get_last_error(ec, s < 0);
+ if (s < 0)
return ec;
return load(option, ios, ec);