/[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.4 by sysadm, Wed Mar 2 16:33:49 2005 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 = fprintf(stdout, "%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);
53      
54    return retval;    return retval;
55  }  }
56    
# Line 58  igetch () Line 59  igetch ()
59  {  {
60    static char buf[256];    static char buf[256];
61    unsigned char c, tmp[256];    unsigned char c, tmp[256];
62    int out = 0, loop = 1, in_esc = 0, in_ascii = 0, in_control = 0, i = 0, j;    int out = KEY_NULL, loop = 1, in_esc = 0, in_ascii = 0, in_control = 0, i =
63    static int len = 0 , pos = 0;      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      //For debug        len = read (0, buf, 255);
72      for (j = 0; j < len; j++)  
73        log_std ("<--[%u]\n", (buf[j] + 256) % 256);        //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)        if (c == KEY_CONTROL)
89          {          {
90            if (in_control == 0)            if (in_control == 0)
91              {              {
92                in_control = 1;                in_control = 1;
93                i = 0;                i = 0;
94                continue;                continue;
95              }              }
96          }          }
97          
98        if (in_control)        if (in_control)
99        {          {
100          tmp[i++] = c;            tmp[i++] = c;
101          if (i >= 2)            if (i >= 2)
102          {              {
103            out = (int)tmp[0] * 256 + tmp[1];                out = (int) tmp[0] * 256 + tmp[1];
104            in_control = 0;                in_control = 0;
105            break;                break;
106          }              }
107          continue;            continue;
108        }          }
109    
110        if (c == ESC_KEY)        if (c == ESC_KEY)
111          {          {
# Line 168  igetch () Line 172  igetch ()
172                    out = KEY_PGUP;                    out = KEY_PGUP;
173                    break;                    break;
174                  case 54:                  case 54:
175                    out = KEY_PGDOWN;                    out = KEY_PGDN;
176                    break;                    break;
177                  }                  }
178                break;                break;
# Line 176  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 ("-->[%u]\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