home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1630 / gstty.c next >
Encoding:
C/C++ Source or Header  |  1990-12-28  |  1.0 KB  |  62 lines

  1. /* gstty.c -- get and set terminal parameters
  2.  
  3.    Author: Craig Bishop
  4.    modified by David MacKenzie
  5.    loosly based on original program by Michael Cooper. */
  6.  
  7. #include    <sys/ioctl.h>
  8.  
  9. #ifdef    SYSV
  10. #include    <termio.h>
  11.  
  12. static struct termio old_mode;
  13. static struct termio new_mode;
  14.  
  15. /* Put terminal in raw mode. */
  16.  
  17. void
  18. setterm ()
  19. {
  20.   ioctl (0, TCGETA, &old_mode);
  21.   new_mode = old_mode;
  22.   new_mode.c_lflag &= ~ICANON;
  23.   new_mode.c_lflag &= ~ECHO;
  24.   new_mode.c_cc[VMIN] = 1;
  25.   new_mode.c_cc[VTIME] = 0;
  26.   ioctl (0, TCSETAF, &new_mode);
  27. }
  28.  
  29. /* Put terminal back in previous mode. */
  30.  
  31. void
  32. fixterm ()
  33. {
  34.   ioctl (0, TCSETAF, &old_mode);
  35. }
  36.  
  37. #else
  38. static struct sgttyb old_mode;
  39. static struct sgttyb new_mode;
  40.  
  41. /* Put terminal in raw mode. */
  42.  
  43. void
  44. setterm ()
  45. {
  46.   ioctl (0, TIOCGETP, &old_mode);
  47.   new_mode = old_mode;
  48.   new_mode.sg_flags |= CBREAK;
  49.   new_mode.sg_flags &= ~ECHO;
  50.   ioctl (0, TIOCSETP, &new_mode);
  51. }
  52.  
  53. /* Put terminal back in previous mode. */
  54.  
  55. void
  56. fixterm ()
  57. {
  58.   ioctl (0, TIOCSETP, &old_mode);
  59. }
  60.  
  61. #endif /* SYSV */
  62.