home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / fish / programming / mkid / src / tty.c < prev    next >
C/C++ Source or Header  |  1991-02-01  |  2KB  |  126 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. #ifdef LATTICE
  37. /* send raw mode packet for raw mode - LATTICE is defined in dos.h */
  38. /* see raw.c by cmcmanis */
  39.  
  40. #include <stdio.h>
  41.  
  42. extern void raw(FILE *),cooked(FILE *);
  43.  
  44. static char savestate,state = 0;    
  45.  
  46. void
  47. savetty()
  48. {
  49.     savestate = state;
  50. }
  51.  
  52. void
  53. chartty()
  54. {
  55.     state = 1;
  56.     raw(stdin);
  57. }
  58.  
  59. void
  60. linetty()
  61. {
  62.     state = 0;
  63.     cooked(stdin);
  64. }
  65.  
  66. void
  67. restoretty()
  68. {
  69.     if (state != savestate)
  70.         if (savestate)
  71.             raw(stdin);
  72.         else
  73.             cooked(stdin);
  74. }
  75. /* aztec has sgtty */
  76. #else
  77.  
  78. #include    <sgtty.h>
  79.  
  80. struct sgttyb linemode, charmode, savemode;
  81.  
  82. savetty()
  83. {
  84. #ifdef TIOCGETP
  85.     ioctl(0, TIOCGETP, &savemode);
  86. #else
  87.     gtty(0, &savemode);
  88. #endif
  89.     charmode = linemode = savemode;
  90.  
  91.     charmode.sg_flags &= ~ECHO;
  92.     charmode.sg_flags |= RAW;
  93.  
  94.     linemode.sg_flags |= ECHO;
  95.     linemode.sg_flags &= ~RAW;
  96. }
  97.  
  98. restoretty()
  99. {
  100. #ifdef TIOCSETP
  101.     ioctl(0, TIOCSETP, &savemode);
  102. #else
  103.     stty(0, &savemode);
  104. #endif
  105. }
  106.  
  107. linetty()
  108. {
  109. #ifdef TIOCSETP
  110.     ioctl(0, TIOCSETP, &linemode);
  111. #else
  112.     stty(0, &savemode);
  113. #endif
  114. }
  115.  
  116. chartty()
  117. {
  118. #ifdef TIOCSETP
  119.     ioctl(0, TIOCSETP, &charmode);
  120. #else
  121.     stty(0, &savemode);
  122. #endif
  123. }
  124. #endif LATTICE
  125. #endif
  126.