Skip to content

Commit 2519665

Browse files
committed
Use file for unix
1 parent 9534d1e commit 2519665

File tree

9 files changed

+20
-39
lines changed

9 files changed

+20
-39
lines changed

cpp-terminal/platforms/cursor.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "cpp-terminal/cursor.hpp"
22

33
#if defined(_WIN32)
4-
#include "windows.h"
54
#include "cpp-terminal/platforms/file.hpp"
5+
#include "windows.h"
66
#else
77
#include "cpp-terminal/input.hpp"
88
#include "cpp-terminal/terminal.hpp"
@@ -13,7 +13,8 @@ Term::Cursor Term::cursor_position()
1313
#if defined(_WIN32)
1414
CONSOLE_SCREEN_BUFFER_INFO inf;
1515
if(GetConsoleScreenBufferInfo(Private::std_cout.getHandler(), &inf)) return Term::Cursor(inf.dwCursorPosition.Y + 1, inf.dwCursorPosition.X + 1);
16-
else return Term::Cursor(0,0);
16+
else
17+
return Term::Cursor(0, 0);
1718
#else
1819
Term::terminal << Term::cursor_position_report();
1920
Term::Cursor c;

cpp-terminal/platforms/input.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "cpp-terminal/exception.hpp"
1111
#include "cpp-terminal/input.hpp"
1212
#include "cpp-terminal/platforms/file.hpp"
13+
1314
#include <string>
1415

1516
#if !defined(_WIN32)

cpp-terminal/platforms/screen.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
#ifdef _WIN32
44
#include <windows.h>
55
#else
6-
#include <fcntl.h>
76
#include <sys/ioctl.h>
8-
#include <unistd.h>
97
#endif
108

119
#include "cpp-terminal/platforms/file.hpp"
@@ -22,9 +20,7 @@ Term::Screen Term::screen_size()
2220
{
2321
0, 0, 0, 0
2422
};
25-
int fd{open("/dev/tty", O_RDWR, O_NOCTTY)};
26-
if(ioctl(fd, TIOCGWINSZ, &window) != -1) ret = {window.ws_row, window.ws_col};
27-
close(fd);
23+
if(ioctl(Private::std_cout.getHandler(), TIOCGWINSZ, &window) != -1) ret = {window.ws_row, window.ws_col};
2824
return ret;
2925
#endif
3026
}

cpp-terminal/platforms/terminal.cpp

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "cpp-terminal/terminal.hpp"
22

3+
#include "cpp-terminal/exception.hpp"
34
#include "cpp-terminal/platforms/file.hpp"
45

56
#ifdef _WIN32
@@ -15,13 +16,9 @@
1516
#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200
1617
#endif
1718
#else
18-
#include <fcntl.h>
1919
#include <termios.h>
20-
#include <unistd.h>
2120
#endif
2221

23-
#include "cpp-terminal/exception.hpp"
24-
#include "cpp-terminal/platforms/file.hpp"
2522
#include <fstream>
2623

2724
void Term::Terminal::store_and_restore()
@@ -65,22 +62,14 @@ void Term::Terminal::store_and_restore()
6562
static termios orig_termios;
6663
if(!enabled)
6764
{
68-
int fd{open("/dev/tty", O_RDWR, O_NOCTTY)};
69-
if(fd >= 0)
70-
{
71-
if(tcgetattr(fd, &orig_termios) == -1) { throw Term::Exception("tcgetattr() failed"); }
72-
}
73-
close(fd);
65+
if(Private::std_cout.getHandler() >= 0)
66+
if(tcgetattr(Private::std_cout.getHandler(), &orig_termios) == -1) { throw Term::Exception("tcgetattr() failed"); }
7467
enabled = true;
7568
}
7669
else
7770
{
78-
int fd{open("/dev/tty", O_RDWR, O_NOCTTY)};
79-
if(fd >= 0)
80-
{
81-
if(tcsetattr(fd, TCSAFLUSH, &orig_termios) == -1) { throw Term::Exception("tcsetattr() failed in destructor"); }
82-
close(fd);
83-
}
71+
if(Private::std_cout.getHandler() >= 0)
72+
if(tcsetattr(Private::std_cout.getHandler(), TCSAFLUSH, &orig_termios) == -1) { throw Term::Exception("tcsetattr() failed in destructor"); }
8473
enabled = false;
8574
}
8675
#endif
@@ -89,17 +78,16 @@ void Term::Terminal::store_and_restore()
8978
void Term::Terminal::setRawMode()
9079
{
9180
#ifdef _WIN32
92-
DWORD flags = {0};
81+
DWORD flags = {0};
9382
if(!GetConsoleMode(Private::std_cin.getHandler(), &flags)) { throw Term::Exception("GetConsoleMode() failed"); }
9483
if(m_options.has(Option::NoSignalKeys)) { flags &= ~ENABLE_PROCESSED_INPUT; }
9584
flags &= ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT);
9685
if(!SetConsoleMode(Private::std_cin.getHandler(), flags)) { throw Term::Exception("SetConsoleMode() failed"); }
9786
#else
98-
int fd{open("/dev/tty", O_RDWR, O_NOCTTY)};
99-
if(fd >= 0)
87+
if(Private::std_cout.getHandler() >= 0)
10088
{
101-
termios raw;
102-
if(tcgetattr(fd, &raw) == -1) { throw Term::Exception("tcgetattr() failed"); }
89+
::termios raw;
90+
if(tcgetattr(Private::std_cout.getHandler(), &raw) == -1) { throw Term::Exception("tcgetattr() failed"); }
10391
// Put terminal in raw mode
10492
raw.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
10593
// This disables output post-processing, requiring explicit \r\n. We
@@ -111,8 +99,7 @@ void Term::Terminal::setRawMode()
11199
if(m_options.has(Option::NoSignalKeys)) { raw.c_lflag &= ~ISIG; }
112100
raw.c_cc[VMIN] = 0;
113101
raw.c_cc[VTIME] = 0;
114-
if(tcsetattr(fd, TCSAFLUSH, &raw) == -1) { throw Term::Exception("tcsetattr() failed"); }
115-
close(fd);
102+
if(tcsetattr(Private::std_cout.getHandler(), TCSAFLUSH, &raw) == -1) { throw Term::Exception("tcsetattr() failed"); }
116103
}
117104
#endif
118105
}
@@ -167,10 +154,6 @@ void Term::Terminal::attachStreams()
167154
this->cin.open(in.c_str(), std::ofstream::in);
168155
if(!this->cin.is_open()) this->cin.open(blackHole.c_str(), std::ofstream::in);
169156
this->cin.clear();
170-
//cout.clear();
171-
//cerr.clear();
172-
//clog.clear();
173-
//cin.clear();
174157
}
175158

176159
void Term::Terminal::detachStreams()

cpp-terminal/terminal.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include "cpp-terminal/terminfo.hpp"
66

77
#include <fstream>
8-
#include <ostream> // For std::endl;
8+
#include <ostream> // For std::endl;
99

1010
namespace Term
1111
{

examples/colors.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
#include "cpp-terminal/exception.hpp"
33
#include "cpp-terminal/io.hpp"
44
#include "cpp-terminal/style.hpp"
5+
#include "cpp-terminal/terminal.hpp"
56
#include "cpp-terminal/tty.hpp"
67
#include "cpp-terminal/version.hpp"
7-
#include "cpp-terminal/terminal.hpp"
88

99
#include <iostream>
1010

examples/prompt_immediate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "cpp-terminal/exception.hpp"
22
#include "cpp-terminal/prompt.hpp"
3-
#include "cpp-terminal/version.hpp"
43
#include "cpp-terminal/terminal.hpp"
4+
#include "cpp-terminal/version.hpp"
55

66
#include <iostream>
77

examples/prompt_simple.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "cpp-terminal/exception.hpp"
22
#include "cpp-terminal/prompt.hpp"
3-
#include "cpp-terminal/version.hpp"
43
#include "cpp-terminal/terminal.hpp"
4+
#include "cpp-terminal/version.hpp"
55

66
int main()
77
{

tests/attach_console.test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "cpp-terminal/color.hpp"
22
#include "cpp-terminal/exception.hpp"
3-
#include "cpp-terminal/style.hpp"
43
#include "cpp-terminal/io.hpp"
4+
#include "cpp-terminal/style.hpp"
55
#include "cpp-terminal/tty.hpp"
66
#include "cpp-terminal/version.hpp"
77

0 commit comments

Comments
 (0)