]> git.wh0rd.org Git - nano.git/commitdiff
simplify terminal handling by using raw mode instead of cbreak mode
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 18 Dec 2007 02:03:00 +0000 (02:03 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 18 Dec 2007 02:03:00 +0000 (02:03 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/branches/nano_2_0_branch/nano@4202 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/nano.c
src/proto.h

index dac981b8b6f4d7aa409145e329e08f3a4370d6e7..94de6aa16103dba75ec57e1ca9d88fa9a3d194f2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -46,6 +46,8 @@ CVS code -
          do_statusbar_mouse(), reset_statusbar_cursor(),
          update_statusbar_line(), and
          need_statusbar_horizontal_update(). (DLR)
+       - Simplify terminal handling by using raw mode instead of cbreak
+         mode.  Changes to main(); removal of disable_signals(). (DLR)
 - chars.c:
   nstrncasecmp(), mbstrncasecmp()
        - For efficiency, return zero immediately if s1 and s2 point to
index 045157cec14d8fa9af7232be42fdd260d853788e..68c7cda0d66bde9fa7ad35431357dd762193cf66 100644 (file)
@@ -1256,17 +1256,6 @@ void disable_extended_io(void)
     tcsetattr(0, TCSANOW, &term);
 }
 
-/* Disable interpretation of the special control keys in our terminal
- * settings. */
-void disable_signals(void)
-{
-    struct termios term;
-
-    tcgetattr(0, &term);
-    term.c_lflag &= ~ISIG;
-    tcsetattr(0, TCSANOW, &term);
-}
-
 #ifndef NANO_TINY
 /* Enable interpretation of the special control keys in our terminal
  * settings. */
@@ -1302,14 +1291,14 @@ void enable_flow_control(void)
     tcsetattr(0, TCSANOW, &term);
 }
 
-/* Set up the terminal state.  Put the terminal in cbreak mode (read one
- * character at a time and interpret the special control keys), disable
- * translation of carriage return (^M) into newline (^J) so that we can
- * tell the difference between the Enter key and Ctrl-J, and disable
- * echoing of characters as they're typed.  Finally, disable extended
- * input and output processing, disable interpretation of the special
- * control keys, and if we're not in preserve mode, disable
- * interpretation of the flow control characters too. */
+/* Set up the terminal state.  Put the terminal in raw mode (read one
+ * character at a time, disable the special control keys, and disable
+ * the flow control characters), disable translation of carriage return
+ * (^M) into newline (^J) so that we can tell the difference between the
+ * Enter key and Ctrl-J, and disable echoing of characters as they're
+ * typed.  Finally, disable extended input and output processing, and,
+ * if we're not in preserve mode, reenable interpretation of the flow
+ * control characters. */
 void terminal_init(void)
 {
 #ifdef USE_SLANG
@@ -1324,13 +1313,12 @@ void terminal_init(void)
     if (!newterm_set) {
 #endif
 
-       cbreak();
+       raw();
        nonl();
        noecho();
        disable_extended_io();
-       disable_signals();
-       if (!ISSET(PRESERVE))
-           disable_flow_control();
+       if (ISSET(PRESERVE))
+           enable_flow_control();
 
 #ifdef USE_SLANG
        tcgetattr(0, &newterm);
index 0508d377532d8457b60d04e06a0ca06461afa9b8..055e59dc0a39b2a4e2c14c9669173b56ff2c8eb5 100644 (file)
@@ -475,7 +475,6 @@ void allow_pending_sigwinch(bool allow);
 void do_toggle(const toggle *which);
 #endif
 void disable_extended_io(void);
-void disable_signals(void);
 #ifndef NANO_TINY
 void enable_signals(void);
 #endif