99
1010#include " cpp-terminal/private/signals.hpp"
1111
12- #include " cpp-terminal/terminal.hpp"
12+ #include " cpp-terminal/terminal_impl.hpp"
13+ #include " signals.hpp"
1314
1415#include < algorithm>
1516#include < csignal>
1920#endif
2021
2122#ifdef _WIN32
22- #include < windows.h>
23- static BOOL WINAPI consoleHandler (DWORD signal)
23+ #include < windows.h>
24+ static BOOL WINAPI consoleHandler (DWORD signal)
25+ {
26+ switch (signal)
27+ {
28+ case CTRL_C_EVENT:
29+ case CTRL_BREAK_EVENT:
2430 {
25- switch (signal)
26- {
27- case CTRL_C_EVENT:
28- case CTRL_BREAK_EVENT:
29- {
30- Term::Private::Signals::reset_and_raise (Term::terminal);
31- return false ;
32- }
33- default : return false ;
34- }
31+ Term::Private::Signals::reset_and_raise (Term::terminal);
32+ return false ;
3533 }
34+ default : return false ;
35+ }
36+ }
3637#endif
3738
3839const std::size_t Term::Private::Signals::m_signals_number{NSIG - 1 };
3940
4041void Term::Private::Signals::setHandler (const sighandler_t & handler) noexcept
4142{
4243 for (std::size_t signal = 0 ; signal != m_signals_number; ++signal)
43- {
44- #ifdef _WIN32
45- if (signal!= SIGINT) sighandler_t hand = std::signal (signal, handler);
46- #else
47- sighandler_t hand = std::signal (signal, handler);
48- #endif
44+ {
45+ #ifdef _WIN32
46+ if (signal != SIGINT) sighandler_t hand = std::signal (signal, handler);
47+ #else
48+ sighandler_t hand = std::signal (signal, handler);
49+ #endif
4950 }
50- #ifdef _WIN32
51+ #ifdef _WIN32
5152 SetConsoleCtrlHandler (consoleHandler, TRUE );
52- #endif
53+ #endif
5354}
5455
55- Term::Private::Signals::Signals (std::vector< sighandler_t >& m_han ) noexcept
56+ Term::Private::Signals::Signals () noexcept
5657{
57- const static std::vector<int > ignore{
58- #if defined(SIGCONT)
59- SIGCONT,
60- #endif
61- #if defined(SIGSTOP)
62- SIGSTOP,
63- #endif
64- #if defined(SIGTSTP)
65- SIGTSTP,
66- #endif
67- #if defined(SIGTTIN)
68- SIGTTIN,
69- #endif
70- #if defined(SIGTTOU)
71- SIGTTOU,
72- #endif
73- };
74- m_han.reserve (m_signals_number);
58+ m_handlers.reserve (m_signals_number);
7559 for (std::size_t signal = 0 ; signal != m_signals_number; ++signal)
7660 {
7761 // if(std::find(ignore.begin(),ignore.end(),signal)==ignore.end())
7862 // {
7963 sighandler_t old = std::signal (signal, SIG_DFL);
8064 // sighandler_t dumb=std::signal(signal, old);
81- m_han .push_back (old);
65+ m_handlers .push_back (old);
8266 // }
8367 // else
8468 // {
@@ -88,12 +72,9 @@ Term::Private::Signals::Signals(std::vector<sighandler_t>& m_han) noexcept
8872 }
8973}
9074
91- void Term::Private::Signals::reset_and_raise (Term::Terminal& term) noexcept
92- {
93- term.clean ();
94- }
75+ void Term::Private::Signals::reset_and_raise (Term::Terminal& term) noexcept { term.clean (); }
9576
96- void Term::Private::Signals::reset_and_raise (int sign, std::vector< sighandler_t >& m_han, Term::Terminal& term) noexcept
77+ void Term::Private::Signals::reset_and_raise (int sign, Term::Terminal& term) noexcept
9778{
9879 const static std::vector<int > termin{
9980#if defined(SIGHUP)
@@ -183,8 +164,8 @@ void Term::Private::Signals::reset_and_raise(int sign, std::vector<sighandler_t>
183164 };
184165 if (std::find (termin.begin (), termin.end (), sign) != termin.end ())
185166 {
186- sighandler_t old = std::signal (sign, m_han [sign]);
187- old = std::signal (sign, m_han [sign]);
167+ sighandler_t old = std::signal (sign, m_handlers [sign]);
168+ old = std::signal (sign, m_handlers [sign]);
188169 term.clean ();
189170 std::raise (sign);
190171 }
0 commit comments