Files
clang-p2996/lldb/tools/debugserver/source/PseudoTerminal.h
Zachary Turner 97206d5727 Rename Error -> Status.
This renames the LLDB error class to Status, as discussed
on the lldb-dev mailing list.

A change of this magnitude cannot easily be done without
find and replace, but that has potential to catch unwanted
occurrences of common strings such as "Error".  Every effort
was made to find all the obvious things such as the word "Error"
appearing in a string, etc, but it's possible there are still
some lingering occurences left around.  Hopefully nothing too
serious.

llvm-svn: 302872
2017-05-12 04:51:55 +00:00

88 lines
2.6 KiB
C++

//===-- PseudoTerminal.h ----------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Created by Greg Clayton on 1/8/08.
//
//===----------------------------------------------------------------------===//
#ifndef __PseudoTerminal_h__
#define __PseudoTerminal_h__
#include <fcntl.h>
#include <string>
#include <termios.h>
class PseudoTerminal {
public:
enum { invalid_fd = -1, invalid_pid = -1 };
enum Status {
success = 0,
err_posix_openpt_failed = -2,
err_grantpt_failed = -3,
err_unlockpt_failed = -4,
err_ptsname_failed = -5,
err_open_slave_failed = -6,
err_fork_failed = -7,
err_setsid_failed = -8,
err_failed_to_acquire_controlling_terminal = -9,
err_dup2_failed_on_stdin = -10,
err_dup2_failed_on_stdout = -11,
err_dup2_failed_on_stderr = -12
};
//------------------------------------------------------------------
// Constructors and Destructors
//------------------------------------------------------------------
PseudoTerminal();
~PseudoTerminal();
void CloseMaster();
void CloseSlave();
Status OpenFirstAvailableMaster(int oflag);
Status OpenSlave(int oflag);
int MasterFD() const { return m_master_fd; }
int SlaveFD() const { return m_slave_fd; }
int ReleaseMasterFD() {
// Release ownership of the master pseudo terminal file
// descriptor without closing it. (the destructor for this
// class will close it otherwise!)
int fd = m_master_fd;
m_master_fd = invalid_fd;
return fd;
}
int ReleaseSlaveFD() {
// Release ownership of the slave pseudo terminal file
// descriptor without closing it (the destructor for this
// class will close it otherwise!)
int fd = m_slave_fd;
m_slave_fd = invalid_fd;
return fd;
}
const char *SlaveName() const;
pid_t Fork(Status &error);
protected:
//------------------------------------------------------------------
// Classes that inherit from PseudoTerminal can see and modify these
//------------------------------------------------------------------
int m_master_fd;
int m_slave_fd;
private:
//------------------------------------------------------------------
// Outlaw copy and assignment constructors
//------------------------------------------------------------------
PseudoTerminal(const PseudoTerminal &rhs);
PseudoTerminal &operator=(const PseudoTerminal &rhs);
};
#endif // #ifndef __PseudoTerminal_h__