home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / Aminet / dev / c / mkid.lha / src / tty.c < prev    next >
C/C++ Source or Header  |  1995-09-17  |  2KB  |  157 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 long raw(FILE *),cooked(FILE *);
  43.  
  44. static char savestate,state = 0,exitready = 0;
  45.  
  46. static void
  47. cleanupfunc(void)
  48. {
  49.     if(state)
  50.     {
  51.         cooked(stdin);
  52.  
  53.         state = 0;
  54.     }
  55. }
  56.  
  57. void
  58. restoretty()
  59. {
  60.     if (state != savestate)
  61.     {
  62.         if (savestate)
  63.         {
  64.             if(!exitready)
  65.             {
  66.                 exitready = 1;
  67.  
  68.                 atexit(cleanupfunc);
  69.             }
  70.  
  71.             raw(stdin);
  72.         }
  73.         else
  74.             cooked(stdin);
  75.     }
  76. }
  77.  
  78. void
  79. savetty()
  80. {
  81.     savestate = state;
  82. }
  83.  
  84. void
  85. chartty()
  86. {
  87.     if(!raw(stdin))
  88.     {
  89.         state = 1;
  90.  
  91.         if(!exitready)
  92.         {
  93.             exitready = 1;
  94.  
  95.             atexit(cleanupfunc);
  96.         }
  97.     }
  98. }
  99.  
  100. void
  101. linetty()
  102. {
  103.     if(!cooked(stdin))
  104.         state = 0;
  105. }
  106. /* aztec has sgtty */
  107. #else
  108.  
  109. #include    <sgtty.h>
  110.  
  111. struct sgttyb linemode, charmode, savemode;
  112.  
  113. savetty()
  114. {
  115. #ifdef TIOCGETP
  116.     ioctl(0, TIOCGETP, &savemode);
  117. #else
  118.     gtty(0, &savemode);
  119. #endif
  120.     charmode = linemode = savemode;
  121.  
  122.     charmode.sg_flags &= ~ECHO;
  123.     charmode.sg_flags |= RAW;
  124.  
  125.     linemode.sg_flags |= ECHO;
  126.     linemode.sg_flags &= ~RAW;
  127. }
  128.  
  129. restoretty()
  130. {
  131. #ifdef TIOCSETP
  132.     ioctl(0, TIOCSETP, &savemode);
  133. #else
  134.     stty(0, &savemode);
  135. #endif
  136. }
  137.  
  138. linetty()
  139. {
  140. #ifdef TIOCSETP
  141.     ioctl(0, TIOCSETP, &linemode);
  142. #else
  143.     stty(0, &savemode);
  144. #endif
  145. }
  146.  
  147. chartty()
  148. {
  149. #ifdef TIOCSETP
  150.     ioctl(0, TIOCSETP, &charmode);
  151. #else
  152.     stty(0, &savemode);
  153. #endif
  154. }
  155. #endif LATTICE
  156. #endif
  157.