/[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.2 by sysadm, Sat Oct 23 18:41:41 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);
53      
54    return retval;    return retval;
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, j;    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      //For debug        len = read (0, buf, 255);
72      //for (j = 0; j < len; j++)  
73      //  log_std ("[%d]\n", buf[j]);        //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 136  igetch () Line 162  igetch ()
162                  case 49:                  case 49:
163                    out = KEY_HOME;                    out = KEY_HOME;
164                    break;                    break;
165                    case 51:
166                      out = KEY_DEL;
167                      break;
168                  case 52:                  case 52:
169                    out = KEY_END;                    out = KEY_END;
170                    break;                    break;
# Line 143  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 151  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