@@ -164,8 +164,7 @@ TerminalResult cathode_set_mode(bool raw, bool flush)
164164 termios .c_cflag &= (tcflag_t )~(CSTOPB | PARENB | PARODD | HUPCL | CLOCAL | CRTSCTS );
165165#if defined(ZIG_OS_LINUX )
166166 termios .c_cflag &= (tcflag_t )~CMSPAR ;
167- #endif
168- #if defined(ZIG_OS_MACOS )
167+ #elif defined(ZIG_OS_MACOS )
169168 termios .c_cflag &= (tcflag_t )~(CDTR_IFLOW | CDSR_OFLOW | MDMBUF );
170169#endif
171170 termios .c_lflag &= (tcflag_t )~(FLUSHO | EXTPROC );
@@ -179,44 +178,40 @@ TerminalResult cathode_set_mode(bool raw, bool flush)
179178 termios .c_oflag &= (tcflag_t )~(OCRNL | ONOCR | ONLRET );
180179#if defined(ZIG_OS_LINUX )
181180 termios .c_oflag &= (tcflag_t )~OLCUC ;
182- #endif
183- #if defined(ZIG_OS_MACOS )
181+ #elif defined(ZIG_OS_MACOS )
184182 termios .c_oflag &= (tcflag_t )~ONOEOT ;
185183#endif
186184 termios .c_cflag &= (tcflag_t )~CSIZE ;
187185 termios .c_cflag |= CS8 | CREAD ;
188186 termios .c_lflag &= (tcflag_t )~(ECHONL | NOFLSH | ECHOPRT | PENDIN );
189187#if defined(ZIG_OS_LINUX )
190188 termios .c_lflag &= (tcflag_t )~XCASE ;
191- #endif
192- #if defined(ZIG_OS_MACOS )
189+ #elif defined(ZIG_OS_MACOS )
193190 termios .c_lflag &= (tcflag_t )~ALTWERASE ;
194191#endif
195192
196- tcflag_t iflag = BRKINT | ICRNL | IXON ;
197- tcflag_t oflag = OPOST | ONLCR ;
198- tcflag_t lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHOCTL | ECHOKE | IEXTEN ;
193+ tcflag_t iflag_cooked = BRKINT | ICRNL | IXON ;
194+ tcflag_t oflag_cooked = OPOST | ONLCR ;
195+ tcflag_t lflag_cooked = ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHOCTL | ECHOKE | IEXTEN ;
196+ tcflag_t lflag_raw = TOSTOP ;
197+ #if defined(ZIG_OS_MACOS )
198+ lflag_raw |= NOKERNINFO ;
199+ #endif
199200
200201 // Finally, enable/disable features that depend on raw/cooked mode.
201202 if (raw )
202203 {
203- termios .c_iflag &= ~iflag ;
204- termios .c_oflag &= ~oflag ;
205- termios .c_lflag &= ~lflag ;
206- termios .c_lflag |= TOSTOP ;
207- #if defined(ZIG_OS_MACOS )
208- termios .c_lflag |= NOKERNINFO ;
209- #endif
204+ termios .c_iflag &= ~iflag_cooked ;
205+ termios .c_oflag &= ~oflag_cooked ;
206+ termios .c_lflag &= ~lflag_cooked ;
207+ termios .c_lflag |= lflag_raw ;
210208 }
211209 else
212210 {
213- termios .c_iflag |= iflag ;
214- termios .c_oflag |= oflag ;
215- termios .c_lflag |= lflag ;
216- termios .c_lflag &= (tcflag_t )~TOSTOP ;
217- #if defined(ZIG_OS_MACOS )
218- termios .c_lflag &= (tcflag_t )~NOKERNINFO ;
219- #endif
211+ termios .c_iflag |= iflag_cooked ;
212+ termios .c_oflag |= oflag_cooked ;
213+ termios .c_lflag |= lflag_cooked ;
214+ termios .c_lflag &= ~lflag_raw ;
220215 }
221216
222217 if (!raw )
0 commit comments