home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l200 / 6.ddi / LIB / INKEY.C < prev    next >
Encoding:
C/C++ Source or Header  |  1986-09-15  |  789 b   |  44 lines

  1. /* INKEY_ -- read a character from terminal (if available) with no echo
  2.  
  3.     Copyright (c) 1984 by JMI Software Consultants, Inc.
  4. */
  5. #include "bio.h"
  6.  
  7. TEXT *INKEY_(ss)
  8.     FAST TEXT **ss;
  9.     {
  10.     IMPORT BF **bfiles;
  11.     IMPORT INT rr_inkey, strlpfx;
  12.     IMPORT COUNT brd_slot;
  13.     EXFUNC TEXT *s_new();
  14.     TEXT c;
  15.     COUNT x, n;
  16.     BF *bf;
  17.  
  18.     bf = bfiles[sf_IN];
  19.     if (--bf->bf_count < 0)
  20.         {
  21.         bf->bf_count = 0;
  22.         x = rawread(sf_IN, &c, 1, rr_inkey);
  23.         if (x > 0)
  24.             {
  25.             n = ((int)c) ? 1 : 2;
  26.             *ss = s_new(*ss, n);
  27.             *(*ss + strlpfx) = c;
  28.             if (n == 2)
  29.                 {
  30.                 rawread(sf_IN, &c, 1, rr_inkey);
  31.                 *(*ss + strlpfx + 1) = c;
  32.                 }
  33.             }
  34.         else
  35.             *ss = s_new(*ss, 0);
  36.         }
  37.     else
  38.         {
  39.         *ss = s_new(*ss, 1);
  40.         *(*ss + strlpfx) = *bf->bf_bufptr++;
  41.         }
  42.     return (*ss);
  43.     }
  44.