/[LeafOK_CVS]/lbbs/src/io.c
ViewVC logotype

Diff of /lbbs/src/io.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 by sysadm, Fri Oct 22 15:21:28 2004 UTC Revision 1.8 by sysadm, Mon Mar 21 17:08:21 2005 UTC
# Line 19  Line 19 
19  #include "common.h"  #include "common.h"
20  #include <stdio.h>  #include <stdio.h>
21  #include <stdarg.h>  #include <stdarg.h>
22    #include <sys/ioctl.h>
23    
24  int  int
25  outc(char c)  outc (char c)
26  {  {
27    int retval;    int retval;
28    
29    retval = printf("%c",c);    retval = fprintf (stdout, "%c", c);
30    
31    return retval;    return retval;
32  }  }
33    
34  int  int
35  prints(const char * format, ...)  prints (const char *format, ...)
36  {  {
37    va_list args;    va_list args;
38    int retval;    int retval;
# Line 44  prints(const char * format, ...) Line 45  prints(const char * format, ...)
45  }  }
46    
47  int  int
48  iflush()  iflush ()
49  {  {
50    int retval;    int retval;
51      
52    retval = fflush (stdout);    retval = fflush (stdout);
     
   return retval;  
 }  
53    
54  int    return retval;
 Ctrl (char c)  
 {  
   return (c - 'A' + 1);  
55  }  }
56    
57  int  int
58  igetch ()  igetch ()
59  {  {
   char c, tmp[256];  
60    static char buf[256];    static char buf[256];
61    int out = 0, loop = 1, in_esc = 0, in_ascii = 0, i = 0;    unsigned char c, tmp[256];
62    static int len =0 , pos = 0;    int out = KEY_NULL, loop = 1, in_esc = 0, in_ascii = 0, in_control = 0, i =
63        0, j;
64      static int len = 0, pos = 0;
65    
66    if (pos >= len)    if (pos >= len)
67    {      {
68      len = s_receive (socket_client, buf, 255, "");        pos = 0;
69      pos = 0;  
70    }        //len = s_receive (socket_client, buf, 255, "");
71          len = read (0, buf, 255);
72    
73          //For debug
74          //for (j = 0; j < len; j++)
75          //  log_std ("<--[%u]\n", (buf[j] + 256) % 256);
76        }
77    
78    while (pos < len)    while (pos < len)
79      {      {
80        c = buf[pos++];        c = buf[pos++];
81    
82        if (c == '\0')        if (c == '\0')
83        {          {
84          out = c;            out = c;
85          break;            break;
86        }          }
87    
88          if (c == KEY_CONTROL)
89            {
90              if (in_control == 0)
91                {
92                  in_control = 1;
93                  i = 0;
94                  continue;
95                }
96            }
97    
98          if (in_control)
99            {
100              tmp[i++] = c;
101              if (i >= 2)
102                {
103                  out = (int) tmp[0] * 256 + tmp[1];
104                  in_control = 0;
105                  break;
106                }
107              continue;
108            }
109    
110        if (c == ESC_KEY)        if (c == ESC_KEY)
111          {          {
# Line 122  igetch () Line 146  igetch ()
146                    out = KEY_DOWN;                    out = KEY_DOWN;
147                    break;                    break;
148                  case 'C':                  case 'C':
149                    out = KEY_LEFT;                    out = KEY_RIGHT;
150                    break;                    break;
151                  case 'D':                  case 'D':
152                    out = KEY_RIGHT;                    out = KEY_LEFT;
153                      break;
154                    }
155                  break;
156                }
157              if (i == 3 && tmp[0] == 91 && tmp[2] == 126)
158                {
159                  in_ascii = 0;
160                  switch (tmp[1])
161                    {
162                    case 49:
163                      out = KEY_HOME;
164                      break;
165                    case 51:
166                      out = KEY_DEL;
167                      break;
168                    case 52:
169                      out = KEY_END;
170                      break;
171                    case 53:
172                      out = KEY_PGUP;
173                      break;
174                    case 54:
175                      out = KEY_PGDN;
176                    break;                    break;
177                  }                  }
178                break;                break;
# Line 133  igetch () Line 180  igetch ()
180            continue;            continue;
181          }          }
182    
183        out = ((int)c + 256) % 256;        out = ((int) c + 256) % 256;
184        break;        break;
185      }      }
186    
187    //for debug    //for debug
188    //log_std ("[%d]\n", out);    //log_std ("-->[%u]\n", out);
189    
190    return out;    return out;
191  }  }
192    
193    int
194    ikbhit ()
195    {
196      int len;
197    
198      ioctl (0, FIONREAD, &len);
199    
200      return len;
201    }


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1