/[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.5 by sysadm, Thu Mar 17 10:48:46 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  }  }
# Line 54  iflush() Line 55  iflush()
55  }  }
56    
57  int  int
 Ctrl (char c)  
 {  
   return (c - 'A' + 1);  
 }  
   
 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 = 0, loop = 1, in_esc = 0, in_ascii = 0, in_control = 0, i = 0, j;
63      static int len = 0 , pos = 0;
64    
65    if (pos >= len)    if (pos >= len)
66    {    {
     len = s_receive (socket_client, buf, 255, "");  
67      pos = 0;      pos = 0;
68    
69        //len = s_receive (socket_client, buf, 255, "");
70        len = read (0, buf, 255);
71    
72        //For debug
73        //for (j = 0; j < len; j++)
74        //  log_std ("<--[%u]\n", (buf[j] + 256) % 256);
75    }    }
76    
77    while (pos < len)    while (pos < len)
# Line 83  igetch () Line 84  igetch ()
84          break;          break;
85        }        }
86    
87          if (c == KEY_CONTROL)
88            {
89              if (in_control == 0)
90                {
91                  in_control = 1;
92                  i = 0;
93                  continue;
94                }
95            }
96          
97          if (in_control)
98          {
99            tmp[i++] = c;
100            if (i >= 2)
101            {
102              out = (int)tmp[0] * 256 + tmp[1];
103              in_control = 0;
104              break;
105            }
106            continue;
107          }
108    
109        if (c == ESC_KEY)        if (c == ESC_KEY)
110          {          {
111            if (in_esc == 0)            if (in_esc == 0)
# Line 122  igetch () Line 145  igetch ()
145                    out = KEY_DOWN;                    out = KEY_DOWN;
146                    break;                    break;
147                  case 'C':                  case 'C':
148                    out = KEY_LEFT;                    out = KEY_RIGHT;
149                    break;                    break;
150                  case 'D':                  case 'D':
151                    out = KEY_RIGHT;                    out = KEY_LEFT;
152                      break;
153                    }
154                  break;
155                }
156              if (i == 3 && tmp[0] == 91 && tmp[2] == 126)
157                {
158                  in_ascii = 0;
159                  switch (tmp[1])
160                    {
161                    case 49:
162                      out = KEY_HOME;
163                      break;
164                    case 51:
165                      out = KEY_DEL;
166                      break;
167                    case 52:
168                      out = KEY_END;
169                      break;
170                    case 53:
171                      out = KEY_PGUP;
172                      break;
173                    case 54:
174                      out = KEY_PGDOWN;
175                    break;                    break;
176                  }                  }
177                break;                break;
# Line 138  igetch () Line 184  igetch ()
184      }      }
185    
186    //for debug    //for debug
187    //log_std ("[%d]\n", out);    //log_std ("-->[%u]\n", out);
188    
189    return out;    return out;
190  }  }
191    
192    int
193    ikbhit()
194    {
195      int len;
196      
197      ioctl (0, FIONREAD, &len);
198      
199      return len;
200    }


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

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