[comp.emacs] How do I set cbreak mode in a shell buffer?

robin@turing.ac.uk (Robin Boswell) (03/01/88)

I have an interactive C-program which reads some of its input from the 
terminal in CBREAK mode.  Is there any way I can run it as an inferior 
shell process inside GNU-EMACS and retain this behaviour? (i.e. I want it
to read characters as they are typed, without the need for a <CRLF>).

   Since CBREAK mode is only appropriate for some of the input
(e.g. as in rn), I need to be able to set the mode from within
the C program, and so a crude solution like binding all alpha-numeric 
keys to "(insert-char ...) (send-shell-input)" wouldn't be
satisfactory.

   I can get at the C-source to modify it, if necessary, as well as 
playing around with EMACS.

   The relevant C code is currently:

      struct sgttyb state;

      fd = open("/dev/tty", O_RDONLY, 0);
      ioctl(fd, TIOCGETP, &state);
      state.sg_flags |= CBREAK;
      ioctl(fd, TIOCSETP, &state);
      ......
      read(fd, &char, 1);
      .....


   Thank you for any suggestions.

                        Robin Boswell.

   (Please send mail from outside the UK to 
   robin%uk.ac.ed.aiva@nss.cs.ucl.ac.uk 
   unless you are authorised to use the UCL gateway, as Turing isn't).