Punt the tty-get/set-interrupt-chars primitives.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Tue, 2 Aug 2011 19:51:33 +0000 (12:51 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Tue, 2 Aug 2011 19:51:33 +0000 (12:51 -0700)
Gtkio's signal forwarder breaks the assumptions in en/decode_interrupt
_handler.  Rather than fix them, I punt the TTY-GET-INTERRUPT-CHARS
and TTY-SET-INTERRUPTS-CHARS! primitives.  They were not used in The
Tree, not even by Edwin.

src/microcode/ntsig.c
src/microcode/os2ctty.c
src/microcode/osctty.h
src/microcode/prostty.c
src/microcode/uxctty.c
src/microcode/uxsig.c

index 464ecf6c5ee66f3a5d545b06de11ad7422eb8f00..e36eec1c88856073a92f8c7b772dd3937dbed555 100644 (file)
@@ -190,46 +190,6 @@ update_interrupt_characters (void)
   }
   return;
 }
-\f
-unsigned int
-OS_ctty_num_int_chars (void)
-{
-  return (NUM_INT_CHANNELS);
-}
-
-cc_t *
-OS_ctty_get_int_chars (void)
-{
-  return (&int_chars[0]);
-}
-
-void
-OS_ctty_set_int_chars (cc_t * new_int_chars)
-{
-  int i;
-
-  for (i = 0; i < NUM_INT_CHANNELS; i++)
-    int_chars[i] = new_int_chars[i];
-  update_interrupt_characters ();
-  return;
-}
-
-cc_t *
-OS_ctty_get_int_char_handlers (void)
-{
-  return (&int_handlers[0]);
-}
-
-void
-OS_ctty_set_int_char_handlers (cc_t * new_int_handlers)
-{
-  int i;
-
-  for (i = 0; i < NUM_INT_CHANNELS; i++)
-    int_handlers[i] = new_int_handlers[i];
-  update_interrupt_characters ();
-  return;
-}
 
 static void
 console_write_string (unsigned char * string)
index aad5a191e8cbc46750f601a2c9c0bcedaaa08ad7..3f508e12d001d4431a423e82d3f4fa8c0b3a0108 100644 (file)
@@ -94,59 +94,11 @@ OS_ctty_set_interrupt_enables (Tinterrupt_enables * mask)
   keyboard_interrupt_enables = ((*mask) & ALL_ENABLES);
 }
 
-unsigned int
-OS_ctty_num_int_chars (void)
-{
-  return (KB_INT_CHARS_SIZE + 1);
-}
-
 cc_t
 OS_tty_map_interrupt_char (cc_t int_char)
 {
   return (int_char);
 }
-
-cc_t *
-OS_ctty_get_int_chars (void)
-{
-  static cc_t characters [KB_INT_CHARS_SIZE + 1];
-  unsigned int i;
-  for (i = 0; (i < KB_INT_CHARS_SIZE); i += 1)
-    (characters[i]) = (keyboard_interrupt_characters[i]);
-  (characters[i]) = '\0';      /* dummy for control-break */
-  return (characters);
-}
-
-void
-OS_ctty_set_int_chars (cc_t * characters)
-{
-  unsigned int i;
-  for (i = 0; (i < KB_INT_CHARS_SIZE); i += 1)
-    (keyboard_interrupt_characters[i]) = (characters[i]);
-  update_keyboard_interrupt_characters ();
-}
-
-cc_t *
-OS_ctty_get_int_char_handlers (void)
-{
-  static cc_t handlers [KB_INT_CHARS_SIZE + 1];
-  unsigned int i;
-  for (i = 0; (i < KB_INT_CHARS_SIZE); i += 1)
-    (handlers[i]) = ((cc_t) (keyboard_interrupt_handlers[i]));
-  (handlers[i]) = ((cc_t) keyboard_break_interrupt);
-  return (handlers);
-}
-
-void
-OS_ctty_set_int_char_handlers (cc_t * handlers)
-{
-  unsigned int i;
-  for (i = 0; (i < KB_INT_CHARS_SIZE); i += 1)
-    (keyboard_interrupt_handlers[i]) =
-      ((enum interrupt_handler) (handlers[i]));
-  keyboard_break_interrupt = ((enum interrupt_handler) (handlers[i]));
-  update_keyboard_interrupt_characters ();
-}
 \f
 static char
 check_if_enabled (enum interrupt_handler handler)
index 4cc92a65d60c765a605ded6e44f18ccd10a2185b..f312134a89cec396ce5cebfc1e344add291cb7f7 100644 (file)
@@ -37,10 +37,4 @@ typedef unsigned int Tinterrupt_enables;
 extern void OS_ctty_get_interrupt_enables (Tinterrupt_enables * mask);
 extern void OS_ctty_set_interrupt_enables (Tinterrupt_enables * mask);
 
-extern unsigned int OS_ctty_num_int_chars (void);
-extern cc_t * OS_ctty_get_int_chars (void);
-extern cc_t * OS_ctty_get_int_char_handlers (void);
-extern void OS_ctty_set_int_chars (cc_t *);
-extern void OS_ctty_set_int_char_handlers (cc_t *);
-
 #endif /* SCM_OSCTTY_H */
index e0948a6821f485e2b25e84592139b3d9af1c203a..331c4143ee587d6e4b08156399e1469997d534d7 100644 (file)
@@ -104,53 +104,3 @@ DEFINE_PRIMITIVE ("TTY-SET-INTERRUPT-ENABLES", Prim_tty_set_interrupt_enables, 1
   }
   PRIMITIVE_RETURN (UNSPECIFIC);
 }
-
-DEFINE_PRIMITIVE ("TTY-GET-INTERRUPT-CHARS", Prim_tty_get_interrupt_chars, 0, 0,
-  "Return the current interrupt characters as a string.")
-{
-  PRIMITIVE_HEADER (0);
-  {
-    unsigned int i;
-    unsigned int num_chars = (OS_ctty_num_int_chars ());
-    SCHEME_OBJECT result = (allocate_string (num_chars * 2));
-    cc_t * int_chars = (OS_ctty_get_int_chars ());
-    cc_t * int_handlers = (OS_ctty_get_int_char_handlers ());
-    char * scan = (STRING_POINTER (result));
-
-    for (i = 0; i < num_chars; i++)
-    {
-      (*scan++) = (int_chars[i]);
-      (*scan++) = (int_handlers[i]);
-    }
-    PRIMITIVE_RETURN (result);
-  }
-}
-
-DEFINE_PRIMITIVE ("TTY-SET-INTERRUPT-CHARS!", Prim_tty_set_interrupt_chars, 1, 1,
-  "Change the current interrupt characters to STRING.\n\
-STRING must be in the correct form for this operating system.")
-{
-  PRIMITIVE_HEADER (1);
-  {
-    unsigned int i;
-    unsigned int num_chars = (OS_ctty_num_int_chars ());
-    cc_t * int_chars = (OS_ctty_get_int_chars ());
-    cc_t * int_handlers = (OS_ctty_get_int_char_handlers ());
-    SCHEME_OBJECT argument = (ARG_REF (1));
-    char * scan;
-
-    if (! ((STRING_P (argument))
-          && (((unsigned int) (STRING_LENGTH (argument)))
-              == (num_chars * 2))))
-      error_wrong_type_arg (1);
-
-    for (i = 0, scan = (STRING_POINTER (argument)); i < num_chars; i++)
-      {
-       (int_chars[i]) = (*scan++);
-       (int_handlers[i]) = (*scan++);
-      }
-    OS_ctty_set_int_chars (int_chars);
-    OS_ctty_set_int_char_handlers (int_handlers);
-  }
-  PRIMITIVE_RETURN (UNSPECIFIC);
-}
index 90a075e0f8853b31d725dde8c9976c599a8c29b3..563cdd4bff183f2614b811dea844b25d1c869268 100644 (file)
@@ -242,7 +242,6 @@ OS_ctty_interrupt_control (void)
 {
   return (outside_ctty_state . recorded_p);
 }
-
 int
 UX_terminal_control_ok (int fd)
 {
@@ -306,75 +305,6 @@ OS_ctty_fd (void)
   return (ctty_fildes);
 }
 \f
-#if 0
-
-/* not currently used */
-static void
-ctty_get_interrupt_chars (Tinterrupt_chars * ic)
-{
-  Ttty_state s;
-  if ((get_terminal_state (ctty_fildes, (&s))) == 0)
-    {
-#ifdef HAVE_TERMIOS_H
-      (ic -> quit) = ((s . tio . c_cc) [VQUIT]);
-      (ic -> intrpt) = ((s . tio . c_cc) [VINTR]);
-      (ic -> tstp) = ((s . tio . c_cc) [VSUSP]);
-
-#ifdef VDSUSP
-      (ic -> dtstp) = ((s . tio . c_cc) [VDSUSP]);
-#else /* not VDSUSP */
-#ifdef __HPUX__
-      (ic -> dtstp) = (s . ltc . t_dsuspc);
-#endif /* __HPUX__ */
-#endif /* not VDSUSP */
-
-#else /* not HAVE_TERMIOS_H */
-#ifdef HAVE_TERMIO_H
-
-      (ic -> quit) = ((s . tio . c_cc) [VQUIT]);
-      (ic -> intrpt) = ((s . tio . c_cc) [VINTR]);
-#ifdef HAVE_STRUCT_LTCHARS
-      (ic -> tstp) = (s . ltc . t_suspc);
-      (ic -> dtstp) = (s . ltc . t_dsuspc);
-#else /* not HAVE_STRUCT_LTCHARS */
-      {
-       cc_t disabled_char = (UX_PC_VDISABLE (ctty_fildes));
-       (ic -> tstp) = disabled_char;
-       (ic -> dtstp) = disabled_char;
-      }
-#endif /* not HAVE_STRUCT_LTCHARS */
-
-#else /* not HAVE_TERMIO_H */
-#ifdef HAVE_SGTTY_H
-
-      (ic -> quit) = (s . tc . t_quitc);
-      (ic -> intrpt) = (s . tc . t_intrc);
-#ifdef HAVE_STRUCT_LTCHARS
-      (ic -> tstp) = (s . ltc . t_suspc);
-      (ic -> dtstp) = (s . ltc . t_dsuspc);
-#else /* not HAVE_STRUCT_LTCHARS */
-      {
-       cc_t disabled_char = (UX_PC_VDISABLE (ctty_fildes));
-       (ic -> tstp) = disabled_char;
-       (ic -> dtstp) = disabled_char;
-      }
-#endif /* not HAVE_STRUCT_LTCHARS */
-
-#endif /* HAVE_SGTTY_H */
-#endif /* HAVE_TERMIO_H */
-#endif /* HAVE_TERMIOS_H */
-    }
-  else
-    {
-      cc_t disabled_char = (UX_PC_VDISABLE (ctty_fildes));
-      (ic -> quit) = disabled_char;
-      (ic -> intrpt) = disabled_char;
-      (ic -> tstp) = disabled_char;
-      (ic -> dtstp) = disabled_char;
-    }
-}
-#endif /* 0 */
-\f
 static void
 ctty_set_interrupt_chars (Tinterrupt_chars * ic)
 {
@@ -454,77 +384,7 @@ OS_ctty_set_interrupt_enables (Tinterrupt_enables * mask)
   current_interrupt_enables = (*mask);
   ctty_update_interrupt_chars ();
 }
-
-#if 0
-
-void
-OS_ctty_set_interrupt_chars (cc_t quit_char,
-       cc_t int_char,
-       cc_t tstp_char)
-{
-  (current_interrupt_chars . quit) = quit_char;
-  (current_interrupt_chars . intrpt) = int_char;
-  (current_interrupt_chars . tstp) = tstp_char;
-  ctty_update_interrupt_chars ();
-}
-#endif
-
-unsigned int
-OS_ctty_num_int_chars (void)
-{
-  return (3);
-}
-
-cc_t *
-OS_ctty_get_int_chars (void)
-{
-  static cc_t int_chars [3];
-
-  int_chars[0] = current_interrupt_chars.quit;
-  int_chars[1] = current_interrupt_chars.intrpt;
-  int_chars[2] = current_interrupt_chars.tstp;
-  return (& int_chars [0]);
-}
-
-void
-OS_ctty_set_int_chars (cc_t * int_chars)
-{
-  current_interrupt_chars.quit   = int_chars[0];
-  current_interrupt_chars.intrpt = int_chars[1];
-  current_interrupt_chars.tstp   = int_chars[2];
-  ctty_update_interrupt_chars ();
-  return;
-}
 \f
-extern enum interrupt_handler OS_signal_quit_handler (void);
-extern enum interrupt_handler OS_signal_int_handler (void);
-extern enum interrupt_handler OS_signal_tstp_handler (void);
-extern void OS_signal_set_interrupt_handlers
-  (enum interrupt_handler quit_handler,
-    enum interrupt_handler int_handler,
-    enum interrupt_handler tstp_handler);
-
-cc_t *
-OS_ctty_get_int_char_handlers (void)
-{
-  static cc_t int_handlers [3];
-
-  int_handlers[0] = ((cc_t) (OS_signal_quit_handler ()));
-  int_handlers[1] = ((cc_t) (OS_signal_int_handler ()));
-  int_handlers[2] = ((cc_t) (OS_signal_tstp_handler ()));
-  return (& int_handlers [0]);
-}
-
-void
-OS_ctty_set_int_char_handlers (cc_t * int_handlers)
-{
-  OS_signal_set_interrupt_handlers
-    (((enum interrupt_handler) (int_handlers [0])),
-     ((enum interrupt_handler) (int_handlers [1])),
-     ((enum interrupt_handler) (int_handlers [2])));
-  return;
-}
-
 void
 UX_initialize_ctty (int interactive)
 {
index 959f7458c2a018addf6e2d0d87870d686b402b0d..3a31f87620b309f7ac4987e8d5fb65e60efb5252 100644 (file)
@@ -879,135 +879,6 @@ interactive_interrupt_handler (SIGCONTEXT_T * scp)
     }
 }
 \f
-static enum interrupt_handler
-encode_interrupt_handler (Tsignal_handler handler)
-{
-  return
-    ((handler == ((Tsignal_handler) sighnd_control_g))
-     ? interrupt_handler_control_g
-     : (handler == ((Tsignal_handler) sighnd_interactive))
-     ? interrupt_handler_interactive
-     : (handler == ((Tsignal_handler) sighnd_stop))
-     ? interrupt_handler_stop
-     : (handler == ((Tsignal_handler) sighnd_terminate))
-     ? interrupt_handler_terminate
-     : (handler == ((Tsignal_handler) SIG_IGN))
-     ? interrupt_handler_ignore
-     : (handler == ((Tsignal_handler) SIG_DFL))
-     ? interrupt_handler_default
-     : interrupt_handler_unknown);
-}
-
-static Tsignal_handler
-decode_interrupt_handler (enum interrupt_handler encoding)
-{
-  return
-    ((encoding == interrupt_handler_control_g)
-     ? ((Tsignal_handler) sighnd_control_g)
-     : (encoding == interrupt_handler_interactive)
-     ? ((Tsignal_handler) sighnd_interactive)
-     : (encoding == interrupt_handler_stop)
-     ? ((Tsignal_handler) sighnd_stop)
-     : (encoding == interrupt_handler_terminate)
-     ? ((Tsignal_handler) sighnd_terminate)
-     : (encoding == interrupt_handler_ignore)
-     ? ((Tsignal_handler) SIG_IGN)
-     : (encoding == interrupt_handler_default)
-     ? ((Tsignal_handler) SIG_DFL)
-     : ((Tsignal_handler) 0));
-}
-
-enum interrupt_handler
-OS_signal_quit_handler (void)
-{
-  return (encode_interrupt_handler (current_handler (SIGQUIT)));
-}
-
-enum interrupt_handler
-OS_signal_int_handler (void)
-{
-  return (encode_interrupt_handler (current_handler (SIGINT)));
-}
-
-enum interrupt_handler
-OS_signal_tstp_handler (void)
-{
-  return
-    ((UX_SC_JOB_CONTROL ())
-     ? (encode_interrupt_handler (current_handler (SIGTSTP)))
-     : interrupt_handler_ignore);
-}
-
-void
-OS_signal_set_interrupt_handlers (enum interrupt_handler quit_handler,
-                                 enum interrupt_handler int_handler,
-                                 enum interrupt_handler tstp_handler)
-{
-  {
-    Tsignal_handler handler = (decode_interrupt_handler (quit_handler));
-    if (handler != 0)
-      INSTALL_HANDLER (SIGQUIT, handler);
-  }
-  {
-    Tsignal_handler handler = (decode_interrupt_handler (int_handler));
-    if (handler != 0)
-      INSTALL_HANDLER (SIGINT, handler);
-  }
-  if (UX_SC_JOB_CONTROL ())
-    {
-      Tsignal_handler handler = (decode_interrupt_handler (tstp_handler));
-      if (handler != 0)
-       INSTALL_HANDLER (SIGTSTP, handler);
-    }
-}
-\f
-static void
-describe_sighnd (int signo, unsigned char c)
-{
-  switch (encode_interrupt_handler (current_handler (signo)))
-    {
-    case interrupt_handler_control_g:
-      fputs ("When typed, scheme will get the ^G character interrupt.\n",
-            stdout);
-      fputs ("The default action is to abort the running program,\n", stdout);
-      fputs ("and to resume the top level read-eval-print loop.\n", stdout);
-      break;
-    case interrupt_handler_interactive:
-      fputs ("When typed, various interrupt options are offered.\n", stdout);
-      fprintf (stdout, "Type %s followed by `?' for a list of options.\n",
-              (char_description (c, 0)));
-      break;
-    case interrupt_handler_terminate:
-    describe_terminate:
-      fputs ("When typed, scheme will terminate.\n", stdout);
-      break;
-    case interrupt_handler_stop:
-    describe_stop:
-      fputs ("When typed, scheme will suspend execution.\n", stdout);
-      break;
-    case interrupt_handler_ignore:
-    describe_ignore:
-      fputs ("When typed, this character will be ignored.\n", stdout);
-      break;
-    case interrupt_handler_default:
-      {
-       struct signal_descriptor * descriptor =
-         (find_signal_descriptor (signo));
-       if (descriptor != 0)
-         switch (descriptor -> action)
-           {
-           case dfl_ignore: goto describe_ignore;
-           case dfl_stop: goto describe_stop;
-           case dfl_terminate: goto describe_terminate;
-           }
-      }
-    default:
-      fputs ("When typed, this character will have an unknown effect.\n",
-            stdout);
-      break;
-    }
-}
-\f
 static void
 print_interrupt_chars (void)
 {
@@ -1015,20 +886,24 @@ print_interrupt_chars (void)
     unsigned char quit_char = (OS_ctty_quit_char ());
     fprintf (stdout, "\n\nThe quit character is %s.\n",
             (char_description (quit_char, 1)));
-    describe_sighnd (SIGQUIT, quit_char);
+    fputs ("When typed, various interrupt options are offered.\n", stdout);
+    fprintf (stdout, "Type %s followed by `?' for a list of options.\n",
+              (char_description (quit_char, 0)));
   }
   {
     unsigned char int_char = (OS_ctty_int_char ());
     fprintf (stdout, "\nThe interrupt character is %s.\n",
             (char_description (int_char, 1)));
-    describe_sighnd (SIGINT, int_char);
+    fputs ("When typed, scheme will get the ^G character interrupt.\n", stdout);
+    fputs ("The default action is to abort the running program,\n", stdout);
+    fputs ("and to resume the top level read-eval-print loop.\n", stdout);
   }
   if (UX_SC_JOB_CONTROL ())
     {
       unsigned char tstp_char = (OS_ctty_tstp_char ());
       fprintf (stdout, "\nThe terminal stop character is %s.\n",
               (char_description (tstp_char, 1)));
-      describe_sighnd (SIGTSTP, tstp_char);
+      fputs ("When typed, scheme will suspend execution.\n", stdout);
     }
   putc ('\n', stdout);
   fflush (stdout);