mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-15 01:26:47 +00:00
Make sure we reset terminal config also on exception
This commit is contained in:
committed by
Dennis Klein
parent
a78d35d90d
commit
9f325451e5
@@ -113,6 +113,27 @@ auto ControlPluginProgramOptions() -> Plugin::ProgOptions
|
|||||||
return pluginOptions;
|
return pluginOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct terminal_config
|
||||||
|
{
|
||||||
|
terminal_config()
|
||||||
|
{
|
||||||
|
termios t;
|
||||||
|
tcgetattr(STDIN_FILENO, &t); // get the current terminal I/O structure
|
||||||
|
t.c_lflag &= ~ICANON; // disable canonical input
|
||||||
|
t.c_lflag &= ~ECHO; // do not echo input chars
|
||||||
|
tcsetattr(STDIN_FILENO, TCSANOW, &t); // apply the new settings
|
||||||
|
}
|
||||||
|
|
||||||
|
~terminal_config()
|
||||||
|
{
|
||||||
|
termios t;
|
||||||
|
tcgetattr(STDIN_FILENO, &t); // get the current terminal I/O structure
|
||||||
|
t.c_lflag |= ICANON; // re-enable canonical input
|
||||||
|
t.c_lflag |= ECHO; // echo input chars
|
||||||
|
tcsetattr(STDIN_FILENO, TCSANOW, &t); // apply the new settings
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
auto Control::InteractiveMode() -> void
|
auto Control::InteractiveMode() -> void
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -122,12 +143,9 @@ try
|
|||||||
pollfd cinfd[1];
|
pollfd cinfd[1];
|
||||||
cinfd[0].fd = fileno(stdin);
|
cinfd[0].fd = fileno(stdin);
|
||||||
cinfd[0].events = POLLIN;
|
cinfd[0].events = POLLIN;
|
||||||
|
cinfd[0].revents = 0;
|
||||||
|
|
||||||
struct termios t;
|
terminal_config tconfig;
|
||||||
tcgetattr(STDIN_FILENO, &t); // get the current terminal I/O structure
|
|
||||||
t.c_lflag &= ~ICANON; // disable canonical input
|
|
||||||
t.c_lflag &= ~ECHO; // do not echo input chars
|
|
||||||
tcsetattr(STDIN_FILENO, TCSANOW, &t); // apply the new settings
|
|
||||||
|
|
||||||
PrintInteractiveHelp();
|
PrintInteractiveHelp();
|
||||||
|
|
||||||
@@ -220,11 +238,6 @@ try
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tcgetattr(STDIN_FILENO, &t); // get the current terminal I/O structure
|
|
||||||
t.c_lflag |= ICANON; // re-enable canonical input
|
|
||||||
t.c_lflag |= ECHO; // echo input chars
|
|
||||||
tcsetattr(STDIN_FILENO, TCSANOW, &t); // apply the new settings
|
|
||||||
|
|
||||||
RunShutdownSequence();
|
RunShutdownSequence();
|
||||||
}
|
}
|
||||||
catch (PluginServices::DeviceControlError& e)
|
catch (PluginServices::DeviceControlError& e)
|
||||||
|
Reference in New Issue
Block a user