home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume24 / mkid2 / part01 / tty.c < prev    next >
C/C++ Source or Header  |  1991-10-09  |  1KB  |  83 lines

  1. #ifdef TERMIO
  2. #include    <sys/termio.h>
  3.  
  4. struct termio linemode, charmode, savemode;
  5.  
  6. savetty()
  7. {
  8.     ioctl(0, TCGETA, &savemode);
  9.     charmode = linemode = savemode;
  10.  
  11.     charmode.c_lflag &= ~(ECHO|ICANON|ISIG);
  12.     charmode.c_cc[VMIN] = 1;
  13.     charmode.c_cc[VTIME] = 0;
  14.  
  15.     linemode.c_lflag |= (ECHO|ICANON|ISIG);
  16.     linemode.c_cc[VEOF] = 'd'&037;
  17.     linemode.c_cc[VEOL] = 0377;
  18. }
  19.  
  20. restoretty()
  21. {
  22.     ioctl(0, TCSETA, &savemode);
  23. }
  24.  
  25. linetty()
  26. {
  27.     ioctl(0, TCSETA, &linemode);
  28. }
  29.  
  30. chartty()
  31. {
  32.     ioctl(0, TCSETA, &charmode);
  33. }
  34.  
  35. #else
  36. #include    <sgtty.h>
  37.  
  38. struct sgttyb linemode, charmode, savemode;
  39.  
  40. savetty()
  41. {
  42. #ifdef TIOCGETP
  43.     ioctl(0, TIOCGETP, &savemode);
  44. #else
  45.     gtty(0, &savemode);
  46. #endif
  47.     charmode = linemode = savemode;
  48.  
  49.     charmode.sg_flags &= ~ECHO;
  50.     charmode.sg_flags |= RAW;
  51.  
  52.     linemode.sg_flags |= ECHO;
  53.     linemode.sg_flags &= ~RAW;
  54. }
  55.  
  56. restoretty()
  57. {
  58. #ifdef TIOCSETP
  59.     ioctl(0, TIOCSETP, &savemode);
  60. #else
  61.     stty(0, &savemode);
  62. #endif
  63. }
  64.  
  65. linetty()
  66. {
  67. #ifdef TIOCSETP
  68.     ioctl(0, TIOCSETP, &linemode);
  69. #else
  70.     stty(0, &savemode);
  71. #endif
  72. }
  73.  
  74. chartty()
  75. {
  76. #ifdef TIOCSETP
  77.     ioctl(0, TIOCSETP, &charmode);
  78. #else
  79.     stty(0, &savemode);
  80. #endif
  81. }
  82. #endif
  83.