xbolva00 created this revision.
xbolva00 added a reviewer: JDevlieghere.
Herald added subscribers: lldb-commits, abidh.
LLVM provide (str)errno helpers, so convert code to use it.
Also fixes warning:
/home/xbolva00/LLVM/llvm/tools/lldb/source/Host/common/PseudoTerminal.cpp:248:25:
warning: ignoring return value of ‘char* strerror_r(int, char*, size_t)’,
declared with attribute warn_unused_result [-Wunused-result]
::strerror_r(errno, error_str, error_len);
Repository:
rLLDB LLDB
https://reviews.llvm.org/D51591
Files:
source/Host/common/PseudoTerminal.cpp
Index: source/Host/common/PseudoTerminal.cpp
===================================================================
--- source/Host/common/PseudoTerminal.cpp
+++ source/Host/common/PseudoTerminal.cpp
@@ -10,6 +10,8 @@
#include "lldb/Host/PseudoTerminal.h"
#include "lldb/Host/Config.h"
+#include "llvm/Support/Errno.h"
+
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -83,27 +85,34 @@
if (error_str)
error_str[0] = '\0';
+ std::string strerror;
#if !defined(LLDB_DISABLE_POSIX)
// Open the master side of a pseudo terminal
m_master_fd = ::posix_openpt(oflag);
if (m_master_fd < 0) {
- if (error_str)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
return false;
}
// Grant access to the slave pseudo terminal
if (::grantpt(m_master_fd) < 0) {
- if (error_str)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
CloseMasterFileDescriptor();
return false;
}
// Clear the lock flag on the slave pseudo terminal
if (::unlockpt(m_master_fd) < 0) {
- if (error_str)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
CloseMasterFileDescriptor();
return false;
}
@@ -131,6 +140,7 @@
if (error_str)
error_str[0] = '\0';
+ std::string strerror;
CloseSlaveFileDescriptor();
// Open the master side of a pseudo terminal
@@ -142,8 +152,10 @@
m_slave_fd = ::open(slave_name, oflag);
if (m_slave_fd < 0) {
- if (error_str)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
return false;
}
@@ -166,16 +178,19 @@
if (error_str)
error_str[0] = '\0';
+ std::string strerror;
if (m_master_fd < 0) {
if (error_str)
::snprintf(error_str, error_len, "%s",
"master file descriptor is invalid");
return nullptr;
}
const char *slave_name = ::ptsname(m_master_fd);
- if (error_str && slave_name == nullptr)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str && slave_name == nullptr) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
return slave_name;
}
@@ -202,6 +217,8 @@
lldb::pid_t PseudoTerminal::Fork(char *error_str, size_t error_len) {
if (error_str)
error_str[0] = '\0';
+
+ std::string strerror;
pid_t pid = LLDB_INVALID_PROCESS_ID;
#if !defined(LLDB_DISABLE_POSIX)
int flags = O_RDWR;
@@ -212,8 +229,10 @@
pid = ::fork();
if (pid < 0) {
// Fork failed
- if (error_str)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
} else if (pid == 0) {
// Child Process
::setsid();
@@ -228,24 +247,32 @@
#if defined(TIOCSCTTY)
// Acquire the controlling terminal
if (::ioctl(m_slave_fd, TIOCSCTTY, (char *)0) < 0) {
- if (error_str)
- ::strerror_r(errno, error_str, error_len);
+ if (error_str) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
}
#endif
// Duplicate all stdio file descriptors to the slave pseudo terminal
if (::dup2(m_slave_fd, STDIN_FILENO) != STDIN_FILENO) {
- if (error_str && !error_str[0])
- ::strerror_r(errno, error_str, error_len);
+ if (error_str && !error_str[0]) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
}
if (::dup2(m_slave_fd, STDOUT_FILENO) != STDOUT_FILENO) {
- if (error_str && !error_str[0])
- ::strerror_r(errno, error_str, error_len);
+ if (error_str && !error_str[0]) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
}
if (::dup2(m_slave_fd, STDERR_FILENO) != STDERR_FILENO) {
- if (error_str && !error_str[0])
- ::strerror_r(errno, error_str, error_len);
+ if (error_str && !error_str[0]) {
+ strerror = llvm::sys::StrError();
+ ::snprintf(error_str, error_len, "%s", strerror.c_str());
+ }
}
}
} else {
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits